From 8276452ebe8d89a748b6b267afc94161650ab620 Mon Sep 17 00:00:00 2001 From: Jaap Frolich Date: Fri, 25 Mar 2022 13:40:35 +0100 Subject: [PATCH] Convert to OCaml (#274) --- .gitattributes | 4 +- .github/workflows/pipeline.yml | 28 +- .ocamlformat | 1 + binaries/darwin-arm64/bin.exe | Bin 0 -> 13740468 bytes bsconfig.json | 2 +- bucklescript/GraphQL_PPX.bs.js | 42 - bucklescript/GraphQL_PPX.re | 52 - build_m1.sh | 4 + convert_to_ml.sh | 5 + copyPlatformBinaryInPlace.js | 5 - ...escript.md => installation-on-rescript.md} | 0 dune | 2 +- dune-workspace | 7 +- esy.json | 19 +- esy.lock/index.json | 982 ++------ esy.lock/opam/alcotest.1.4.0/opam | 54 - esy.lock/opam/astring.0.8.5/opam | 37 - esy.lock/opam/atd.2.2.1/opam | 55 - esy.lock/opam/atdgen-runtime.2.2.1/opam | 53 - esy.lock/opam/atdgen.2.2.1/opam | 63 - esy.lock/opam/cmdliner.1.0.4/opam | 36 - esy.lock/opam/{cppo.1.6.7 => cppo.1.6.8}/opam | 8 +- .../opam | 9 +- esy.lock/opam/{dune.2.9.0 => dune.2.9.3}/opam | 9 +- esy.lock/opam/fix.20201120/opam | 24 - esy.lock/opam/fmt.0.8.9/opam | 44 - esy.lock/opam/menhir.20210419/opam | 28 - esy.lock/opam/menhirLib.20210419/opam | 29 - esy.lock/opam/menhirSdk.20210419/opam | 29 - esy.lock/opam/merlin-extend.0.6/opam | 30 - .../{merlin.4.2-412 => merlin.4.4-413}/opam | 23 +- .../opam/ocaml-compiler-libs.v0.12.3/opam | 29 - .../opam/ocaml-compiler-libs.v0.12.4/opam | 39 + .../opam | 23 +- .../opam/ocaml-migrate-parsetree.2.2.0/opam | 36 - esy.lock/opam/ocamlbuild.0.14.0/opam | 36 - .../{ocamlfind.1.9.1 => ocamlfind.1.9.3}/opam | 6 +- esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam | 40 + esy.lock/opam/ppx_derivers.1.2.1/opam | 2 +- .../{ppxlib.0.22.2 => ppxlib.0.24.0}/opam | 15 +- esy.lock/opam/{re.1.9.0 => re.1.10.3}/opam | 14 +- esy.lock/opam/reason.3.7.0/opam | 31 - esy.lock/opam/spawn.v0.15.0/opam | 56 + esy.lock/opam/stdlib-shims.0.3.0/opam | 2 +- esy.lock/opam/topkg.1.0.3/opam | 48 - esy.lock/opam/uchar.0.0.2/opam | 36 - esy.lock/opam/uuidm.0.9.7/opam | 34 - esy.lock/opam/uutf.1.0.2/opam | 40 - .../files/ocamlbuild-0.14.0.patch | 463 ---- .../package.json | 27 - .../files/findlib.patch} | 0 .../package.json | 2 +- graphql_ppx.opam | 11 +- package.json | 9 +- rescript-runtime/graphql_ppx_runtime.ml | 41 + .../.gitignore | 0 snapshot_tests/.ocamlformat | 1 + ...pollo_argNamedQuery_re.9a582693.0.snapshot | 0 ...pile_Apollo_comment_re.7271f80c.0.snapshot | 0 ...pollo_customDecoder_re.4211c950.0.snapshot | 0 ...pollo_customScalars_re.26a34f3a.0.snapshot | 0 ..._Apollo_customTypes_re.7419b986.0.snapshot | 0 ...ObjectValueOnScalar_re.47c42c9f.0.snapshot | 0 ...le_Apollo_enumInput_re.ec10ad3f.0.snapshot | 0 ...o_ewertreproduction_re.87827a9a.0.snapshot | 0 ...xplicitobjectrecord_re.240e9a23.0.snapshot | 0 ...e_Apollo_extensions_re.463a102b.0.snapshot | 0 ..._fragmentDefinition_re.ba778ce0.0.snapshot | 0 ..._fragmentInFragment_re.6038646e.0.snapshot | 0 ...fragmentOnInterface_re.30741dde.0.snapshot | 0 ...agmentvariableinput_re.09de2a50.0.snapshot | 0 ..._Apollo_hasuraRepro_re.390e5d17.0.snapshot | 0 ...le_Apollo_interface_re.08a678a4.0.snapshot | 0 ...le_Apollo_listsArgs_re.e94e7f71.0.snapshot | 0 ...e_Apollo_listsInput_re.c232aa01.0.snapshot | 0 ...ompile_Apollo_lists_re.2cf1c641.0.snapshot | 0 ...e_Apollo_moduletype_re.4120dbeb.0.snapshot | 0 ...ithArgsAndNoRecords_re.511b4163.0.snapshot | 0 ...lo_mutationWithArgs_re.343025a6.0.snapshot | 0 ...ile_Apollo_mutation_re.e6540781.0.snapshot | 0 ...mpile_Apollo_nested_re.9d4db711.0.snapshot | 0 ...o_nonrecursiveInput_re.886661c4.0.snapshot | 0 ...omitFutureValueEnum_re.3460d035.0.snapshot | 0 ...mitFutureValueUnion_re.4688f512.0.snapshot | 0 ...o_pokedexApolloMode_re.e416e44b.0.snapshot | 0 ...ollo_pokedexScalars_re.6b0f6833.0.snapshot | 0 ...mpile_Apollo_record_re.8da7eeee.0.snapshot | 0 ...ollo_recursiveInput_re.51aefbd6.0.snapshot | 0 ..._Apollo_scalarsArgs_re.bdbe4d96.0.snapshot | 0 ...Apollo_scalarsInput_re.22ea50cc.0.snapshot | 0 ...pile_Apollo_scalars_re.2ec2020b.0.snapshot | 0 ...ollo_skipDirectives_re.0b6ebb6b.0.snapshot | 0 ...Apollo_subscription_re.96f50153.0.snapshot | 0 ...ollo_taggedtemplate_re.b2c72bab.0.snapshot | 0 ...ile_Apollo_typename_re.9bc7023b.0.snapshot | 0 ...Apollo_unionPartial_re.65119703.0.snapshot | 0 ...ompile_Apollo_union_re.76366068.0.snapshot | 0 ...pile_Apollo_variant_re.977425a4.0.snapshot | 0 ...cords_argNamedQuery_re.0245823f.0.snapshot | 0 ...ile_Records_comment_re.86ce2ac9.0.snapshot | 0 ...cords_customDecoder_re.cc1c924a.0.snapshot | 0 ...cords_customScalars_re.6d240cfb.0.snapshot | 0 ...Records_customTypes_re.10af8850.0.snapshot | 0 ...ObjectValueOnScalar_re.82bfc7b7.0.snapshot | 0 ...e_Records_enumInput_re.51f9f52d.0.snapshot | 0 ...s_ewertreproduction_re.ea0d79ae.0.snapshot | 0 ...xplicitobjectrecord_re.e6f225d7.0.snapshot | 0 ..._Records_extensions_re.05a5c113.0.snapshot | 0 ..._fragmentDefinition_re.640bdbaf.0.snapshot | 0 ..._fragmentInFragment_re.37f15525.0.snapshot | 0 ...fragmentOnInterface_re.df343f42.0.snapshot | 0 ...agmentvariableinput_re.a04fbf3a.0.snapshot | 0 ...Records_hasuraRepro_re.83c1e740.0.snapshot | 0 ...e_Records_interface_re.1006f89f.0.snapshot | 0 ...e_Records_listsArgs_re.eb4fb52e.0.snapshot | 0 ..._Records_listsInput_re.cdeb028e.0.snapshot | 0 ...mpile_Records_lists_re.dc83f1c1.0.snapshot | 0 ..._Records_moduletype_re.c34fccf0.0.snapshot | 0 ...ithArgsAndNoRecords_re.f5db67db.0.snapshot | 0 ...ds_mutationWithArgs_re.46210af6.0.snapshot | 0 ...le_Records_mutation_re.7ba67541.0.snapshot | 0 ...pile_Records_nested_re.07dfa31e.0.snapshot | 0 ...s_nonrecursiveInput_re.3a59f106.0.snapshot | 0 ...omitFutureValueEnum_re.944d834f.0.snapshot | 0 ...mitFutureValueUnion_re.c8ad022c.0.snapshot | 0 ...s_pokedexApolloMode_re.c0dcf343.0.snapshot | 0 ...ords_pokedexScalars_re.05c373a3.0.snapshot | 0 ...pile_Records_record_re.de74d4e8.0.snapshot | 0 ...ords_recursiveInput_re.53dbb475.0.snapshot | 0 ...Records_scalarsArgs_re.bffc1b6a.0.snapshot | 0 ...ecords_scalarsInput_re.d02e88f3.0.snapshot | 0 ...ile_Records_scalars_re.f7b94f41.0.snapshot | 0 ...ords_skipDirectives_re.afb2da16.0.snapshot | 0 ...ecords_subscription_re.0c2c9898.0.snapshot | 0 ...ords_taggedtemplate_re.e3bb5753.0.snapshot | 0 ...le_Records_typename_re.ca44faf7.0.snapshot | 0 ...ecords_unionPartial_re.d2c5350a.0.snapshot | 0 ...mpile_Records_union_re.6b6a06d3.0.snapshot | 0 ...ile_Records_variant_re.25ca9c5d.0.snapshot | 0 ...plate_argNamedQuery_re.6adcaf54.0.snapshot | 0 ...le_Template_comment_re.b8a0b8ce.0.snapshot | 0 ...plate_customDecoder_re.dc680ba3.0.snapshot | 0 ...plate_customScalars_re.268844f5.0.snapshot | 0 ...emplate_customTypes_re.1f10d345.0.snapshot | 0 ...ObjectValueOnScalar_re.8c8acb0b.0.snapshot | 0 ..._Template_enumInput_re.57c81965.0.snapshot | 0 ...e_ewertreproduction_re.0df0b934.0.snapshot | 0 ...xplicitobjectrecord_re.11bc46c3.0.snapshot | 0 ...Template_extensions_re.9e1c3556.0.snapshot | 0 ..._fragmentDefinition_re.ae81d77c.0.snapshot | 0 ..._fragmentInFragment_re.04d0ca63.0.snapshot | 0 ...fragmentOnInterface_re.5fde1618.0.snapshot | 0 ...agmentvariableinput_re.b77746bf.0.snapshot | 0 ...emplate_hasuraRepro_re.4b463a06.0.snapshot | 0 ..._Template_interface_re.9c6cccb5.0.snapshot | 0 ..._Template_listsArgs_re.4bffca2a.0.snapshot | 0 ...Template_listsInput_re.73feb0bb.0.snapshot | 0 ...pile_Template_lists_re.a911b1c5.0.snapshot | 0 ...Template_moduletype_re.a811f2cd.0.snapshot | 0 ...ithArgsAndNoRecords_re.3a8ba572.0.snapshot | 0 ...te_mutationWithArgs_re.83351ce1.0.snapshot | 0 ...e_Template_mutation_re.156d5ea3.0.snapshot | 0 ...ile_Template_nested_re.bcb0d8bc.0.snapshot | 0 ...e_nonrecursiveInput_re.cd601056.0.snapshot | 0 ...omitFutureValueEnum_re.48c34a68.0.snapshot | 0 ...mitFutureValueUnion_re.b3140dec.0.snapshot | 0 ...e_pokedexApolloMode_re.6d25061b.0.snapshot | 0 ...late_pokedexScalars_re.19295b04.0.snapshot | 0 ...ile_Template_record_re.61531582.0.snapshot | 0 ...late_recursiveInput_re.5a55b39e.0.snapshot | 0 ...emplate_scalarsArgs_re.9188aa6f.0.snapshot | 0 ...mplate_scalarsInput_re.8bc83997.0.snapshot | 0 ...le_Template_scalars_re.911b3188.0.snapshot | 0 ...late_skipDirectives_re.864cbdba.0.snapshot | 0 ...mplate_subscription_re.72042ba6.0.snapshot | 0 ...late_taggedtemplate_re.d058c095.0.snapshot | 0 ...e_Template_typename_re.9f9b776b.0.snapshot | 0 ...mplate_unionPartial_re.e7fab477.0.snapshot | 0 ...pile_Template_union_re.e2830f70.0.snapshot | 0 ...le_Template_variant_re.4305b7b8.0.snapshot | 0 ...InvalidObjectValues_re.482143db.0.snapshot | 2 +- ...InvalidObjectValues_re.6b67a026.0.snapshot | 2 +- ...InvalidObjectValues_re.89fdea74.0.snapshot | 2 +- ...InvalidObjectValues_re.be5c2761.0.snapshot | 2 +- ...lo_deprecatedFields_re.45024714.0.snapshot | 2 +- ...pollo_fragmentIssue_re.d2423eaa.0.snapshot | 4 +- ...adMissingInFragment_re.a8aed232.0.snapshot | 2 +- ...agmentSpreadMissing_re.e2f1f4d7.0.snapshot | 2 +- ...agmentWithWrongName_re.8cefd23e.0.snapshot | 4 +- ...alidArgVariableType_re.28a23cfc.0.snapshot | 2 +- ...alidArgVariableType_re.7acf25b6.0.snapshot | 2 +- ...alidArgVariableType_re.aa548ab6.0.snapshot | 2 +- ...alidArgVariableType_re.d036ec74.0.snapshot | 2 +- ...alidArgVariableType_re.d05fe458.0.snapshot | 2 +- ...alidArgVariableType_re.d5c9dfee.0.snapshot | 2 +- ...invalidDefaultValue_re.1e8abd82.0.snapshot | 2 +- ...invalidDefaultValue_re.20c164f5.0.snapshot | 2 +- ...invalidDefaultValue_re.24af07f4.0.snapshot | 2 +- ...invalidDefaultValue_re.ba872462.0.snapshot | 2 +- ...invalidObjectValues_re.0400e7ea.0.snapshot | 2 +- ...invalidObjectValues_re.bb71eb9b.0.snapshot | 2 +- ...invalidObjectValues_re.ea612d6f.0.snapshot | 2 +- ...Apollo_missingField_re.25dfdf9b.0.snapshot | 2 +- ...Apollo_missingField_re.31cfaf6e.0.snapshot | 2 +- ...Apollo_missingField_re.56f8566c.0.snapshot | 2 +- ...llo_missingFragment_re.9178eb63.0.snapshot | 2 +- ...ollo_wrongArguments_re.74bb7eb8.0.snapshot | 2 +- ...InvalidObjectValues_re.44ae152d.0.snapshot | 2 +- ...InvalidObjectValues_re.a1011abe.0.snapshot | 2 +- ...InvalidObjectValues_re.d1e31cc4.0.snapshot | 2 +- ...InvalidObjectValues_re.fb834dd4.0.snapshot | 2 +- ...ds_deprecatedFields_re.b4ab61b9.0.snapshot | 2 +- ...cords_fragmentIssue_re.9aeaa802.0.snapshot | 4 +- ...adMissingInFragment_re.6141afc4.0.snapshot | 2 +- ...agmentSpreadMissing_re.ce0cdd5d.0.snapshot | 2 +- ...agmentWithWrongName_re.6f87e237.0.snapshot | 4 +- ...alidArgVariableType_re.143b95e8.0.snapshot | 2 +- ...alidArgVariableType_re.7eb38c38.0.snapshot | 2 +- ...alidArgVariableType_re.8c75d151.0.snapshot | 2 +- ...alidArgVariableType_re.8ea5216f.0.snapshot | 2 +- ...alidArgVariableType_re.a4e4f057.0.snapshot | 2 +- ...alidArgVariableType_re.c6836e1b.0.snapshot | 2 +- ...invalidDefaultValue_re.3e57a3aa.0.snapshot | 2 +- ...invalidDefaultValue_re.501de8c5.0.snapshot | 2 +- ...invalidDefaultValue_re.7a2e6196.0.snapshot | 2 +- ...invalidDefaultValue_re.ec85952b.0.snapshot | 2 +- ...invalidObjectValues_re.2157d75a.0.snapshot | 2 +- ...invalidObjectValues_re.3982ce1b.0.snapshot | 2 +- ...invalidObjectValues_re.95e70ba0.0.snapshot | 2 +- ...ecords_missingField_re.1cc96e2f.0.snapshot | 2 +- ...ecords_missingField_re.b0b30a00.0.snapshot | 2 +- ...ecords_missingField_re.c99a95b9.0.snapshot | 2 +- ...rds_missingFragment_re.1337ee0c.0.snapshot | 2 +- ...ords_wrongArguments_re.b64e5941.0.snapshot | 2 +- ...InvalidObjectValues_re.166343bf.0.snapshot | 2 +- ...InvalidObjectValues_re.8372fc69.0.snapshot | 2 +- ...InvalidObjectValues_re.90163058.0.snapshot | 2 +- ...InvalidObjectValues_re.e1bf60dd.0.snapshot | 2 +- ...te_deprecatedFields_re.e605d682.0.snapshot | 2 +- ...plate_fragmentIssue_re.27d341cf.0.snapshot | 4 +- ...adMissingInFragment_re.4b7bd49b.0.snapshot | 2 +- ...agmentSpreadMissing_re.94259263.0.snapshot | 2 +- ...agmentWithWrongName_re.851ec029.0.snapshot | 4 +- ...alidArgVariableType_re.46dc6186.0.snapshot | 2 +- ...alidArgVariableType_re.75c44428.0.snapshot | 2 +- ...alidArgVariableType_re.8212a9e3.0.snapshot | 2 +- ...alidArgVariableType_re.ac05eb41.0.snapshot | 2 +- ...alidArgVariableType_re.c16356ed.0.snapshot | 2 +- ...alidArgVariableType_re.fbf040c9.0.snapshot | 2 +- ...invalidDefaultValue_re.500fb8d1.0.snapshot | 2 +- ...invalidDefaultValue_re.592efd67.0.snapshot | 2 +- ...invalidDefaultValue_re.63420faa.0.snapshot | 2 +- ...invalidDefaultValue_re.8ef5b8e0.0.snapshot | 2 +- ...invalidObjectValues_re.743cee07.0.snapshot | 2 +- ...invalidObjectValues_re.a6c07ac6.0.snapshot | 2 +- ...invalidObjectValues_re.d29e3050.0.snapshot | 2 +- ...mplate_missingField_re.367bc10c.0.snapshot | 2 +- ...mplate_missingField_re.3e550a8c.0.snapshot | 2 +- ...mplate_missingField_re.45edb96b.0.snapshot | 2 +- ...ate_missingFragment_re.c8f34e70.0.snapshot | 2 +- ...late_wrongArguments_re.486048fd.0.snapshot | 2 +- ...pollo_argNamedQuery_re.84fdb38d.0.snapshot | 0 ...rate_Apollo_comment_re.01de3d8b.0.snapshot | 10 +- ...pollo_customDecoder_re.8fe52a26.0.snapshot | 0 ...pollo_customScalars_re.74324f14.0.snapshot | 0 ..._Apollo_customTypes_re.cd543930.0.snapshot | 0 ...ObjectValueOnScalar_re.039024a4.0.snapshot | 0 ...te_Apollo_enumInput_re.89e218f7.0.snapshot | 0 ...o_ewertreproduction_re.28e16ad4.0.snapshot | 0 ...xplicitobjectrecord_re.906ec807.0.snapshot | 0 ...e_Apollo_extensions_re.c4a6997e.0.snapshot | 0 ..._fragmentDefinition_re.78da41af.0.snapshot | 0 ..._fragmentInFragment_re.fd9b8c22.0.snapshot | 0 ...fragmentOnInterface_re.123a77ad.0.snapshot | 0 ...agmentvariableinput_re.f7725b45.0.snapshot | 0 ..._Apollo_hasuraRepro_re.66af1d23.0.snapshot | 0 ...te_Apollo_interface_re.6f3750d9.0.snapshot | 0 ...te_Apollo_listsArgs_re.ee356c8f.0.snapshot | 14 +- ...e_Apollo_listsInput_re.1d520469.0.snapshot | 14 +- ...nerate_Apollo_lists_re.e225591b.0.snapshot | 0 ...e_Apollo_moduletype_re.b7288f7f.0.snapshot | 0 ...ithArgsAndNoRecords_re.a2f4800d.0.snapshot | 0 ...lo_mutationWithArgs_re.9fcbe219.0.snapshot | 0 ...ate_Apollo_mutation_re.087b663e.0.snapshot | 0 ...erate_Apollo_nested_re.8b5c2326.0.snapshot | 0 ...o_nonrecursiveInput_re.0abe2c2f.0.snapshot | 20 +- ...omitFutureValueEnum_re.94bf0907.0.snapshot | 0 ...mitFutureValueUnion_re.0014571f.0.snapshot | 0 ...o_pokedexApolloMode_re.f3aba61a.0.snapshot | 0 ...ollo_pokedexScalars_re.c71282a6.0.snapshot | 0 ...erate_Apollo_record_re.f7eec6bf.0.snapshot | 0 ...ollo_recursiveInput_re.652413b3.0.snapshot | 0 ..._Apollo_scalarsArgs_re.e37ecd07.0.snapshot | 0 ...Apollo_scalarsInput_re.bda5f930.0.snapshot | 0 ...rate_Apollo_scalars_re.0d22d5fa.0.snapshot | 0 ...ollo_skipDirectives_re.a25cb9c5.0.snapshot | 0 ...Apollo_subscription_re.a582fe3b.0.snapshot | 0 ...ollo_taggedtemplate_re.cf30bde6.0.snapshot | 0 ...ate_Apollo_typename_re.199dd32b.0.snapshot | 0 ...Apollo_unionPartial_re.43e40a0f.0.snapshot | 0 ...nerate_Apollo_union_re.ee1bb93d.0.snapshot | 0 ...rate_Apollo_variant_re.16a4f368.0.snapshot | 0 ...ative_argNamedQuery_re.de0055c7.0.snapshot | 0 ...rate_Native_comment_re.d26d36c5.0.snapshot | 10 +- ...ative_customDecoder_re.cc3c6a29.0.snapshot | 0 ...ative_customScalars_re.4cdbe640.0.snapshot | 0 ..._Native_customTypes_re.22a2fb02.0.snapshot | 0 ...ObjectValueOnScalar_re.ea37a9ed.0.snapshot | 0 ...te_Native_enumInput_re.49939a51.0.snapshot | 0 ...e_ewertreproduction_re.ee21d8cb.0.snapshot | 0 ...xplicitobjectrecord_re.fc30aa17.0.snapshot | 0 ...e_Native_extensions_re.4550a362.0.snapshot | 0 ..._fragmentDefinition_re.a93175f5.0.snapshot | 0 ..._fragmentInFragment_re.4c8472b8.0.snapshot | 0 ...fragmentOnInterface_re.990aaaac.0.snapshot | 0 ...agmentvariableinput_re.545e8068.0.snapshot | 0 ..._Native_hasuraRepro_re.2585f195.0.snapshot | 0 ...te_Native_interface_re.a1f5956c.0.snapshot | 0 ...te_Native_listsArgs_re.c6f78b03.0.snapshot | 14 +- ...e_Native_listsInput_re.f110d9de.0.snapshot | 14 +- ...nerate_Native_lists_re.a10d95fa.0.snapshot | 0 ...e_Native_moduletype_re.9ff4dd56.0.snapshot | 0 ...ithArgsAndNoRecords_re.7c836ead.0.snapshot | 0 ...ve_mutationWithArgs_re.4aa65e79.0.snapshot | 0 ...ate_Native_mutation_re.4b68f150.0.snapshot | 0 ...erate_Native_nested_re.40104e8d.0.snapshot | 0 ...e_nonrecursiveInput_re.5cc14b29.0.snapshot | 20 +- ...omitFutureValueEnum_re.41f04893.0.snapshot | 0 ...mitFutureValueUnion_re.bd60f674.0.snapshot | 0 ...e_pokedexApolloMode_re.68591302.0.snapshot | 0 ...tive_pokedexScalars_re.4fe00707.0.snapshot | 0 ...erate_Native_record_re.c5c11df5.0.snapshot | 0 ...tive_recursiveInput_re.cc666db9.0.snapshot | 0 ..._Native_scalarsArgs_re.73dc8086.0.snapshot | 0 ...Native_scalarsInput_re.938a6b73.0.snapshot | 0 ...rate_Native_scalars_re.08884de4.0.snapshot | 0 ...tive_skipDirectives_re.b41d3b70.0.snapshot | 0 ...Native_subscription_re.92e93d2b.0.snapshot | 0 ...tive_taggedtemplate_re.3849ba12.0.snapshot | 0 ...ate_Native_typename_re.2499250f.0.snapshot | 0 ...Native_unionPartial_re.820d9a31.0.snapshot | 0 ...nerate_Native_union_re.94a11569.0.snapshot | 0 ...rate_Native_variant_re.6170670f.0.snapshot | 0 ...cords_argNamedQuery_re.0f18ca22.0.snapshot | 0 ...ate_Records_comment_re.24709c37.0.snapshot | 10 +- ...cords_customDecoder_re.0ebc8dde.0.snapshot | 0 ...cords_customScalars_re.ddfb46d6.0.snapshot | 0 ...Records_customTypes_re.0daf4c25.0.snapshot | 0 ...ObjectValueOnScalar_re.eaa07751.0.snapshot | 0 ...e_Records_enumInput_re.92ca066f.0.snapshot | 0 ...s_ewertreproduction_re.9a865a13.0.snapshot | 0 ...xplicitobjectrecord_re.31739664.0.snapshot | 0 ..._Records_extensions_re.330a7e2a.0.snapshot | 0 ..._fragmentDefinition_re.3cc2584d.0.snapshot | 0 ..._fragmentInFragment_re.9d7749b9.0.snapshot | 0 ...fragmentOnInterface_re.fa7d9867.0.snapshot | 0 ...agmentvariableinput_re.699f000a.0.snapshot | 0 ...Records_hasuraRepro_re.778cb99d.0.snapshot | 0 ...e_Records_interface_re.31643995.0.snapshot | 0 ...e_Records_listsArgs_re.82626de9.0.snapshot | 14 +- ..._Records_listsInput_re.84753ab2.0.snapshot | 14 +- ...erate_Records_lists_re.0169b401.0.snapshot | 0 ..._Records_moduletype_re.bc327a64.0.snapshot | 0 ...ithArgsAndNoRecords_re.2c4e1f81.0.snapshot | 0 ...ds_mutationWithArgs_re.f2c26be8.0.snapshot | 0 ...te_Records_mutation_re.58e94060.0.snapshot | 0 ...rate_Records_nested_re.7aecbe68.0.snapshot | 0 ...s_nonrecursiveInput_re.a12696d8.0.snapshot | 20 +- ...omitFutureValueEnum_re.0f4a477c.0.snapshot | 0 ...mitFutureValueUnion_re.4c12430b.0.snapshot | 0 ...s_pokedexApolloMode_re.c16f4c35.0.snapshot | 0 ...ords_pokedexScalars_re.8082c545.0.snapshot | 0 ...rate_Records_record_re.2ddcaa1a.0.snapshot | 0 ...ords_recursiveInput_re.f8f9a74c.0.snapshot | 0 ...Records_scalarsArgs_re.35dd7f62.0.snapshot | 0 ...ecords_scalarsInput_re.d0f7307a.0.snapshot | 0 ...ate_Records_scalars_re.fbae1e9d.0.snapshot | 0 ...ords_skipDirectives_re.8edb6329.0.snapshot | 0 ...ecords_subscription_re.c91caf1b.0.snapshot | 0 ...ords_taggedtemplate_re.55eacb74.0.snapshot | 0 ...te_Records_typename_re.42e6ab48.0.snapshot | 0 ...ecords_unionPartial_re.124577c7.0.snapshot | 0 ...erate_Records_union_re.190499e4.0.snapshot | 0 ...ate_Records_variant_re.d2e83164.0.snapshot | 0 ...plate_argNamedQuery_re.10ed9698.0.snapshot | 0 ...te_Template_comment_re.34a0d0ed.0.snapshot | 10 +- ...plate_customDecoder_re.b8a0861e.0.snapshot | 0 ...plate_customScalars_re.61e1efe0.0.snapshot | 0 ...emplate_customTypes_re.1d5585c6.0.snapshot | 0 ...ObjectValueOnScalar_re.c66b37eb.0.snapshot | 0 ..._Template_enumInput_re.05124326.0.snapshot | 0 ...e_ewertreproduction_re.b3dc2fc2.0.snapshot | 0 ...xplicitobjectrecord_re.eb39d294.0.snapshot | 0 ...Template_extensions_re.2d765912.0.snapshot | 0 ..._fragmentDefinition_re.ba6e21ac.0.snapshot | 0 ..._fragmentInFragment_re.1d09bcb9.0.snapshot | 0 ...fragmentOnInterface_re.dac01f7d.0.snapshot | 0 ...agmentvariableinput_re.eaaf2d14.0.snapshot | 0 ...emplate_hasuraRepro_re.4b0149f4.0.snapshot | 0 ..._Template_interface_re.c22e1907.0.snapshot | 0 ..._Template_listsArgs_re.eb4eda24.0.snapshot | 14 +- ...Template_listsInput_re.8e53cc06.0.snapshot | 14 +- ...rate_Template_lists_re.83d16dad.0.snapshot | 0 ...Template_moduletype_re.57d7e1ae.0.snapshot | 0 ...ithArgsAndNoRecords_re.b8a50892.0.snapshot | 0 ...te_mutationWithArgs_re.96e131aa.0.snapshot | 0 ...e_Template_mutation_re.f72fdbfc.0.snapshot | 0 ...ate_Template_nested_re.0a4cf07e.0.snapshot | 0 ...e_nonrecursiveInput_re.97c84619.0.snapshot | 20 +- ...omitFutureValueEnum_re.4bdd8cf4.0.snapshot | 0 ...mitFutureValueUnion_re.43c97d36.0.snapshot | 0 ...e_pokedexApolloMode_re.e3522bc1.0.snapshot | 0 ...late_pokedexScalars_re.806bf3e5.0.snapshot | 0 ...ate_Template_record_re.7e7e787d.0.snapshot | 0 ...late_recursiveInput_re.64f4d7a7.0.snapshot | 0 ...emplate_scalarsArgs_re.758efb7b.0.snapshot | 0 ...mplate_scalarsInput_re.319f4b5d.0.snapshot | 0 ...te_Template_scalars_re.fff2bc0b.0.snapshot | 0 ...late_skipDirectives_re.47c4172e.0.snapshot | 0 ...mplate_subscription_re.5c005c4b.0.snapshot | 0 ...late_taggedtemplate_re.4ed7325c.0.snapshot | 0 ...e_Template_typename_re.1bfba79b.0.snapshot | 0 ...mplate_unionPartial_re.2554b2a3.0.snapshot | 0 ...rate_Template_union_re.9751822d.0.snapshot | 0 ...te_Template_variant_re.8261c0db.0.snapshot | 0 .../dune-project | 0 .../operations/argNamedQuery.re | 0 .../operations/comment.re | 0 .../operations/customDecoder.re | 0 .../operations/customScalars.re | 0 .../operations/customTypes.re | 0 .../operations/defaultObjectValueOnScalar.re | 0 .../operations/enumInput.re | 0 .../operations/errors/InvalidObjectValues2.re | 0 .../operations/errors/InvalidObjectValues3.re | 0 .../operations/errors/InvalidObjectValues4.re | 0 .../operations/errors/InvalidObjectValues5.re | 0 .../operations/errors/deprecatedFields.re | 0 .../expected/InvalidObjectValues2.re.txt | 12 + .../expected/InvalidObjectValues3.re.txt | 12 + .../expected/InvalidObjectValues4.re.txt | 12 + .../expected/InvalidObjectValues5.re.txt | 12 + .../errors/expected/deprecatedFields.re.txt | 4 + .../errors/expected/fragmentIssue.re.txt | 15 + .../expected/fragmentSpreadMissing.re.txt | 19 + .../fragmentSpreadMissingInFragment.re.txt | 17 + .../expected/fragmentWithWrongName.re.txt | 17 + .../expected/invalidArgVariableType1.re.txt | 12 + .../expected/invalidArgVariableType2.re.txt | 12 + .../expected/invalidArgVariableType3.re.txt | 12 + .../expected/invalidArgVariableType4.re.txt | 12 + .../expected/invalidArgVariableType5.re.txt | 12 + .../expected/invalidArgVariableType6.re.txt | 12 + .../expected/invalidDefaultValue1.re.txt | 12 + .../expected/invalidDefaultValue2.re.txt | 12 + .../expected/invalidDefaultValue3.re.txt | 12 + .../expected/invalidDefaultValue4.re.txt | 12 + .../expected/invalidObjectValues1.re.txt | 12 + .../expected/invalidObjectValues6.re.txt | 12 + .../expected/invalidObjectValues7.re.txt | 12 + .../errors/expected/missingField1.re.txt | 12 + .../errors/expected/missingField2.re.txt | 12 + .../errors/expected/missingField3.re.txt | 12 + .../errors/expected/missingFragment.re.txt | 12 + .../errors/expected/wrongArguments.re.txt | 12 + .../operations/errors/fragmentIssue.re | 0 .../errors/fragmentSpreadMissing.re | 0 .../errors/fragmentSpreadMissingInFragment.re | 0 .../errors/fragmentWithWrongName.re | 0 .../errors/invalidArgVariableType1.re | 0 .../errors/invalidArgVariableType2.re | 0 .../errors/invalidArgVariableType3.re | 0 .../errors/invalidArgVariableType4.re | 0 .../errors/invalidArgVariableType5.re | 0 .../errors/invalidArgVariableType6.re | 0 .../operations/errors/invalidDefaultValue1.re | 0 .../operations/errors/invalidDefaultValue2.re | 0 .../operations/errors/invalidDefaultValue3.re | 0 .../operations/errors/invalidDefaultValue4.re | 0 .../operations/errors/invalidObjectValues1.re | 0 .../operations/errors/invalidObjectValues6.re | 0 .../operations/errors/invalidObjectValues7.re | 0 .../operations/errors/missingField1.re | 0 .../operations/errors/missingField2.re | 0 .../operations/errors/missingField3.re | 0 .../operations/errors/missingFragment.re | 0 .../operations/errors/wrongArguments.re | 0 .../operations/ewert_reproduction.re | 0 .../apollo/compile/argNamedQuery.re.txt | 120 + .../expected/apollo/compile/comment.re.txt | 101 + .../apollo/compile/customDecoder.re.txt | 83 + .../apollo/compile/customScalars.re.txt | 61 + .../apollo/compile/customTypes.re.txt | 164 ++ .../compile/defaultObjectValueOnScalar.re.txt | 43 + .../expected/apollo/compile/enumInput.re.txt | 45 + .../apollo/compile/ewert_reproduction.re.txt | 59 + .../compile/explicit_object_record.re.txt | 195 ++ .../expected/apollo/compile/extensions.re.txt | 241 ++ .../apollo/compile/fragmentDefinition.re.txt | 450 ++++ .../apollo/compile/fragmentInFragment.re.txt | 117 + .../apollo/compile/fragmentOnInterface.re.txt | 129 + .../apollo/compile/fragmentUnion.re.txt | 154 ++ .../compile/fragmentvariableinput.re.txt | 61 + .../apollo/compile/hasuraRepro.re.txt | 95 + .../expected/apollo/compile/interface.re.txt | 387 +++ .../expected/apollo/compile/lists.re.txt | 100 + .../expected/apollo/compile/listsArgs.re.txt | 66 + .../expected/apollo/compile/listsInput.re.txt | 80 + .../apollo/compile/module_type.re.txt | 106 + .../expected/apollo/compile/mutation.re.txt | 111 + .../apollo/compile/mutationWithArgs.re.txt | 42 + .../mutationWithArgsAndNoRecords.re.txt | 42 + .../expected/apollo/compile/nested.re.txt | 362 +++ .../apollo/compile/nonrecursiveInput.re.txt | 201 ++ .../apollo/compile/omitFutureValueEnum.re.txt | 265 ++ .../compile/omitFutureValueUnion.re.txt | 260 ++ .../apollo/compile/pokedexApolloMode.re.txt | 69 + .../apollo/compile/pokedexScalars.re.txt | 155 ++ .../expected/apollo/compile/record.re.txt | 410 +++ .../apollo/compile/recursiveInput.re.txt | 155 ++ .../expected/apollo/compile/scalars.re.txt | 90 + .../apollo/compile/scalarsArgs.re.txt | 65 + .../apollo/compile/scalarsInput.re.txt | 79 + .../apollo/compile/skipDirectives.re.txt | 79 + .../apollo/compile/subscription.re.txt | 88 + .../apollo/compile/tagged_template.re.txt | 998 ++++++++ .../expected/apollo/compile/typename.re.txt | 89 + .../expected/apollo/compile/union.re.txt | 363 +++ .../apollo/compile/unionPartial.re.txt | 69 + .../expected/apollo/compile/variant.re.txt | 137 + .../apollo/generate/argNamedQuery.re.txt | 185 ++ .../expected/apollo/generate/comment.re.txt | 282 +++ .../apollo/generate/customDecoder.re.txt | 137 + .../apollo/generate/customScalars.re.txt | 154 ++ .../apollo/generate/customTypes.re.txt | 259 ++ .../defaultObjectValueOnScalar.re.txt | 74 + .../expected/apollo/generate/enumInput.re.txt | 86 + .../apollo/generate/ewert_reproduction.re.txt | 168 ++ .../generate/explicit_object_record.re.txt | 378 +++ .../apollo/generate/extensions.re.txt | 446 ++++ .../apollo/generate/fragmentDefinition.re.txt | 976 ++++++++ .../apollo/generate/fragmentInFragment.re.txt | 243 ++ .../generate/fragmentOnInterface.re.txt | 287 +++ .../apollo/generate/fragmentUnion.re.txt | 295 +++ .../generate/fragmentvariableinput.re.txt | 152 ++ .../apollo/generate/hasuraRepro.re.txt | 196 ++ .../expected/apollo/generate/interface.re.txt | 908 +++++++ .../expected/apollo/generate/lists.re.txt | 198 ++ .../expected/apollo/generate/listsArgs.re.txt | 181 ++ .../apollo/generate/listsInput.re.txt | 194 ++ .../apollo/generate/module_type.re.txt | 304 +++ .../expected/apollo/generate/mutation.re.txt | 278 +++ .../apollo/generate/mutationWithArgs.re.txt | 73 + .../mutationWithArgsAndNoRecords.re.txt | 73 + .../expected/apollo/generate/nested.re.txt | 979 ++++++++ .../apollo/generate/nonrecursiveInput.re.txt | 587 +++++ .../generate/omitFutureValueEnum.re.txt | 587 +++++ .../generate/omitFutureValueUnion.re.txt | 570 +++++ .../apollo/generate/pokedexApolloMode.re.txt | 139 ++ .../apollo/generate/pokedexScalars.re.txt | 328 +++ .../expected/apollo/generate/record.re.txt | 805 ++++++ .../apollo/generate/recursiveInput.re.txt | 336 +++ .../expected/apollo/generate/scalars.re.txt | 263 ++ .../apollo/generate/scalarsArgs.re.txt | 212 ++ .../apollo/generate/scalarsInput.re.txt | 229 ++ .../apollo/generate/skipDirectives.re.txt | 219 ++ .../apollo/generate/subscription.re.txt | 197 ++ .../apollo/generate/tagged_template.re.txt | 2209 +++++++++++++++++ .../expected/apollo/generate/typename.re.txt | 210 ++ .../expected/apollo/generate/union.re.txt | 725 ++++++ .../apollo/generate/unionPartial.re.txt | 153 ++ .../expected/apollo/generate/variant.re.txt | 334 +++ .../native/generate/argNamedQuery.re.txt | 191 ++ .../expected/native/generate/comment.re.txt | 286 +++ .../native/generate/customDecoder.re.txt | 114 + .../native/generate/customScalars.re.txt | 136 + .../native/generate/customTypes.re.txt | 225 ++ .../defaultObjectValueOnScalar.re.txt | 78 + .../expected/native/generate/enumInput.re.txt | 89 + .../native/generate/ewert_reproduction.re.txt | 122 + .../generate/explicit_object_record.re.txt | 434 ++++ .../native/generate/extensions.re.txt | 497 ++++ .../native/generate/fragmentDefinition.re.txt | 877 +++++++ .../native/generate/fragmentInFragment.re.txt | 209 ++ .../generate/fragmentOnInterface.re.txt | 230 ++ .../native/generate/fragmentUnion.re.txt | 229 ++ .../generate/fragmentvariableinput.re.txt | 110 + .../native/generate/hasuraRepro.re.txt | 168 ++ .../expected/native/generate/interface.re.txt | 743 ++++++ .../expected/native/generate/lists.re.txt | 226 ++ .../expected/native/generate/listsArgs.re.txt | 195 ++ .../native/generate/listsInput.re.txt | 212 ++ .../native/generate/module_type.re.txt | 246 ++ .../expected/native/generate/mutation.re.txt | 209 ++ .../native/generate/mutationWithArgs.re.txt | 77 + .../mutationWithArgsAndNoRecords.re.txt | 77 + .../expected/native/generate/nested.re.txt | 568 +++++ .../native/generate/nonrecursiveInput.re.txt | 584 +++++ .../generate/omitFutureValueEnum.re.txt | 464 ++++ .../generate/omitFutureValueUnion.re.txt | 405 +++ .../native/generate/pokedexApolloMode.re.txt | 115 + .../native/generate/pokedexScalars.re.txt | 278 +++ .../expected/native/generate/record.re.txt | 723 ++++++ .../native/generate/recursiveInput.re.txt | 337 +++ .../expected/native/generate/scalars.re.txt | 228 ++ .../native/generate/scalarsArgs.re.txt | 201 ++ .../native/generate/scalarsInput.re.txt | 233 ++ .../native/generate/skipDirectives.re.txt | 167 ++ .../native/generate/subscription.re.txt | 131 + .../native/generate/tagged_template.re.txt | 1967 +++++++++++++++ .../expected/native/generate/typename.re.txt | 185 ++ .../expected/native/generate/union.re.txt | 566 +++++ .../native/generate/unionPartial.re.txt | 129 + .../expected/native/generate/variant.re.txt | 256 ++ .../records/compile/argNamedQuery.re.txt | 120 + .../expected/records/compile/comment.re.txt | 101 + .../records/compile/customDecoder.re.txt | 80 + .../records/compile/customScalars.re.txt | 58 + .../records/compile/customTypes.re.txt | 161 ++ .../compile/defaultObjectValueOnScalar.re.txt | 43 + .../expected/records/compile/enumInput.re.txt | 45 + .../records/compile/ewert_reproduction.re.txt | 53 + .../compile/explicit_object_record.re.txt | 189 ++ .../records/compile/extensions.re.txt | 235 ++ .../records/compile/fragmentDefinition.re.txt | 426 ++++ .../records/compile/fragmentInFragment.re.txt | 110 + .../compile/fragmentOnInterface.re.txt | 125 + .../records/compile/fragmentUnion.re.txt | 156 ++ .../compile/fragmentvariableinput.re.txt | 55 + .../records/compile/hasuraRepro.re.txt | 97 + .../expected/records/compile/interface.re.txt | 383 +++ .../expected/records/compile/lists.re.txt | 97 + .../expected/records/compile/listsArgs.re.txt | 66 + .../records/compile/listsInput.re.txt | 80 + .../records/compile/module_type.re.txt | 106 + .../expected/records/compile/mutation.re.txt | 102 + .../records/compile/mutationWithArgs.re.txt | 42 + .../mutationWithArgsAndNoRecords.re.txt | 42 + .../expected/records/compile/nested.re.txt | 317 +++ .../records/compile/nonrecursiveInput.re.txt | 201 ++ .../compile/omitFutureValueEnum.re.txt | 247 ++ .../compile/omitFutureValueUnion.re.txt | 254 ++ .../records/compile/pokedexApolloMode.re.txt | 66 + .../records/compile/pokedexScalars.re.txt | 149 ++ .../expected/records/compile/record.re.txt | 404 +++ .../records/compile/recursiveInput.re.txt | 155 ++ .../expected/records/compile/scalars.re.txt | 87 + .../records/compile/scalarsArgs.re.txt | 65 + .../records/compile/scalarsInput.re.txt | 79 + .../records/compile/skipDirectives.re.txt | 73 + .../records/compile/subscription.re.txt | 86 + .../records/compile/tagged_template.re.txt | 964 +++++++ .../expected/records/compile/typename.re.txt | 89 + .../expected/records/compile/union.re.txt | 359 +++ .../records/compile/unionPartial.re.txt | 68 + .../expected/records/compile/variant.re.txt | 133 + .../records/generate/argNamedQuery.re.txt | 185 ++ .../expected/records/generate/comment.re.txt | 282 +++ .../records/generate/customDecoder.re.txt | 125 + .../records/generate/customScalars.re.txt | 142 ++ .../records/generate/customTypes.re.txt | 246 ++ .../defaultObjectValueOnScalar.re.txt | 74 + .../records/generate/enumInput.re.txt | 86 + .../generate/ewert_reproduction.re.txt | 136 + .../generate/explicit_object_record.re.txt | 352 +++ .../records/generate/extensions.re.txt | 418 ++++ .../generate/fragmentDefinition.re.txt | 855 +++++++ .../generate/fragmentInFragment.re.txt | 213 ++ .../generate/fragmentOnInterface.re.txt | 276 ++ .../records/generate/fragmentUnion.re.txt | 255 ++ .../generate/fragmentvariableinput.re.txt | 112 + .../records/generate/hasuraRepro.re.txt | 176 ++ .../records/generate/interface.re.txt | 847 +++++++ .../expected/records/generate/lists.re.txt | 185 ++ .../records/generate/listsArgs.re.txt | 181 ++ .../records/generate/listsInput.re.txt | 194 ++ .../records/generate/module_type.re.txt | 276 ++ .../expected/records/generate/mutation.re.txt | 228 ++ .../records/generate/mutationWithArgs.re.txt | 73 + .../mutationWithArgsAndNoRecords.re.txt | 73 + .../expected/records/generate/nested.re.txt | 663 +++++ .../records/generate/nonrecursiveInput.re.txt | 587 +++++ .../generate/omitFutureValueEnum.re.txt | 503 ++++ .../generate/omitFutureValueUnion.re.txt | 498 ++++ .../records/generate/pokedexApolloMode.re.txt | 127 + .../records/generate/pokedexScalars.re.txt | 304 +++ .../expected/records/generate/record.re.txt | 773 ++++++ .../records/generate/recursiveInput.re.txt | 336 +++ .../expected/records/generate/scalars.re.txt | 250 ++ .../records/generate/scalarsArgs.re.txt | 212 ++ .../records/generate/scalarsInput.re.txt | 229 ++ .../records/generate/skipDirectives.re.txt | 195 ++ .../records/generate/subscription.re.txt | 167 ++ .../records/generate/tagged_template.re.txt | 2094 ++++++++++++++++ .../expected/records/generate/typename.re.txt | 210 ++ .../expected/records/generate/union.re.txt | 677 +++++ .../records/generate/unionPartial.re.txt | 143 ++ .../expected/records/generate/variant.re.txt | 292 +++ .../template/compile/argNamedQuery.re.txt | 138 + .../expected/template/compile/comment.re.txt | 107 + .../template/compile/customDecoder.re.txt | 89 + .../template/compile/customScalars.re.txt | 67 + .../template/compile/customTypes.re.txt | 173 ++ .../compile/defaultObjectValueOnScalar.re.txt | 49 + .../template/compile/enumInput.re.txt | 51 + .../compile/ewert_reproduction.re.txt | 63 + .../compile/explicit_object_record.re.txt | 211 ++ .../template/compile/extensions.re.txt | 253 ++ .../compile/fragmentDefinition.re.txt | 485 ++++ .../compile/fragmentInFragment.re.txt | 120 + .../compile/fragmentOnInterface.re.txt | 143 ++ .../template/compile/fragmentUnion.re.txt | 178 ++ .../compile/fragmentvariableinput.re.txt | 63 + .../template/compile/hasuraRepro.re.txt | 108 + .../template/compile/interface.re.txt | 449 ++++ .../expected/template/compile/lists.re.txt | 108 + .../template/compile/listsArgs.re.txt | 72 + .../template/compile/listsInput.re.txt | 86 + .../template/compile/module_type.re.txt | 134 + .../expected/template/compile/mutation.re.txt | 116 + .../template/compile/mutationWithArgs.re.txt | 48 + .../mutationWithArgsAndNoRecords.re.txt | 48 + .../expected/template/compile/nested.re.txt | 368 +++ .../template/compile/nonrecursiveInput.re.txt | 214 ++ .../compile/omitFutureValueEnum.re.txt | 280 +++ .../compile/omitFutureValueUnion.re.txt | 299 +++ .../template/compile/pokedexApolloMode.re.txt | 75 + .../template/compile/pokedexScalars.re.txt | 167 ++ .../expected/template/compile/record.re.txt | 472 ++++ .../template/compile/recursiveInput.re.txt | 167 ++ .../expected/template/compile/scalars.re.txt | 104 + .../template/compile/scalarsArgs.re.txt | 71 + .../template/compile/scalarsInput.re.txt | 85 + .../template/compile/skipDirectives.re.txt | 86 + .../template/compile/subscription.re.txt | 100 + .../template/compile/tagged_template.re.txt | 964 +++++++ .../expected/template/compile/typename.re.txt | 104 + .../expected/template/compile/union.re.txt | 420 ++++ .../template/compile/unionPartial.re.txt | 80 + .../expected/template/compile/variant.re.txt | 159 ++ .../template/generate/argNamedQuery.re.txt | 191 ++ .../expected/template/generate/comment.re.txt | 284 +++ .../template/generate/customDecoder.re.txt | 127 + .../template/generate/customScalars.re.txt | 144 ++ .../template/generate/customTypes.re.txt | 248 ++ .../defaultObjectValueOnScalar.re.txt | 76 + .../template/generate/enumInput.re.txt | 88 + .../generate/ewert_reproduction.re.txt | 138 + .../generate/explicit_object_record.re.txt | 356 +++ .../template/generate/extensions.re.txt | 422 ++++ .../generate/fragmentDefinition.re.txt | 868 +++++++ .../generate/fragmentInFragment.re.txt | 218 ++ .../generate/fragmentOnInterface.re.txt | 284 +++ .../template/generate/fragmentUnion.re.txt | 260 ++ .../generate/fragmentvariableinput.re.txt | 114 + .../template/generate/hasuraRepro.re.txt | 181 ++ .../template/generate/interface.re.txt | 857 +++++++ .../expected/template/generate/lists.re.txt | 187 ++ .../template/generate/listsArgs.re.txt | 183 ++ .../template/generate/listsInput.re.txt | 196 ++ .../template/generate/module_type.re.txt | 282 +++ .../template/generate/mutation.re.txt | 230 ++ .../template/generate/mutationWithArgs.re.txt | 75 + .../mutationWithArgsAndNoRecords.re.txt | 75 + .../expected/template/generate/nested.re.txt | 669 +++++ .../generate/nonrecursiveInput.re.txt | 591 +++++ .../generate/omitFutureValueEnum.re.txt | 509 ++++ .../generate/omitFutureValueUnion.re.txt | 504 ++++ .../generate/pokedexApolloMode.re.txt | 129 + .../template/generate/pokedexScalars.re.txt | 308 +++ .../expected/template/generate/record.re.txt | 791 ++++++ .../template/generate/recursiveInput.re.txt | 340 +++ .../expected/template/generate/scalars.re.txt | 252 ++ .../template/generate/scalarsArgs.re.txt | 214 ++ .../template/generate/scalarsInput.re.txt | 231 ++ .../template/generate/skipDirectives.re.txt | 197 ++ .../template/generate/subscription.re.txt | 169 ++ .../template/generate/tagged_template.re.txt | 2094 ++++++++++++++++ .../template/generate/typename.re.txt | 212 ++ .../expected/template/generate/union.re.txt | 688 +++++ .../template/generate/unionPartial.re.txt | 145 ++ .../expected/template/generate/variant.re.txt | 294 +++ .../operations/explicit_object_record.re | 0 .../operations/extensions.re | 0 .../operations/fragmentDefinition.re | 2 +- .../operations/fragmentInFragment.re | 2 +- .../operations/fragmentOnInterface.re | 2 +- snapshot_tests/operations/fragmentUnion.re | 26 + .../operations/fragmentvariableinput.re | 0 .../operations/hasuraRepro.re | 0 .../operations/interface.re | 2 +- .../operations/lists.re | 0 .../operations/listsArgs.re | 0 .../operations/listsInput.re | 0 .../operations/module_type.re | 0 .../operations/mutation.re | 0 .../operations/mutationWithArgs.re | 0 .../mutationWithArgsAndNoRecords.re | 0 .../operations/nested.re | 0 .../operations/nonrecursiveInput.re | 0 .../operations/omitFutureValueEnum.re | 0 .../operations/omitFutureValueUnion.re | 0 .../operations/pokedexApolloMode.re | 0 .../operations/pokedexScalars.re | 0 .../operations/record.re | 7 + .../operations/recursiveInput.re | 0 .../operations/scalars.re | 0 .../operations/scalarsArgs.re | 0 .../operations/scalarsInput.re | 0 .../operations/skipDirectives.re | 0 .../operations/subscription.re | 0 .../operations/tagged_template.re | 4 +- .../operations/typename.re | 0 .../operations/union.re | 7 + .../operations/unionPartial.re | 0 .../operations/variant.re | 0 snapshot_tests/ppx_output.sh | 4 + .../utilities/.gitignore | 0 .../utilities/GraphQL_PPX.js | 0 snapshot_tests/utilities/GraphQL_PPX.ml | 38 + src/base/ast_serializer_apollo.re | 216 -- src/base/ast_transforms.re | 267 -- src/base/compat.re | 2 - src/base/dirty_checker.re | 76 - src/base/dune | 8 - src/base/extract_type_definitions.re | 444 ---- src/base/extract_type_definitions.rei | 93 - src/base/generator_utils.re | 45 - src/base/graphql_ast.re | 89 - src/base/graphql_lexer.re | 471 ---- src/base/graphql_parser.re | 108 - src/base/graphql_parser_directives.re | 81 - src/base/graphql_parser_document.re | 516 ---- src/base/graphql_parser_schema.re | 572 ----- src/base/graphql_parser_schema.rei | 3 - src/base/graphql_parser_value.re | 83 - src/base/graphql_ppx_base.re | 22 - src/base/graphql_printer.re | 378 --- src/base/graphql_printer.rei | 11 - src/base/log.re | 6 - src/base/multi_visitor.re | 193 -- src/base/option.re | 28 - src/base/ppx_config.re | 96 - src/base/read_schema.re | 501 ---- src/base/result_decoder.re | 1262 ---------- src/base/result_decoder.rei | 38 - src/base/result_ext.re | 21 - src/base/result_structure.re | 131 - src/base/result_structure.rei | 109 - src/base/rule_all_required_arguments.re | 51 - src/base/rule_deprecated_fields.re | 32 - src/base/rule_known_argument_names.re | 74 - src/base/rule_no_invalid_default_values.re | 153 -- .../rule_no_invalid_input_object_values.re | 169 -- src/base/rule_no_undefined_variables.re | 57 - src/base/rule_no_unused_variables.re | 73 - src/base/schema.re | 239 -- src/base/schema_printer.re | 90 - src/base/source_pos.re | 58 - src/base/traversal_utils.re | 509 ---- src/base/type_utils.re | 217 -- src/base/validations.re | 51 - src/bin/Bin.ml | 4 + src/{bucklescript_bin => bin}/dune | 0 src/bucklescript/bucklescript_config.re | 349 --- src/bucklescript/graphql_ppx.re | 1412 ----------- .../output_bucklescript_module.re | 1425 ----------- .../output_bucklescript_parser.re | 851 ------- .../output_bucklescript_serializer.re | 1250 ---------- src/bucklescript/output_bucklescript_types.re | 1226 --------- src/bucklescript/output_bucklescript_utils.re | 121 - .../runtime/graphql_ppx_runtime.re | 60 - src/bucklescript_bin/Bin.re | 5 - src/graphql_compiler/ast_serializer_apollo.ml | 190 ++ src/graphql_compiler/ast_transforms.ml | 214 ++ .../ast_transforms.mli} | 18 +- src/graphql_compiler/dirty_checker.ml | 63 + src/graphql_compiler/dune | 6 + .../extract_type_definitions.ml | 325 +++ .../extract_type_definitions.mli | 90 + src/graphql_compiler/generator_utils.ml | 35 + src/graphql_compiler/graphql_ast.ml | 84 + src/graphql_compiler/graphql_compiler.ml | 21 + src/graphql_compiler/graphql_lexer.ml | 380 +++ src/graphql_compiler/graphql_parser.ml | 93 + .../graphql_parser_directives.ml | 51 + .../graphql_parser_document.ml | 349 +++ src/graphql_compiler/graphql_parser_schema.ml | 464 ++++ src/graphql_compiler/graphql_parser_value.ml | 62 + src/graphql_compiler/graphql_printer.ml | 268 ++ src/graphql_compiler/graphql_printer.mli | 11 + src/graphql_compiler/log.ml | 2 + src/graphql_compiler/multi_visitor.ml | 174 ++ src/graphql_compiler/option.ml | 12 + src/graphql_compiler/ppx_config.ml | 85 + src/graphql_compiler/read_schema.ml | 448 ++++ src/graphql_compiler/result_decoder.ml | 860 +++++++ src/graphql_compiler/result_decoder.mli | 40 + src/graphql_compiler/result_ext.ml | 9 + src/graphql_compiler/result_structure.ml | 113 + src/graphql_compiler/result_structure.mli | 94 + .../rule_all_required_arguments.ml | 43 + .../rule_deprecated_fields.ml | 27 + .../rule_known_argument_names.ml | 52 + .../rule_no_invalid_default_values.ml | 99 + .../rule_no_invalid_input_object_values.ml | 96 + .../rule_no_undefined_variables.ml | 40 + .../rule_no_unused_variables.ml | 50 + src/graphql_compiler/schema.ml | 198 ++ src/graphql_compiler/schema_printer.ml | 61 + src/graphql_compiler/source_pos.ml | 34 + src/graphql_compiler/traversal_utils.ml | 427 ++++ src/graphql_compiler/type_utils.ml | 171 ++ src/graphql_compiler/validations.ml | 25 + src/json/dune | 7 + src/json/json.ml | 14 + src/json/json.mli | 510 ++++ src/json/json_common.ml | 123 + src/json/json_monomorphic.ml | 77 + src/json/json_read.mli | 231 ++ src/json/json_read.mll | 1068 ++++++++ src/json/json_type.ml | 18 + src/json/json_util.ml | 141 ++ src/json/json_util.mli | 198 ++ src/json/json_write.ml | 366 +++ src/{bucklescript => ppx}/dune | 2 +- src/ppx/graphql_ppx.ml | 1105 +++++++++ src/ppx/output_module.ml | 1069 ++++++++ src/ppx/output_parser.ml | 528 ++++ src/ppx/output_serializer.ml | 777 ++++++ src/ppx/output_types.ml | 781 ++++++ src/ppx/output_utils.ml | 142 ++ src/ppx/rescript_config.ml | 278 +++ src/{bucklescript => ppx}/runtime/dune | 3 +- src/ppx/runtime/graphql_ppx_runtime.ml | 85 + tests.sh | 78 + tests_bucklescript/.vscode | 6 - tests_bucklescript/tests/RunTests.re | 1 - tests_bucklescript/tests/Snapshots.re | 474 ---- tests_bucklescript/tests/TestFramework.re | 8 - tests_bucklescript/tests/dune | 17 - tests_bucklescript/utilities/GraphQL_PPX.re | 52 - tests_native/arg_named_query.ml | 23 + tests_native/arg_named_query.re | 29 - tests_native/cli_colors.ml | 34 + tests_native/{comment.re => comment.ml} | 8 +- tests_native/custom_decoder.ml | 45 + tests_native/custom_decoder.re | 61 - tests_native/custom_scalars.ml | 44 + tests_native/custom_scalars.re | 68 - tests_native/dune | 2 +- tests_native/enum_input.ml | 17 + tests_native/enum_input.re | 23 - tests_native/fragment_definition.ml | 92 + tests_native/fragment_definition.re | 105 - tests_native/fragment_union_serialization.ml | 27 + tests_native/interface.ml | 90 + tests_native/interface.re | 121 - tests_native/list_args.ml | 53 + tests_native/list_args.re | 76 - tests_native/list_inputs.ml | 43 + tests_native/list_inputs.re | 55 - tests_native/lists.ml | 62 + tests_native/lists.re | 64 - tests_native/main.ml | 54 + tests_native/main.re | 28 - tests_native/mutation.ml | 26 + tests_native/mutation.re | 26 - tests_native/nested.ml | 99 + tests_native/nested.re | 136 - tests_native/nonrecursive_input.ml | 41 + tests_native/nonrecursive_input.re | 65 - tests_native/record.ml | 185 ++ tests_native/record.re | 260 -- tests_native/recursive_input.ml | 38 + tests_native/recursive_input.re | 51 - tests_native/scalars.ml | 161 ++ tests_native/scalars.re | 178 -- tests_native/scalars_args.ml | 78 + tests_native/scalars_args.re | 105 - tests_native/scalars_input.ml | 45 + tests_native/scalars_input.re | 52 - tests_native/skip_directives.ml | 64 + tests_native/skip_directives.re | 97 - tests_native/test_shared.ml | 122 + tests_native/test_shared.re | 46 - tests_native/typename.ml | 61 + tests_native/typename.re | 98 - tests_native/union.ml | 53 + tests_native/union.re | 78 - tests_native/union_partial.ml | 49 + tests_native/union_partial.re | 76 - tests_native/variant.ml | 68 + tests_native/variant.re | 102 - 994 files changed, 95369 insertions(+), 19390 deletions(-) create mode 100755 binaries/darwin-arm64/bin.exe delete mode 100644 bucklescript/GraphQL_PPX.bs.js delete mode 100644 bucklescript/GraphQL_PPX.re create mode 100755 build_m1.sh create mode 100755 convert_to_ml.sh rename documentation/docs/{installation-on-bucklescript.md => installation-on-rescript.md} (100%) delete mode 100644 esy.lock/opam/alcotest.1.4.0/opam delete mode 100644 esy.lock/opam/astring.0.8.5/opam delete mode 100644 esy.lock/opam/atd.2.2.1/opam delete mode 100644 esy.lock/opam/atdgen-runtime.2.2.1/opam delete mode 100644 esy.lock/opam/atdgen.2.2.1/opam delete mode 100644 esy.lock/opam/cmdliner.1.0.4/opam rename esy.lock/opam/{cppo.1.6.7 => cppo.1.6.8}/opam (70%) rename esy.lock/opam/{dune-build-info.2.9.0 => dune-build-info.2.9.3}/opam (73%) rename esy.lock/opam/{dune.2.9.0 => dune.2.9.3}/opam (84%) delete mode 100644 esy.lock/opam/fix.20201120/opam delete mode 100644 esy.lock/opam/fmt.0.8.9/opam delete mode 100644 esy.lock/opam/menhir.20210419/opam delete mode 100644 esy.lock/opam/menhirLib.20210419/opam delete mode 100644 esy.lock/opam/menhirSdk.20210419/opam delete mode 100644 esy.lock/opam/merlin-extend.0.6/opam rename esy.lock/opam/{merlin.4.2-412 => merlin.4.4-413}/opam (73%) delete mode 100644 esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam create mode 100644 esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam rename esy.lock/opam/{ocaml-lsp-server.1.7.0 => ocaml-lsp-server.1.10.1}/opam (58%) delete mode 100644 esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam delete mode 100644 esy.lock/opam/ocamlbuild.0.14.0/opam rename esy.lock/opam/{ocamlfind.1.9.1 => ocamlfind.1.9.3}/opam (82%) create mode 100644 esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam rename esy.lock/opam/{ppxlib.0.22.2 => ppxlib.0.24.0}/opam (75%) rename esy.lock/opam/{re.1.9.0 => re.1.10.3}/opam (65%) delete mode 100644 esy.lock/opam/reason.3.7.0/opam create mode 100644 esy.lock/opam/spawn.v0.15.0/opam delete mode 100644 esy.lock/opam/topkg.1.0.3/opam delete mode 100644 esy.lock/opam/uchar.0.0.2/opam delete mode 100644 esy.lock/opam/uuidm.0.9.7/opam delete mode 100644 esy.lock/opam/uutf.1.0.2/opam delete mode 100644 esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch delete mode 100644 esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json rename esy.lock/overrides/{opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch => opam__s__ocamlfind_opam__c__1.9.3_opam_override/files/findlib.patch} (100%) rename esy.lock/overrides/{opam__s__ocamlfind_opam__c__1.9.1_opam_override => opam__s__ocamlfind_opam__c__1.9.3_opam_override}/package.json (92%) create mode 100644 rescript-runtime/graphql_ppx_runtime.ml rename {tests_bucklescript => snapshot_tests}/.gitignore (100%) create mode 100644 snapshot_tests/.ocamlformat rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_argNamedQuery_re.9a582693.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_comment_re.7271f80c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_customDecoder_re.4211c950.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_customScalars_re.26a34f3a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_customTypes_re.7419b986.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_defaultObjectValueOnScalar_re.47c42c9f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_enumInput_re.ec10ad3f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_ewertreproduction_re.87827a9a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_explicitobjectrecord_re.240e9a23.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_extensions_re.463a102b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_fragmentDefinition_re.ba778ce0.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_fragmentInFragment_re.6038646e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_fragmentOnInterface_re.30741dde.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_fragmentvariableinput_re.09de2a50.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_hasuraRepro_re.390e5d17.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_interface_re.08a678a4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_listsArgs_re.e94e7f71.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_listsInput_re.c232aa01.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_lists_re.2cf1c641.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_moduletype_re.4120dbeb.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_mutationWithArgsAndNoRecords_re.511b4163.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_mutationWithArgs_re.343025a6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_mutation_re.e6540781.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_nested_re.9d4db711.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_nonrecursiveInput_re.886661c4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_omitFutureValueEnum_re.3460d035.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_omitFutureValueUnion_re.4688f512.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_pokedexApolloMode_re.e416e44b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_pokedexScalars_re.6b0f6833.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_record_re.8da7eeee.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_recursiveInput_re.51aefbd6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_scalarsArgs_re.bdbe4d96.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_scalarsInput_re.22ea50cc.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_scalars_re.2ec2020b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_skipDirectives_re.0b6ebb6b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_subscription_re.96f50153.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_taggedtemplate_re.b2c72bab.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_typename_re.9bc7023b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_unionPartial_re.65119703.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_union_re.76366068.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Apollo_variant_re.977425a4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_argNamedQuery_re.0245823f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_comment_re.86ce2ac9.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_customDecoder_re.cc1c924a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_customScalars_re.6d240cfb.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_customTypes_re.10af8850.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_defaultObjectValueOnScalar_re.82bfc7b7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_enumInput_re.51f9f52d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_ewertreproduction_re.ea0d79ae.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_explicitobjectrecord_re.e6f225d7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_extensions_re.05a5c113.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_fragmentDefinition_re.640bdbaf.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_fragmentInFragment_re.37f15525.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_fragmentOnInterface_re.df343f42.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_fragmentvariableinput_re.a04fbf3a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_hasuraRepro_re.83c1e740.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_interface_re.1006f89f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_listsArgs_re.eb4fb52e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_listsInput_re.cdeb028e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_lists_re.dc83f1c1.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_moduletype_re.c34fccf0.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_mutationWithArgsAndNoRecords_re.f5db67db.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_mutationWithArgs_re.46210af6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_mutation_re.7ba67541.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_nested_re.07dfa31e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_nonrecursiveInput_re.3a59f106.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_omitFutureValueEnum_re.944d834f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_omitFutureValueUnion_re.c8ad022c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_pokedexApolloMode_re.c0dcf343.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_pokedexScalars_re.05c373a3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_record_re.de74d4e8.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_recursiveInput_re.53dbb475.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_scalarsArgs_re.bffc1b6a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_scalarsInput_re.d02e88f3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_scalars_re.f7b94f41.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_skipDirectives_re.afb2da16.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_subscription_re.0c2c9898.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_taggedtemplate_re.e3bb5753.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_typename_re.ca44faf7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_unionPartial_re.d2c5350a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_union_re.6b6a06d3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Records_variant_re.25ca9c5d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_argNamedQuery_re.6adcaf54.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_comment_re.b8a0b8ce.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_customDecoder_re.dc680ba3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_customScalars_re.268844f5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_customTypes_re.1f10d345.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_defaultObjectValueOnScalar_re.8c8acb0b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_enumInput_re.57c81965.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_ewertreproduction_re.0df0b934.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_explicitobjectrecord_re.11bc46c3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_extensions_re.9e1c3556.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_fragmentDefinition_re.ae81d77c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_fragmentInFragment_re.04d0ca63.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_fragmentOnInterface_re.5fde1618.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_fragmentvariableinput_re.b77746bf.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_hasuraRepro_re.4b463a06.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_interface_re.9c6cccb5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_listsArgs_re.4bffca2a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_listsInput_re.73feb0bb.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_lists_re.a911b1c5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_moduletype_re.a811f2cd.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_mutationWithArgsAndNoRecords_re.3a8ba572.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_mutationWithArgs_re.83351ce1.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_mutation_re.156d5ea3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_nested_re.bcb0d8bc.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_nonrecursiveInput_re.cd601056.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_omitFutureValueEnum_re.48c34a68.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_omitFutureValueUnion_re.b3140dec.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_pokedexApolloMode_re.6d25061b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_pokedexScalars_re.19295b04.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_record_re.61531582.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_recursiveInput_re.5a55b39e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_scalarsArgs_re.9188aa6f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_scalarsInput_re.8bc83997.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_scalars_re.911b3188.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_skipDirectives_re.864cbdba.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_subscription_re.72042ba6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_taggedtemplate_re.d058c095.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_typename_re.9f9b776b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_unionPartial_re.e7fab477.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_union_re.e2830f70.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Compile_Template_variant_re.4305b7b8.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot (69%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot (86%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot (88%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot (83%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot (69%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot (86%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot (88%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot (83%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot (83%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot (69%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot (86%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot (88%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot (83%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot (80%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot (81%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot (82%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_argNamedQuery_re.84fdb38d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_customDecoder_re.8fe52a26.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_customScalars_re.74324f14.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_customTypes_re.cd543930.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_defaultObjectValueOnScalar_re.039024a4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_enumInput_re.89e218f7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_ewertreproduction_re.28e16ad4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_explicitobjectrecord_re.906ec807.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_extensions_re.c4a6997e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_fragmentDefinition_re.78da41af.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_fragmentInFragment_re.fd9b8c22.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_fragmentOnInterface_re.123a77ad.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_fragmentvariableinput_re.f7725b45.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_hasuraRepro_re.66af1d23.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_interface_re.6f3750d9.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_lists_re.e225591b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_moduletype_re.b7288f7f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_mutationWithArgsAndNoRecords_re.a2f4800d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_mutationWithArgs_re.9fcbe219.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_mutation_re.087b663e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_nested_re.8b5c2326.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_omitFutureValueEnum_re.94bf0907.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_omitFutureValueUnion_re.0014571f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_pokedexApolloMode_re.f3aba61a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_pokedexScalars_re.c71282a6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_record_re.f7eec6bf.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_recursiveInput_re.652413b3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_scalarsArgs_re.e37ecd07.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_scalarsInput_re.bda5f930.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_scalars_re.0d22d5fa.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_skipDirectives_re.a25cb9c5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_subscription_re.a582fe3b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_taggedtemplate_re.cf30bde6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_typename_re.199dd32b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_unionPartial_re.43e40a0f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_union_re.ee1bb93d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Apollo_variant_re.16a4f368.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_argNamedQuery_re.de0055c7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot (97%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_customDecoder_re.cc3c6a29.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_customScalars_re.4cdbe640.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_customTypes_re.22a2fb02.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_defaultObjectValueOnScalar_re.ea37a9ed.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_enumInput_re.49939a51.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_ewertreproduction_re.ee21d8cb.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_explicitobjectrecord_re.fc30aa17.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_extensions_re.4550a362.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_fragmentDefinition_re.a93175f5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_fragmentInFragment_re.4c8472b8.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_fragmentOnInterface_re.990aaaac.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_fragmentvariableinput_re.545e8068.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_hasuraRepro_re.2585f195.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_interface_re.a1f5956c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot (94%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_lists_re.a10d95fa.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_moduletype_re.9ff4dd56.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_mutationWithArgsAndNoRecords_re.7c836ead.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_mutationWithArgs_re.4aa65e79.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_mutation_re.4b68f150.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_nested_re.40104e8d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot (97%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_omitFutureValueEnum_re.41f04893.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_omitFutureValueUnion_re.bd60f674.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_pokedexApolloMode_re.68591302.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_pokedexScalars_re.4fe00707.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_record_re.c5c11df5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_recursiveInput_re.cc666db9.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_scalarsArgs_re.73dc8086.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_scalarsInput_re.938a6b73.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_scalars_re.08884de4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_skipDirectives_re.b41d3b70.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_subscription_re.92e93d2b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_taggedtemplate_re.3849ba12.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_typename_re.2499250f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_unionPartial_re.820d9a31.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_union_re.94a11569.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Native_variant_re.6170670f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_argNamedQuery_re.0f18ca22.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_customDecoder_re.0ebc8dde.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_customScalars_re.ddfb46d6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_customTypes_re.0daf4c25.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_defaultObjectValueOnScalar_re.eaa07751.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_enumInput_re.92ca066f.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_ewertreproduction_re.9a865a13.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_explicitobjectrecord_re.31739664.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_extensions_re.330a7e2a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_fragmentDefinition_re.3cc2584d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_fragmentInFragment_re.9d7749b9.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_fragmentOnInterface_re.fa7d9867.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_fragmentvariableinput_re.699f000a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_hasuraRepro_re.778cb99d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_interface_re.31643995.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_lists_re.0169b401.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_moduletype_re.bc327a64.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_mutationWithArgsAndNoRecords_re.2c4e1f81.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_mutationWithArgs_re.f2c26be8.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_mutation_re.58e94060.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_nested_re.7aecbe68.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_omitFutureValueEnum_re.0f4a477c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_omitFutureValueUnion_re.4c12430b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_pokedexApolloMode_re.c16f4c35.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_pokedexScalars_re.8082c545.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_record_re.2ddcaa1a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_recursiveInput_re.f8f9a74c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_scalarsArgs_re.35dd7f62.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_scalarsInput_re.d0f7307a.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_scalars_re.fbae1e9d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_skipDirectives_re.8edb6329.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_subscription_re.c91caf1b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_taggedtemplate_re.55eacb74.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_typename_re.42e6ab48.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_unionPartial_re.124577c7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_union_re.190499e4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Records_variant_re.d2e83164.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_argNamedQuery_re.10ed9698.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_customDecoder_re.b8a0861e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_customScalars_re.61e1efe0.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_customTypes_re.1d5585c6.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_defaultObjectValueOnScalar_re.c66b37eb.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_enumInput_re.05124326.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_ewertreproduction_re.b3dc2fc2.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_explicitobjectrecord_re.eb39d294.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_extensions_re.2d765912.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_fragmentDefinition_re.ba6e21ac.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_fragmentInFragment_re.1d09bcb9.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_fragmentOnInterface_re.dac01f7d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_fragmentvariableinput_re.eaaf2d14.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_hasuraRepro_re.4b0149f4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_interface_re.c22e1907.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot (95%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_lists_re.83d16dad.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_moduletype_re.57d7e1ae.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_mutationWithArgsAndNoRecords_re.b8a50892.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_mutationWithArgs_re.96e131aa.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_mutation_re.f72fdbfc.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_nested_re.0a4cf07e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot (98%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_omitFutureValueEnum_re.4bdd8cf4.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_omitFutureValueUnion_re.43c97d36.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_pokedexApolloMode_re.e3522bc1.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_pokedexScalars_re.806bf3e5.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_record_re.7e7e787d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_recursiveInput_re.64f4d7a7.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_scalarsArgs_re.758efb7b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_scalarsInput_re.319f4b5d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_scalars_re.fff2bc0b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_skipDirectives_re.47c4172e.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_subscription_re.5c005c4b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_taggedtemplate_re.4ed7325c.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_typename_re.1bfba79b.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_unionPartial_re.2554b2a3.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_union_re.9751822d.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/__snapshots__/Generate_Template_variant_re.8261c0db.0.snapshot (100%) rename {tests_bucklescript => snapshot_tests}/dune-project (100%) rename {tests_bucklescript => snapshot_tests}/operations/argNamedQuery.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/comment.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/customDecoder.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/customScalars.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/customTypes.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/defaultObjectValueOnScalar.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/enumInput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/InvalidObjectValues2.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/InvalidObjectValues3.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/InvalidObjectValues4.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/InvalidObjectValues5.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/deprecatedFields.re (100%) create mode 100644 snapshot_tests/operations/errors/expected/InvalidObjectValues2.re.txt create mode 100644 snapshot_tests/operations/errors/expected/InvalidObjectValues3.re.txt create mode 100644 snapshot_tests/operations/errors/expected/InvalidObjectValues4.re.txt create mode 100644 snapshot_tests/operations/errors/expected/InvalidObjectValues5.re.txt create mode 100644 snapshot_tests/operations/errors/expected/deprecatedFields.re.txt create mode 100644 snapshot_tests/operations/errors/expected/fragmentIssue.re.txt create mode 100644 snapshot_tests/operations/errors/expected/fragmentSpreadMissing.re.txt create mode 100644 snapshot_tests/operations/errors/expected/fragmentSpreadMissingInFragment.re.txt create mode 100644 snapshot_tests/operations/errors/expected/fragmentWithWrongName.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType1.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType2.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType3.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType4.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType5.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidArgVariableType6.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidDefaultValue1.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidDefaultValue2.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidDefaultValue3.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidDefaultValue4.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidObjectValues1.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidObjectValues6.re.txt create mode 100644 snapshot_tests/operations/errors/expected/invalidObjectValues7.re.txt create mode 100644 snapshot_tests/operations/errors/expected/missingField1.re.txt create mode 100644 snapshot_tests/operations/errors/expected/missingField2.re.txt create mode 100644 snapshot_tests/operations/errors/expected/missingField3.re.txt create mode 100644 snapshot_tests/operations/errors/expected/missingFragment.re.txt create mode 100644 snapshot_tests/operations/errors/expected/wrongArguments.re.txt rename {tests_bucklescript => snapshot_tests}/operations/errors/fragmentIssue.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/fragmentSpreadMissing.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/fragmentSpreadMissingInFragment.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/fragmentWithWrongName.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType1.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType2.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType3.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType4.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType5.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidArgVariableType6.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidDefaultValue1.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidDefaultValue2.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidDefaultValue3.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidDefaultValue4.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidObjectValues1.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidObjectValues6.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/invalidObjectValues7.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/missingField1.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/missingField2.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/missingField3.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/missingFragment.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/errors/wrongArguments.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/ewert_reproduction.re (100%) create mode 100644 snapshot_tests/operations/expected/apollo/compile/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/comment.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/interface.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/lists.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/nested.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/record.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/typename.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/union.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/compile/variant.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/comment.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/interface.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/lists.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/nested.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/record.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/typename.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/union.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/apollo/generate/variant.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/comment.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/interface.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/lists.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/nested.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/record.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/typename.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/union.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/native/generate/variant.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/comment.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/interface.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/lists.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/nested.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/record.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/typename.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/union.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/records/compile/variant.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/comment.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/interface.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/lists.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/nested.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/record.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/typename.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/union.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/records/generate/variant.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/comment.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/interface.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/lists.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/nested.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/record.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/typename.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/union.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/template/compile/variant.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/argNamedQuery.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/comment.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/customDecoder.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/customScalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/customTypes.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/defaultObjectValueOnScalar.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/enumInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/ewert_reproduction.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/explicit_object_record.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/extensions.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/fragmentDefinition.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/fragmentInFragment.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/fragmentOnInterface.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/fragmentUnion.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/fragmentvariableinput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/hasuraRepro.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/interface.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/lists.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/listsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/listsInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/module_type.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/mutation.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/mutationWithArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/mutationWithArgsAndNoRecords.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/nested.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/nonrecursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/omitFutureValueEnum.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/omitFutureValueUnion.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/pokedexApolloMode.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/pokedexScalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/record.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/recursiveInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/scalars.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/scalarsArgs.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/scalarsInput.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/skipDirectives.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/subscription.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/tagged_template.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/typename.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/union.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/unionPartial.re.txt create mode 100644 snapshot_tests/operations/expected/template/generate/variant.re.txt rename {tests_bucklescript => snapshot_tests}/operations/explicit_object_record.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/extensions.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/fragmentDefinition.re (97%) rename {tests_bucklescript => snapshot_tests}/operations/fragmentInFragment.re (87%) rename {tests_bucklescript => snapshot_tests}/operations/fragmentOnInterface.re (90%) create mode 100644 snapshot_tests/operations/fragmentUnion.re rename {tests_bucklescript => snapshot_tests}/operations/fragmentvariableinput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/hasuraRepro.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/interface.re (96%) rename {tests_bucklescript => snapshot_tests}/operations/lists.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/listsArgs.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/listsInput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/module_type.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/mutation.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/mutationWithArgs.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/mutationWithArgsAndNoRecords.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/nested.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/nonrecursiveInput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/omitFutureValueEnum.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/omitFutureValueUnion.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/pokedexApolloMode.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/pokedexScalars.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/record.re (92%) rename {tests_bucklescript => snapshot_tests}/operations/recursiveInput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/scalars.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/scalarsArgs.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/scalarsInput.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/skipDirectives.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/subscription.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/tagged_template.re (97%) rename {tests_bucklescript => snapshot_tests}/operations/typename.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/union.re (90%) rename {tests_bucklescript => snapshot_tests}/operations/unionPartial.re (100%) rename {tests_bucklescript => snapshot_tests}/operations/variant.re (100%) create mode 100755 snapshot_tests/ppx_output.sh rename {tests_bucklescript => snapshot_tests}/utilities/.gitignore (100%) rename {tests_bucklescript => snapshot_tests}/utilities/GraphQL_PPX.js (100%) create mode 100644 snapshot_tests/utilities/GraphQL_PPX.ml delete mode 100644 src/base/ast_serializer_apollo.re delete mode 100644 src/base/ast_transforms.re delete mode 100644 src/base/compat.re delete mode 100644 src/base/dirty_checker.re delete mode 100644 src/base/dune delete mode 100644 src/base/extract_type_definitions.re delete mode 100644 src/base/extract_type_definitions.rei delete mode 100644 src/base/generator_utils.re delete mode 100644 src/base/graphql_ast.re delete mode 100644 src/base/graphql_lexer.re delete mode 100644 src/base/graphql_parser.re delete mode 100644 src/base/graphql_parser_directives.re delete mode 100644 src/base/graphql_parser_document.re delete mode 100644 src/base/graphql_parser_schema.re delete mode 100644 src/base/graphql_parser_schema.rei delete mode 100644 src/base/graphql_parser_value.re delete mode 100644 src/base/graphql_ppx_base.re delete mode 100644 src/base/graphql_printer.re delete mode 100644 src/base/graphql_printer.rei delete mode 100644 src/base/log.re delete mode 100644 src/base/multi_visitor.re delete mode 100644 src/base/option.re delete mode 100644 src/base/ppx_config.re delete mode 100644 src/base/read_schema.re delete mode 100644 src/base/result_decoder.re delete mode 100644 src/base/result_decoder.rei delete mode 100644 src/base/result_ext.re delete mode 100644 src/base/result_structure.re delete mode 100644 src/base/result_structure.rei delete mode 100644 src/base/rule_all_required_arguments.re delete mode 100644 src/base/rule_deprecated_fields.re delete mode 100644 src/base/rule_known_argument_names.re delete mode 100644 src/base/rule_no_invalid_default_values.re delete mode 100644 src/base/rule_no_invalid_input_object_values.re delete mode 100644 src/base/rule_no_undefined_variables.re delete mode 100644 src/base/rule_no_unused_variables.re delete mode 100644 src/base/schema.re delete mode 100644 src/base/schema_printer.re delete mode 100644 src/base/source_pos.re delete mode 100644 src/base/traversal_utils.re delete mode 100644 src/base/type_utils.re delete mode 100644 src/base/validations.re create mode 100644 src/bin/Bin.ml rename src/{bucklescript_bin => bin}/dune (100%) delete mode 100644 src/bucklescript/bucklescript_config.re delete mode 100644 src/bucklescript/graphql_ppx.re delete mode 100644 src/bucklescript/output_bucklescript_module.re delete mode 100644 src/bucklescript/output_bucklescript_parser.re delete mode 100644 src/bucklescript/output_bucklescript_serializer.re delete mode 100644 src/bucklescript/output_bucklescript_types.re delete mode 100644 src/bucklescript/output_bucklescript_utils.re delete mode 100644 src/bucklescript/runtime/graphql_ppx_runtime.re delete mode 100644 src/bucklescript_bin/Bin.re create mode 100644 src/graphql_compiler/ast_serializer_apollo.ml create mode 100644 src/graphql_compiler/ast_transforms.ml rename src/{base/ast_transforms.rei => graphql_compiler/ast_transforms.mli} (86%) create mode 100644 src/graphql_compiler/dirty_checker.ml create mode 100644 src/graphql_compiler/dune create mode 100644 src/graphql_compiler/extract_type_definitions.ml create mode 100644 src/graphql_compiler/extract_type_definitions.mli create mode 100644 src/graphql_compiler/generator_utils.ml create mode 100644 src/graphql_compiler/graphql_ast.ml create mode 100644 src/graphql_compiler/graphql_compiler.ml create mode 100644 src/graphql_compiler/graphql_lexer.ml create mode 100644 src/graphql_compiler/graphql_parser.ml create mode 100644 src/graphql_compiler/graphql_parser_directives.ml create mode 100644 src/graphql_compiler/graphql_parser_document.ml create mode 100644 src/graphql_compiler/graphql_parser_schema.ml create mode 100644 src/graphql_compiler/graphql_parser_value.ml create mode 100644 src/graphql_compiler/graphql_printer.ml create mode 100644 src/graphql_compiler/graphql_printer.mli create mode 100644 src/graphql_compiler/log.ml create mode 100644 src/graphql_compiler/multi_visitor.ml create mode 100644 src/graphql_compiler/option.ml create mode 100644 src/graphql_compiler/ppx_config.ml create mode 100644 src/graphql_compiler/read_schema.ml create mode 100644 src/graphql_compiler/result_decoder.ml create mode 100644 src/graphql_compiler/result_decoder.mli create mode 100644 src/graphql_compiler/result_ext.ml create mode 100644 src/graphql_compiler/result_structure.ml create mode 100644 src/graphql_compiler/result_structure.mli create mode 100644 src/graphql_compiler/rule_all_required_arguments.ml create mode 100644 src/graphql_compiler/rule_deprecated_fields.ml create mode 100644 src/graphql_compiler/rule_known_argument_names.ml create mode 100644 src/graphql_compiler/rule_no_invalid_default_values.ml create mode 100644 src/graphql_compiler/rule_no_invalid_input_object_values.ml create mode 100644 src/graphql_compiler/rule_no_undefined_variables.ml create mode 100644 src/graphql_compiler/rule_no_unused_variables.ml create mode 100644 src/graphql_compiler/schema.ml create mode 100644 src/graphql_compiler/schema_printer.ml create mode 100644 src/graphql_compiler/source_pos.ml create mode 100644 src/graphql_compiler/traversal_utils.ml create mode 100644 src/graphql_compiler/type_utils.ml create mode 100644 src/graphql_compiler/validations.ml create mode 100644 src/json/dune create mode 100644 src/json/json.ml create mode 100644 src/json/json.mli create mode 100644 src/json/json_common.ml create mode 100644 src/json/json_monomorphic.ml create mode 100644 src/json/json_read.mli create mode 100644 src/json/json_read.mll create mode 100644 src/json/json_type.ml create mode 100644 src/json/json_util.ml create mode 100644 src/json/json_util.mli create mode 100644 src/json/json_write.ml rename src/{bucklescript => ppx}/dune (78%) create mode 100644 src/ppx/graphql_ppx.ml create mode 100644 src/ppx/output_module.ml create mode 100644 src/ppx/output_parser.ml create mode 100644 src/ppx/output_serializer.ml create mode 100644 src/ppx/output_types.ml create mode 100644 src/ppx/output_utils.ml create mode 100644 src/ppx/rescript_config.ml rename src/{bucklescript => ppx}/runtime/dune (53%) create mode 100644 src/ppx/runtime/graphql_ppx_runtime.ml create mode 100755 tests.sh delete mode 100644 tests_bucklescript/.vscode delete mode 100644 tests_bucklescript/tests/RunTests.re delete mode 100644 tests_bucklescript/tests/Snapshots.re delete mode 100644 tests_bucklescript/tests/TestFramework.re delete mode 100644 tests_bucklescript/tests/dune delete mode 100644 tests_bucklescript/utilities/GraphQL_PPX.re create mode 100644 tests_native/arg_named_query.ml delete mode 100644 tests_native/arg_named_query.re create mode 100644 tests_native/cli_colors.ml rename tests_native/{comment.re => comment.ml} (70%) create mode 100644 tests_native/custom_decoder.ml delete mode 100644 tests_native/custom_decoder.re create mode 100644 tests_native/custom_scalars.ml delete mode 100644 tests_native/custom_scalars.re create mode 100644 tests_native/enum_input.ml delete mode 100644 tests_native/enum_input.re create mode 100644 tests_native/fragment_definition.ml delete mode 100644 tests_native/fragment_definition.re create mode 100644 tests_native/fragment_union_serialization.ml create mode 100644 tests_native/interface.ml delete mode 100644 tests_native/interface.re create mode 100644 tests_native/list_args.ml delete mode 100644 tests_native/list_args.re create mode 100644 tests_native/list_inputs.ml delete mode 100644 tests_native/list_inputs.re create mode 100644 tests_native/lists.ml delete mode 100644 tests_native/lists.re create mode 100644 tests_native/main.ml delete mode 100644 tests_native/main.re create mode 100644 tests_native/mutation.ml delete mode 100644 tests_native/mutation.re create mode 100644 tests_native/nested.ml delete mode 100644 tests_native/nested.re create mode 100644 tests_native/nonrecursive_input.ml delete mode 100644 tests_native/nonrecursive_input.re create mode 100644 tests_native/record.ml delete mode 100644 tests_native/record.re create mode 100644 tests_native/recursive_input.ml delete mode 100644 tests_native/recursive_input.re create mode 100644 tests_native/scalars.ml delete mode 100644 tests_native/scalars.re create mode 100644 tests_native/scalars_args.ml delete mode 100644 tests_native/scalars_args.re create mode 100644 tests_native/scalars_input.ml delete mode 100644 tests_native/scalars_input.re create mode 100644 tests_native/skip_directives.ml delete mode 100644 tests_native/skip_directives.re create mode 100644 tests_native/test_shared.ml delete mode 100644 tests_native/test_shared.re create mode 100644 tests_native/typename.ml delete mode 100644 tests_native/typename.re create mode 100644 tests_native/union.ml delete mode 100644 tests_native/union.re create mode 100644 tests_native/union_partial.ml delete mode 100644 tests_native/union_partial.re create mode 100644 tests_native/variant.ml delete mode 100644 tests_native/variant.re diff --git a/.gitattributes b/.gitattributes index c6dae4cf..e22df6cc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ # Hide generated files -tests_bucklescript/**/*.bs.js linguist-generated -tests_bucklescript/__snapshots__/**/* linguist-generated +snapshot_tests/**/*.bs.js linguist-generated +snapshot_tests/__snapshots__/**/* linguist-generated graphql_schema.json linguist-generated package-lock.json linguist-generated pokedex_schema.json linguist-generated diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 55721394..202255b4 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -8,7 +8,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [12.x] + node-version: [16.x] os: [ubuntu-latest] container: @@ -35,20 +35,20 @@ jobs: id: deps-cache with: path: ${{ steps.print_esy_cache.outputs.esy_cache }} - key: ${{ matrix.os }}---${{ hashFiles('**/index.json') }} + key: ${{ matrix.os }}-${{ hashFiles('**/index.json') }} restore-keys: | - ${{ matrix.os }}--- + ${{ matrix.os }}- - name: build run: esy b - - name: test-native + - name: native tests run: | esy b dune runtest -f env: CI: true - - name: test-bucklescript + - name: snapshot tests env: GRAPHQL_CI: true run: | @@ -60,14 +60,14 @@ jobs: uses: actions/upload-artifact@master with: name: ${{ matrix.os }} - path: _build/default/src/bucklescript_bin/bin.exe + path: _build/default/src/bin/bin.exe test_and_build: name: ${{ matrix.os }}/node-${{ matrix.node-version }} runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [12.x] + node-version: [16.x] os: [windows-latest, macOS-latest] steps: @@ -80,7 +80,7 @@ jobs: - name: Install esy run: | - npm install -g esy@0.6.0 + npm install -g esy@0.6.12 - name: Install run: esy install @@ -105,19 +105,23 @@ jobs: env: CI: true - - name: test-bucklescript + - name: npm ci if: runner.os != 'Windows' run: | npm ci --no-optional - esy test env: GRAPHQL_CI: true + - name: snaphot tests + if: runner.os != 'Windows' + run: | + esy test + - name: (only on release) Upload artifacts ${{ matrix.os }} uses: actions/upload-artifact@master with: name: ${{ matrix.os }} - path: _build/default/src/bucklescript_bin/bin.exe + path: _build/default/src/bin/bin.exe publish: needs: [test_and_build, test_and_build_linux] @@ -156,6 +160,8 @@ jobs: run: | mkdir -p bin mv binaries/darwin/bin.exe bin/graphql-ppx-darwin-x64.exe + # this one is checked in the repo, because we don't have CI runners for it + mv binaries/darwin-arm64/bin.exe bin/graphql-ppx-darwin-arm64.exe mv binaries/windows/bin.exe bin/graphql-ppx-win-x64.exe mv binaries/linux/bin.exe bin/graphql-ppx-linux-x64.exe diff --git a/.ocamlformat b/.ocamlformat index e69de29b..5f423348 100644 --- a/.ocamlformat +++ b/.ocamlformat @@ -0,0 +1 @@ +max-indent = 2 diff --git a/binaries/darwin-arm64/bin.exe b/binaries/darwin-arm64/bin.exe new file mode 100755 index 0000000000000000000000000000000000000000..0eef2a84b9983199dfa69a0da9de5782e786d334 GIT binary patch literal 13740468 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�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%0A)P0-;}e&g1OUjbjm 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%0A;@K-|q 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%0A5j0$40MwEeVOPa_2+cg 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∓&pF~D^qA)A$b2)OM;n}VJ(ndl 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

VP6C~w2x@8tWrjK}<^c#gw`z)n2p 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%0A)rHR&qwg!ce@>s+hHskVZ27x`xD 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�@2=aw9#Lr{ACmt9k>$7xEDgS@S|C{)`c77ATaRoMyx|;^^UEmy(WlP>S z%g`Fwn!zSMaby#1knDgI3c_?I~iH3+#Eq~lNFV?92=;4TC9R1D_s zIATYI!wof>SkKcV4K>!u9ob`%X*#*&@%Xj_*xO_ps_$Uhortf6ZcQ3a+mrDfMslao zG($}r%RS%M6Q>z(swZY}M}kR=_eS!p6WObAGy5zivj)lHZs2L`t(=XGx!zQHb9v6- zIiI#~r0u)Gd^7Fd1LiC+-w)>5V15wHbHSVo=J{aG2lL%vew24}-9x*}Y4?8GT}gWn z(q19w-*Rd18AJ8UXD|Ho+#UER?G@49a@u>5_Eyr~M%pW+y;pg^)-&KN0q66yw}tkK zXm2~TzXYrnRv@V!xC6{&jOCdMWd;!Mf^jm-{xyVMm^*CJ$tA-+V21 zM?l+Chlx8z8)|g}`7HSJ>@m(ez?a3%*oZ_!<((vl1wS4(Tq?4+!TAN3igFri8Sm_j zNjFph@9c~nV5rA=XJ`CiL#^PQon3|-s*rbfCXOVwz&ks8j5WxWanFD3eR>a2uL#NO z^EV1h?jY)}@}MU<>vk^!#Y> zo;$`}iZj(?qrA;0zlQatDIU3ZmHG`eSt*_a!->nls|;Dc_4dun*iNyTY5XoaRLdGA8k*$n z2luk5m%lx=TI}IK!}Qrhe|*Bk9%{J+#4D1(Bzrx@)(VfUeUTCmsKR!M4|xmg1F_3- ztcUgef8-M<=FS>>w_$Yc+Bu@Y;7%9Lyd?JGGn5Z;n8aCp?&9+xpA~%8^4Z1b5Fa;f z%04&ofwR(0^`Djx?5E3-?wflKLf7rkwI8}<-Z@NNGg|y+$EJPMk=T&F2Y`0uj+{MK zJLrh;Cojd<&am9Y_5ydanY=a^KLJ^b?{zz}MzIoInpciZFZJ>3jm6_+UmG)X zbITXe2J@2o6XkEDJW8Z`As=Vntg*RvW2*}svc^q8E>6A|KPDUc9DaFb;j8I6)}phw zuk8cSc^hrZUYI**e>3gNePP*=v;kdfK>1F293%N1)?QKTYeXI}IF% z!6r0il^UMk1l8Y}fKMhdN3;Z`CEVA z`P6k&H&C`$Ba=qTW!Zf)nrq3(PYbq0`x(1vQ+Oc!m3!vz1q=F>I0<>neYTTnSN4T# zn()2GTiEh^Jjv2x>%(TVEiTUno5U`&{X82ZJOh*POk-N-!;}`|8{6_O2U(}>Z|0p@&J0f^^$u_c zlf+834a@ECiGnr$$#WmiD4w75JjNa0Z182iqr_71$#q#i*%M#Sx=-Sa8=$)gdgVTh zz%}<)`qXho^jY=;OS{r{CU$n6&DfH{8p7oN&scqA`t&4^JCNqU*8$ikS@U{nzZ>!s zeYysoI;mH|TH|g@FKA!eMq(>c?+ELsBh-^KKS%9+s9)d7)bGgfA`eZEzYaLG3}wxg zNFDS~-?QAEy4|6v2ji>jq_<9-7M1Gfb>|31@3%VX; zGpC}BuW#qsC7Qe8ZRWUR{Qgv@ZUyhY#P7%}MPhQ^G|#CxE z`B$Rn$<=p3 zkM?Fh_hjSsTfSjT>U;8Zz6d=8kIola@0UPsX{(_z3e(YZ%sb@nMjC1hTI91Pn*OAZL9fuF?a24x|g3 zSQC%t-gA5!F!VY#Wv{dGcYCqRd#ddAf*ka2qT%>x4SITeJU%HHL=Q!OK5hd;CUc(H zdmVcP!<1FapZrt#_HR0af&8W3(-w$E-hkA3cuI@5RJ|Q<+cPHe+iV|DVn0VgCPtVQiK7>{sYB ze#wknz8^^&77o4kqV5j#r~*Bbd1;nmtCO;6vhR?8jkXx6gzl*2sNweq`r@$N!&e)ht_lT@1MIx5pQ-rWhx5+ah`u zOkgQc39c&spA}(0Bd*zJ!S#|Kmoo(ZEDPXIF8ryGv%P*D{p=FooMHW6^y4bOo}Hf8 z@juovAB)ZWjelIoScNWmFR~tU+5Z3ItLgt&Aa8^Dish!x?^|=N_d@K>Q<_bH%SCPORI^60Fo^ zZ>|1+E`3Cxd->i@o=(gk{9Tey%p1Q}{^niG{kWUiw|0@3xzPQ~zVU@R-pu!Mp3$P` z$nQ=jjWT`y(dqR!YaYQvc~yl!C^k-TU4vbcwHagnJ6xy^2wKhHwL`=jxB74 z@B+D&8H_`1E9l>F#_7Kq4RMRhcPGED=fkyZ9g%=H}@>(xtDSD z7*E;TqQ{Sa99nslOxonV31en6udG2{F6L}K&+z?Ae76gEZQ$=(#tN4argYc~AszALj3O z`QF9f`xAVBSJ0;1i6GxE=I=mxu=e!D2a$)w2j_sNKeBMbADIt7gkDPyvuts7i{Z2E z33wM>N#SqNm1VuGn4^CUPv1I6MVqo-&a&&+#%6gpyv|KAwk$s|5K9`i=XP|%${D5F zz!8Z(pbyC#EePr-2c7i2%i>=BE{h_{%RKf5b@aO{0{Xca*~vPy7tb1=NjzoE(w%21 z&r*r?p#z!dKr(aiK-w1j=0dM`XubB${n~d9n)?IwLDS=3H}0g3Z0M;{gs=~)b3x~*{+3`c;x2R@V+0|?oQ?> z&bJ63#BLvC985s(vapr17eeL5FgmAnvvAmLdAxz*X_g55%|hoIuRur8M6@j#RM7ykHs=_Ia5T^!&h_aS?V>VqY>B z%lH58FQ4u&Z_ORK?E5Iz-$igADEk@M8_k^O8T{bMB--6<{a@_m-SCr`Zqi*mf6r6v zK@eXv;DhkBlrhtvb_c+dWO!1!Z!5@*=ERmPkWiZKmgv7t80Heh7eSErry%K^oVpFug z-wc1hPO!@T7l-6`bjN6g7WrQME0NpN&>`n|kNV3WOZDmTNPm0s4zTX;L|D=)nh9CKUcjX!gs*psvUSzi6cqAgdJr_pDop z%UtQuwlfyfhQ z;k$-$CN@F8SB(5yj?vpQ`$O8GudC>5z1fR%(c~KGOLASJZMqPME|A!13CV=nEZgm!4L7f z6$f|O3^kuR(<1$O;fnsABVf&n%`Ly}LVO;xlfcg{#Y%Hq#tckTu36C}UcM&IvKc5ncX*I;9V zc`Pv#d4Jvs+O*!Gx5I9zXKdPUQ|zT?pL%}}14HvTK14p%6K_9C-A@Duj#FJxYl!un0-vf31%y*NFOA$#%J za+$|Iq#g04w4DnY7cnv};FpXGS+B?*v2=2{`K8g!4~8nI-L}TVba?%H+HRn2YaP@U zzS1+`E9wBgO=rN@AAHN&z?T8t6J-3s$29aRhy6p)sh;-ZY;7N?ox@w9=| zS?P9;(d{Rmq5Wf5d|&RqF=9JCAN~=!yP!eOzkZ$hkKdk5+E3m8mhloa4keByHqNJu z7id{FI)m&ha~}0P1+=r5cEl$OZs!{O73QGkOkxbPi77rzOtGI4S+JYf_(mh@ql5Ua z10$mgW_35dEGLgPwoho zJLg^gI+dJpSjc;&Pwfm^H+D8=Ok^Ip3ON#|ADzQ~F?o-IHHW9$jYNs7ycA(!hu* z_>V8rulRDTIU3e`FVH@Y@GlkqoyoVzg@=OY_8>g)+~I z9*Y;*&$h9M{qo2{&Na$7odSPlj7~-8WPDD;-;}X=gz*@U47%;$o@4lbjJ_nMb(@{> z&-hEC?WXs}c@{DLvKW6kjK7}9sOLHdF;1V1oDipahF{iu*tfthy-x^!9fx0waydH)k7RF{qJ6pFBM$oG`9Cq?m2UG2kDdAk z@=5}qLwqFf0BwI|TulpsM-RiJm+0>R_4S@h)?Bs6h^f-%%ixi<-aP!SKs!J@XU2SV zMfQaq0oUWm`Y3wxDdX-5UI_$-YXvj-h$s-BEa#1g54+C;4^XIM@rO@6A2_IN0@I**wmd z3o7CHHke-L>EZb*&+B<^;%Vo(k!O>CpOR&_g6E(^{@>eUpOllaL?12Yt)Mw>###FR zQwREIPh;W&fB(V$SPVXvta;i0Tar_n?m4}_BHjQm)W5dI<1Riwuj#&%Nx!CDy}rux z#WVDp1s#<(tMNDT8B-58Gsduc?AzL`^~#p&d5k^ldR(RXe4R|zymD`Y zN6_Eb7*}^Pu8yL=3Fxof5zk#dE9)z4o&}66_ED%g=*Df`4RvcT&Kh2#=d_ZAYg6@{ zHsuWXcY|NAef;!@f6^CvBp-KL4_fgrZu;+l--G0s)d4x_n4~2q|2!sfto;FTte7i| z85^0;#4q;Z!?P}AUz*=f^6UNtFcf1i@Q+6`W=fjYCi}-s#HLR0gZ20(EB@_D=TC&SXJ{>Fl&r902E0?1)vi8$?U&hQ7TW`1YF3%j^ct6aAT4nAZ~4qTl?w9gs|h%mep=11i=OE+%|~z(@zaV zTq5XvR9w0lh$13jq7_PQOBNvPAp5km{NB&G_grQsnVAUR-yipNl9{>pp65BwdG_Zy z%yCP>Mar)wc&=oQv2=hnn}y&;d?>c;r!NDtf1@S)2eFQ} z>~9FB-P}to*}oXt4U+x72(sTlbAC#=?DtnrNHi7f^Lv}DY5kV97n-Nwh0jB~AUx0r z>{-A*6xc6!VDF@CiQ&M04X|Gg?3V)j2w=ya@UN&!wC#zwnzRnUJ{H*fq1Q>RmeBGj zo0kl9iOxzNt@8UvkiYyk`3!HOYo$xSl3+YklfSO^u!}tm4aMBU?m=n~&w+-vK+|)f zp{>w$Ep)vTc-X_fku8^+Fm{FaH7`AEUSU))il4_J_6xKwJHw!y)!QR`HIk z8=XD8@uJxKBOW{m{Db3(n*z6j5xy(-p5(HNJlYSBvSpDkf-LeMD(|FZ(M;f*34F!C zc0V{RLk{i*K62CE#OM8{HOC<)x~8JHJz+Ai6dP6SebGPnLI)}Eid1++8oUAf-oLmh zP1*Meyu-sg+~BVhGA|jKCo!Od(C6+a2{}24kzDYM0gT^e?8i8e(UJdQ^1V0TiJj|w-;RE8=c%)P zFa5g@#QsD_7kgtnf7hZ5--+L%2w5JCmt1}$csT)H=75)z;N>K;aV~f{1#ixTH_rnv z%1=`<(0l~E%mgp9z>6DRP+;^jmEXOrw~4RDZ`AfSb$sYD=Cy*gk#!cI$yi_uezyl5 zOwk|f9^`NGMf5kh20HX8{-#vkw<{ODY#tOKldHINQF9uPI}# zTEpUsI)=G3135{rP93K$nRz7cfdrs`y*dfOT^@{fofYA@sGQf5g{-u5k=p9f!}#`72Mj>Cu&duLZnk zwhS|$OW_RmG-^J(fy18Eg!ZPU>k{@I&l;KQR73X4IJotdCeEX?aXi4 zbnATI4u84sxv5|h@8r#oi+ZX!2J;)we6EAcvvF`D_SLD9nkbRBp z%QIE%5d3`x{?t0zwp$(dNPgB)*6|qlR5eYk(`xwEZ18%5b?V7F%>lp4zg2LZ@^3u| zejfn8Gr;e3@cS_My%!qjLrhlUI^Y^#^mV4_MP1QD#K$XhEYsiRUS}rrc>y$ZfAHrO z*Qz{Cb${+qbw7F%I_`B!Px`2LbRTCfYbX5SQJyLBD|K(#aCPrH+$;9eKi0s z@gKF`>=k^^rr46d1lPY~kN6n1e^jqmdw%PWPMnn+0%w)PN_daJ=H+kksbEu+AB#=R zp4T?D#7sJ9Pe;;We220}MYE@UGjpy{_VgU!ZzKP0o__R4ZE617z#hw zlJiKd&)cQ^-2%+QBP8EY(VVTHRY0%O-)I-K(F$*nv-Z|g+m{4ySPyU51I;BvbDzK) z@OApe=O>yQ;C~;&8$N)&bq5smMRyoml^JU^QMt6SLf^>aT#Pm;Z0Fls-(>`CO8Z%|VgCBGVaS$k4yG1Z<- zWDgdSTfm;Q_I;Y#yC2)XbM~(NJ7@3O|I6O3X1>z@S;N`he%*FF==(5y{R3SzL_cYV zkAK4bI!+~dHImZ&m5xa3>SzJgQ zrvkfl5U=N7H*K9Nw=?b8q z*Jddnz^CZ38_;7vL67|q+jSGRD?XsZTblb@zO7E)z~3{&WDN2}+mhb}AM4pG$=K_* z56-82a8Fx4xQ*b-@xf_Zp8XRZcla|j5h3p2+p@Ng6L)A~t~d#NC*A#>xWj7Z7i+H^ z`~kKw@ee)k3Fs-$46|h6V#XKPLr*dmF+R?CGh;A+C5Nm=WMQfMYz=@5o4GGC;st16 z89Y#}YpLb0XyH4_nbq|PQ@|1aJ5>``A~@ms!N1Ste)+xR#-~67F8jAyXBQqgfq9+e zzG6n5uj25-uzjB%Hh=v)y?>+0hyUwMe*)eSO+K6sx4XmMFZJfJ`0azo&gvO5KWksu z{vLWksD6pqVWLZX41KiXkNCJfU7~5I;;(h=iRrBI2K0#!@k8Ch+B}Nir`Gn%D}T7H zM{Hz%5|7>4!^m67K7N7xmRjiYgy7oy; zVSi0ye<|B?%{AtO*p?I7U(=!4*LjB8i|nmK*?nwZkgFyE+7;MEPU`$o(G9dtFcG?4 z#l2PRuP)593%0W8CcDsoL>Fs@?>1o*i=CMRO?T(Fv*zD_YRP}bfAK+z@pUKYD$?(< zY18Mpy@3qsi887hk8F2m>?`B<^QgEJ6F?RK#Yrh7HGt_t<4DIIq)HklN-Q^^c)c0 zD?0feVBP~hB!7AjzZ-&W8N61d$R`ye23Oioycv3m;3xLYTsvI(iJxTcBt|Ufy&Pk% z_~LxQzPOXXcXEEV#fO;lub6WiJ_MXQfKktV1(aMTKO(Z;1%M#B*u=7l0&Z{ zk=gMzIqj_>>lK_k{ylIn_UKt()mh)F@Rd_nrd57*9{e|#b!_Ds!hg?2zbDTjed~GL zPkbl+V|_pTPM?Dw9QPb_r&08>tQUK*QTVGti~t{_$`7+`?wR-mmq9}k_f$UcWt#8B z)vWJn*$9#+u51MR9;v$+2>ty)<-{kcxaS4T=MM70&|A{`b4hOekGQ1&(r>xoQR!p( z{u)MjaQZy1=egeI`jYFfToPBvh6WX{vfq{W_1T!Hqc=5Jy7*A>QRVkiy13l)8|K@_ z&bFV^3wpSkJ#Y+qb$G<*`0JtFJl-q09OAoIeY_ekwsZC3Y8LU#HvA%t)@mQZ-sKtM zBc7yv_O|X=H^!2Y>+r{Qzz*?`ZyKcJWUXy;hxn7$^cH`TZ?o-B`U2fi~h{MdYjOf z$X2cUeaw4xJ#2QKQFJ-aw{!3OGn>2Fxp#3jeInfdF82@To?t$d%RJ}8hfcwR!(fCa|8;d#fFTwid*(sT@M4`r@A(Kku7H+TY_#+qMTgXnD7}Y$ zn;!)yf8sf9*4x&}>*zZdo(mX#y@!OZH*i(XPq1?V+5b`I@f+qLyj^Oy#Xnw)p6r3o zh#sQW*c<1paVpPgj}NWj8ESvmxm5f@c$S;rqC2;n48A9^eBi&Cb7@&Zo0#&mnMQgZv?})O8*9zT7&1M9QzP>|og9lv}_@b}n%!Eulubl~}4M7h5>{Qj`#*B=e@V}*U+CO#bY z{kRy<_lAFO!!NlY<2qY;rN!_r19}twh3r*z*J5|c=S|R{eD3T^>TT|W-XpC?nvUyu ztUL^A!)s3A4>&>Hx6qs93?yfh3qy>ph>wlOwD9t8;}Kp-BUpq@F5(Ka<*1`edT_9*0++=!R_%KP$+(-tzf)GHVKyvaXRaM)+a8%U2KR;N3^pE~<;8Aek_j2H{b;CmH z%7s@L%&!rCqG5@`FZ>I}cjT;@_gAT9q-`2QP+_VQe zd?Na!z+vSiTxsj>nKhfcbu9MzkLmC}-nk)+#;WOy6z*r;1dT<^{mb{LxcO}6Bz{+! z6KDJQE1NI3d2nXUtIR3dnk0hbbm(U~bdrJ$xCI*f6usjCXzT@OtOQAAgw@V;#p>jl3Si_z>f0#%mc17~>edjHi&(eS-7u!uZ~gY`%6b{;MzJ zjPwEW4&D`sj~&r*$wI5nUH{JEVXQ^CEYh)*Kl1!8F`i!#&X>dByVijZK01InF}(T( z@khgxMF;%P0DNPGE|qs8y6c4djJ(n45-;Fub=^nooX;NPT5+#c4>tK;WA!4QA$;9+ zFLA_N_ATq!*vIOB+~l!ppaw&8V(;M(@Ec`A%x99VUYW&r+wrFsD}Iv8JEV8g0b&C> z&;2uUfDSeFIGg8gGzI0k4^w&WCvv@kFWqiaa@|kDbKYeSox*qW9`?Cn z6FaLj5JfIXKazWaP3)j7`0wIxTeZwt=;&^Abm>Vt7=9&wp4>R}l-kB4_tS$(e7=vu zlO>mCVuFP~>18#EeW&XFcz-kV8Ed#h{P~{m*m;q>J1D;+QXQ^;ad~`5eg|hI_*RwY zSb34aw&H>yxkLOw;ORS^GcU0fg4a>j;C+0FcL9eN+1L~Kwi0JKL!4zWewa)?53F4L z`SWR2M|zbt9_i!hwXYU>D0zMH=jD9nQlGi@t)b>Z;4WjF1>8z@dvnY&p9){%{5jy4 z{63}sA*V$q=Z?2}XSI@pJpevTZjC=_S*ke@eysBDsv3_BhA)#_;~!t1U=GH&(vLOl z%lc)pcKz|Kyfz5X7)2|2&(rw#U#DN$cKrKKUTzfq0{WWykCKa3DoXBvPUSd8HtNA$Fiq)jB zmg8AViPdDI!>L%!z^6aof9c92x8A<_$fcJaQZbwSETbqj-WxbbU*Hd1Y5Ufo$Gwq& zy~6#o?YLnrz4Rr1xR)A>jOmbxCBuE1I`;tZICV zCGb}{7fzo;=MnzKoYi@(%(s8B(XbQPKLV!5fnD<8*6{gm;64Q0du_NSSNS!5^C^2l za+P1>cRE*jCBIJv?o~}G<|^ps72vJ`?xA`wM1lJtaDS&Axbs-cdsxf7hu0m+P-~g7 zZyCLn1@25M( zMQt2NUP}VsE#$j0U|PuMa-P}xAl!V&=X=4;F>vz~GD!G@#MW2x8+1Ou=zOcVU)LVK z&hM!`^dD;KWWE7zYQW8F;AU6{aB~#g5F2l^r-ar|yt4T7Etjo4ayNTsID1BDU1FFg z*)wO{Y5VeRUT821O=kfYap*jHaE}-@!s^YKgABPJ+7Wps{4xRBXaP2nuO9-N!lU-z z^|JD$B&YfnV2wooinlj)Hfw;j8d#;yeQ*b0-3zSsp?xPhlLJ1hHH(UvWnbD>emqgjV+ zmi~Po@?P{BWD#^IuygN6z}*UMimo-T%#zQdSG~$_$(vPrRSmz@{Y_ru_safjN;OwP zi!VcquRx2!BX^)bmGNwm#gg06j2^RtXYc0O!iR@;fDXgyvhQH4k6;d?ADbYH@oC0O z7_VZyi18oTBfS~_hcT0}gs~@M7shnPzu-sg#`p$fSH>SOrZMI*Ze;wFOY9lp_rZOs zCGSc;KLg+Y&*kWw!@L33+`l-#uj+4UkiU0^d(g3p0>CeHy#{}LGdO4-!u~`z8G>%2 z)}-31RjJ_n39Ly$BeG)vxChr`!8JKfe#vnf3$C@?!}ntG|B^WKHgG*2T;Bq&cjRK@ zVH-$2h3HuL@KsNlFYxI}Pnns-s0xVTHeZPSi{H73=gV{DdHB?^hdm}6i5zDma68Yt z4ZrhE_?_>>@7w|%OW(r%(4ypB+yfsLJ6gv!Tiwhr!S?Aix|L67FFu`pmQRPCNCTBm zCkx$db6RR8>s}*u?vnGPX+n764rpTM0Ce3U_#-bzCW2e3kvp0PPvL#Xu0s~^eyP8! znsj<8&oGrv&Tm-{Wm^gE^YP(oe8}Fg1s?_YJPUN()RtYj))V2hNs)v&X>M{C03Qgmu4^b$=S%soY-H zSZa-5aenc^dlcNA6x^|w8rfIUhqM_Swy>{u zu&;K4!(HI86&&schqAw9omvG~g>7-A_Eiw>ZXaaTb=}JNU+g1`&aJ)yLa)jfXy<#2 ze_O}z&{wURhxN>X_gQ}Bp~~0r9p>D|hsV5S?LM2_wjSX!-o2Z53yjkD{F~VEoJF60 zG53e~3EJ@=-?{hPo{uk#o}{s#f89Ag|KFXc{~2gK-+*@ruQ?YyP}86OmHixjzwEg^ z_;vRZ>)3^Fx0QI&Yv5)%IaJH=WmJi;0i3sZlE?>3rl&zl%|7U79lh=O+&Sad;eY3_ zKBdUC)nW7cChL1A_pdmQ`&WRMCFgPf67GNOJnnyt`)8lW{j<4$(s|r3I>lYi{g$69 zynn^C9cS~nB#&Qm4W=8mewu67R<>9^*cl}*Q~E0Cd{=bxNcBtghqB$u4_gdx6F=Q2}b%Nt|cDw)VO}gC9&>@86V;*s*l&Tq)k zN}tL#hwo-{-O8ol_znXQTV0S;47P+fZZfMcK(+9G;GOq>3i@fpVe}&=&ot##-E`ZA4N9? zHw`^#eIho)Qg_c!GdX+2otW_y`Ce~+(gXdN`{kbFykG2?DtwLAyniC^9vyECU%~r6 zK!*@JZ8CFG{U?xDr;xA7=orCvTEzxC&jLEu^~Koik?M5Sv7-3jKjmpR?zvU?I%TYIzmBl5L#4KuTa91?U4>C;imoD6gr zgSBq5HXvvbyNP-c=mQ2dz)PNKxQxW|BIDA8aM!c?kIPe-PeTnR4aC~ui5M5chsL;-c{ug z&S9@h?c86WnasMLR^A|Z@q!ojn3KELjQ*o*<}_{|0XG3~B|3K*`rI(+brx%Tb&@gs z8rEFayB3}XZ3MP*%}q3hzsGv_;rHO9=!EFG;PnuAZPs{2&lkO?`gc}daVh$t)Pd>T z;t#>C^zfQ!zyrXo^zfPlUrGQb&iFPbqf_hLVzGzBo)f2qgDRJUwURy- z6T#~w@QNP;o@w>1kRD1Cz$?1^;hD?Rt(YJ<`B$eHv9tjeZ|kJ+f-VSb`+#kphRvp# zinpxZi6fzzM&=>?O^9>)BnKoLnhEQjSYMizrt;bHfJJ&IYI@lP&3p{as9r75%phoH z55JLK8H0f>8`yGy4gXdBs_ZW2Wy$!&fUO^}^@V0eLNf!Q8SEE)k;n*W=4xn0;#WHN zrW~4?56$2YuFuR(Rk=1xp&7}w*#>?_LNns?Z3I7WfuC43v%l2tZC_}ub4!iw$7{rn zW)9kyM~)-;H^2gY4Q73F8_|`R*AD7YB*&cmPM_p=PU1H@ztirIQQw-?UFDby?x(t3 z=2Ya=G}d4mvT8qT@&I&zx{!NS(wf_GmhI6PxWz=pwjQLgh{tTwv8ouvX(buvX=))e_E+ zxrXy&dcv=_yL;?IE*A-1OMK)n_#K1!v*$O~o)tfQ32UTj8d>7d^aR!tpHKaQ;@;*& z_Uc^LW*+Mj4}Qh(BEA&jT%5Pu#T37V<~0Saq4ip&&sqK??e}!&7>5h+C&6O_D)*~4 z%@qHq_>+F#KdrJK&lfq9KD^rA-KP+oO@u`k@_}M zVlT^Jm8nw2SA>OPv?1Pe$mW6 zMdz$9Exy=nL6>V}pGuyGuB8Ppew7oq(SpC9-~n3Mjjks>4s|TA7ktAF-@wNNj2AgD z_JnV2Vr^FCcXE1~yaQ~l5#)r^C&S)HODCMp7{)t=AOD%TRN^ODvf1)+DjjeF{jY4C zRq@Z%4fy;pn9o@g8(aJjy?(cS~op+9&QNIoyUhC^OMZxu2;BxXH zHEq_}{?wne&G&sha$T2yCTG9|=XWa_SUbwe_sxwmk1FP&YdIbXn@7c*pd5VGU3z3K zXCA5-F*s>KPw=28$=kOlDiqD&Y1 zDss7`%+sJ~z}~wRKh(YDtUjcgCRZ@G2>s>!t(q_?13)# z0-wnCe(cfy>``R9e^tp9O15V~I|HGe&A_uc`&x(pY)XzTmlJ?X-t|BjZgXb@_3Pu^ z;zN6b`A6v2M?bgAl~1jTxrk5Al0ze`Gf?1#HOwW_z8=6FO6i3rc?zmumd!WrPbCML z&+dnRmt&W>!N2@1_Oj()42|a$PO^ONx+dpk=BsO0wNLS5XhFp@vpr7!Zyor?cJc@J z(rO`}PxI;0U1u^n^X?Z|_bTKdys&;1I%O~q$}I^!^ZRYy9igt;za=M5)m0w=S5jBq z_T62acaP@X;b)Z`z<%A&wT~+sJF9?eH-G<_aTV82{@%gW!qv>x#MQ{PohuW2HG}JK z{QVV|)M#zv`U}@qt}R?&a(%{g=((2uIadQ$y?n;CnQIf*2(H;&8@QyFNOZW;vhE=` zDI}j}5;l_fDs?aEm%vMe9t7l7#5+9*s#z0wv44>3N{1Ksib6xrmT;a(XK!FX`%$fn z$FkE}?zC&(^Xbut+|d1YqpweVNZtF%a{TbXcZ&1Iq{c}66Bu=Y9B4vhZ#FVq@++kl zZznP}7~Z$xL#s8-(P!!v_IMS0+<}jNRC{dM*OU}{zxEb5d9T3vkjA&ocM5N{VO>Ly zrw+rK=)fwyg*C6mF09Y=xXniF07*`c1pdIlv<|fhXZ-cB%r#kc}YhU&u&S$~%NC)6~6L@r=97Tur+O&|@A~DET>{{{l z={{bs0!xHGUj7->4N3pdM)2DLe$~3OuA2WmWOOzUAs|CS@G|&mFKh2*r_;AF zsRL`64;&(kvVo-u-8&eTT=KVsr>$Te1>*3WoLruvOkoDvL`qep|)&C0Sf^H7XpC)!}{l2>2 zs(D=|{0y5!!CmUH^5DqXQfpY{He11oz`YB7>lNr%dQI(yFX&!Vd*F9g&ctwYZxH>~ zFn{R-I=L*(+zZ^=mp2ZWIS)n7XYg+>xyGrH8UsH%gdTj9OX-ZwolM}gdI1n;y$3z` zBzQc9-$VHFZuat?1Uo)j%$dLJ8TFMPGPXU;&0# znR_zx7(|c4S8ZPX5_=E70r`EYmfry0HV2$`)c&~#yj})Q59obi+X{u`Z_R|3W>WJc z`N+E0)oO4Wp=TUDtW!dI>CBtJ*#N*2Ajd#_kXgVc{zsu*@jYrisnkd_JTrl_GjM7>2|BDl3C~q@WZMp<#Ovk!5bgh32CVJ* zzwqn%*HwAU{=g>wuUv4~R!{2X=t=)UFd6D@?JX^rqPuZDwgHzGzRSpictZYnbc%dn)XAd>Jw~{lU&QgGurDk^ld*U(8 z2iEpeeBcTA_~Yz}MfmXM_p)ks)xMbTwrnZX-RaPe^d855^``V4--_JSK8W{$xji3*(g}($F?WKegY3H&_MMW261M?o z(mPJ`%lDzZ<)hISiTN^nO>(QMz?0Znq7TU4R5uhWG_b%b`8iS8^cnJ2|rJx5R6vW~Wth?sdjw#-A`wWW0-U0%K3cV#W{1Yx!@+ zM;ZT%aXjO98Iu|BW&AUFEq62ima&Mjgz-C!H!^;U@g!&R+|Ia#@m9u{8OJluVjRbK zE8`f(fsCUW50LL(z_^~#%lH$<8ySljuV=i0@mj_##u1DMsWTeR_$uSoj1w8JVjRMF z1>+aw?+;~M$#^N_ZhGMkX8b#&h7x+n%k$wU12+0@d8d^{G zPK@{CUx+$C?24%0FFz9f`)AJszF%E~4V4ugzMr4R^MAtg*Ti`KHd#s>q)<^7X+LRg6>rrCZ(z93c^j=3-4(YEVx)yR)@*$=o9xx7hb~Ew}8R%Qlm|@<8JiE`9`zpR$+)epicgIE1 zqp+pGkD2{_&j0Nb+E@CU?8iL(JFB_>T>BWsvz{yL`}KR<>-+gt-sYRYj{-vC6JPN<1Ci6gxUoB?eJN+BE7ah^+--uoq-oLRBxg@_2@82l#L@l540-e&oz9g;k1oJ+` zD0z>O=Fg8p^@w)(^u^G9r27|W_=EWz>)&2KTkx*dd>4F0`>dn#xDu<6l5ck9>6%zUdgx?|mN6e-NMd_wDDOi@x-I?!WCk?!S%uZ#a+pZ{YsRV&LZo*wexL z_?zH=4Sh^|#CZPi=zV;y&rfCk|GxO#m z+jCv-6=~@IdcADEs`0glI*<^25rfhF=CU=uQfz!(K^_Qlc6$+Zn&jrZhdfa}aQL(K z2~H>r?O|F?jYBE&Mdcvj^N}1R;<)6(wwr@QPF7sV89lF{dnUO?*}Yy|HB-T%&_pA4 z6}gi5A-yWUPS1JWcTZ=$%)BHnY_vJ7uT@Pdyy3ngw3&#byhX!$bo~*(T>&n zBgATbm2OW+tai2dlF2hUZm;tw<`~h}XUmXz%oEyl`Z^C}y)#)OIpd%w<6DgBjL)CP zy5j>+_vm#$2RR^l*heq2`2=wosUvEIjvd;WXcXyQFSYp8OUtB}W@62ME*JgBWt#L! zmcD7|Fls#{4mO%KnD}2t-V^LUtGAYQMqppwB{=vSx*>i>l^eW`5g%guR<8bh_dTv= zuCKX1=d%Vb^q2I{7&mi0%HMu2$xptF|3Bec&-F3aI#5vx-rj&qJ~-r7Z8lPWQSmo&^8Rk+>DAtD<>~#L z&l)|(@Oj57KR=aTb)=6$uVtyRaWDG3I{793_w383pZtrwZ$abr>g-RcpZYQHBMw+2 zxk9pcHH|cKUgY}%XA9@E$o}EC58J<$7*g1&C8ceNE8tIoH3*EPGH-gWphReyzN-Qb)&q>$cqr8la4+6sK+W!>y^ ztl;-zvq&za#_0;?E&Uo_Vc$HF6Pn{Y+(ldj|GbK`kvAcICnU!==K^9s#0Rb>J|H>1 zPXedNjLY!fYuWG)_rA-$#PZqGagHpg=3Yg6^M{cS?tSz9TI!WtE<65Tp?aSo*8>^g z5t{IqX2q*MOcMX^!G29;zxHCks=Z@eW9=Py&}-l^qCBy2y5ru{8IQ9La&~wyT~`o0 zp31r=HMz_^(6!{mr|`QJV37I*Ia6F>PLhwA28{YF)wjTZgtJurt8)_684T;eR~;~) z09N5yD(8V*JGGzfT)QY|srpxt|IiP6JUG`*pQZW|YqzfK3Om;>v1U3rXk%yFu(tyH z6ReZu2+u$UDfp3B;&&|^YUdM@10i*xLH52sLO)gDP7H|~SAs9eDO?JEB#xrvI0xOt zMd1l9)-pRQQN>FocU0<0moxtYV~E`&EV1U=4y@r!;FuORe-CkEwSLTBa@gc7NAxFf z*WZk14RsE8f~Mu{Br}DzG+3Kt*5*m{=DkD685qF%W32Q3T>hs1=NWt;2Z<}a!8}#p zzn$cl;#aH$kJ1lXYABusZt0yn&xmX21?-aRAbBj=#7X zC2QXV{Mp3ukatRl_&xB)+P}x{Ii2ws>$8(Jq2GW7OQFRdOX=yMXrSC}?q-d2zA?Ek zoW0lIOa>O!ONU&|6zHH6bDDvy?_|?K0(2n!T5_Jc0EgB|g7Q9mTbi$TbdX*A{vQx%&IR4k9lG|M)jhUPT$u)!SUL5{FF!k zdT#!?Z}-Ii&-A3p7cC+o8aUS#gE=JzS{iv-_QF`mC3Jvij~Veik0asPYv z{X$z(n|qVQb?j%zSqfLN#?hYtihaL6udfllCU%X`pzO~l@Gqzs7d%w^{3o&B;%(o} zI_Y%_zRnOAD1lbR*Y9#!Jv_!;h|hqWj3ul=AHJu4uV_CsE_T`~@$=I6{q;@AKi-G@ zJA8Ro4$RX;{$w0yep1&cw!w)Dyqu?M$KCY)#g{No_6>VSQ*35*K&w~5M)nT#L?0rb$L@>BJo_`xh%&{V@BPfz0}lSiK5{We zJC`phoZiCd!LYxNwBGMPiy`aX&VK3>gZ5EL+{v-`@`n{P>k;<$N2uC z9nqhEw|&3%XG`2h(=zh8D3|$2%q9yNuX6OEAAW0&! z2X*czId+_1n{4iZAJ@Q-Q?jh{Ya8LiP4Hnkw^sZYa*msh)2y&eLcc#uTU%Tsc#t`NyK3a`W&5wiEK2qMt z*T{(rZJhGFP&mtyL-c}g3}<$a7;vW9I+d%Ydki>#2%KMMoI9NF0%sHVt9W`ioW^;= zxh69@oUYCeoZC)EU(YMW-`BEe(|xqbQqsIK7c)3az?>x_*|4enQPnO>{I8A3p+=X zn0utUKHtoOEMHqG{%84C+t|`K;#+I7qSJX(qOTFJ&>9PD?fR4WKIxf-%y!kh0bXM5-Q9Pd&R7g=Um$ye z^@eYPpQgb^`cG{9==;KDRRXq_dOr4{#D66JTh4V?F$m^62KgzyT&-A6qB{4CSVZ~= zt_rTrTwRIBq;rh}_m;0F&fDcpZ68t!fT{RwdYA@92hcyc77NaZf$4~c=kILhbl%{9D{^$8RGwN=uoS)F_=oXL_FbNpDNy zM}CPPx&MOihP9iI3=-ZQ_hJq?x$7jZ+OgR)?e57 zJANGSrTlM}ytZT-_>%K)7J)Cx4|sJq^9Nsh!PoebJiC^~Ra5uR&XxO-K_Vk1))cK* z;O=4U0cdS^9wW~Ze$n#nw)ol%zU}~DvhK4qz6$M{3u0We!Pjc~U>s-OC-Bk8*;nr( zPfya5`dv4$V-sZJqj@huo!#ai>4^_H3u|pWGytpTSbV`AKYV~p>AZa+W7 zeo^w(uy}m6MYFl&BP*WR=yGh>C#ZvoP`ioVn;OCobuRK|bm`5m9238dPsJ^${W+H9 zYB&b{9!IZ~bFZF&{-1>IGqI5~bJJ9;@R>9t@N_r);MB1#>P;UW>e%jsesGot=0pD? z&xHO*2l=z93-m4UrkJC#7blgaG~9&E=*4E-#k<#)U1rCo*#Cjp^7{0*PiIu6TYW1n zc`A8H3JjP9xe3*{LCYy|5X4 zo12Cxee9RO5J`{j!XEq~bKl8+iKHjIy)C+bd|e<0Xy;&(yV(QSs%<4zaPG zVGakOZHM+Yp>wc?D#pMX-G$yE^`x2~zviZwgT;SU?~(VBI}?mf4a=d$Drgbi!*@1D z=&HGrHHgUkizGOt637AACH;JXKr_dI;WEE!YANLo0{CmDagn@`oezqd=d}ada@r-d! zz6Sie!fagKQ%=>7+c5q9Tcq8|K>Fpw&l~n*Djx~$co6Pt=jrQDnDo{xQN83b^?Dm z?<@rVjZyg4LTvq5eCdaOj?DKe{~2~aI1P^D9NrrJ`wwmV%HfM)_y0lLU+{eKgYLke zyVE}N>?iO_70V>wsuX(NMLc#g@@o;a+FG1#PC<`T{kV%8k4#0MQ$FL8!R9pNSxs5z zhUu)?Yw*b#$h4L466x<&Osw_=Xe5jHi}03b*u&eUcN;pV@V>X9+sd_wioi9 zQv-|)l^WpZm_sJ#si_)ZbkSbuqN)xUnQC~i3h5J}`|_z6M`I_+h4M)*R4YED_2lgY z_jAld&+LVsN!||mNmr>{hXicEc=laf5BfIXBa(iOV&ClNIg7J%P04GKSdY$ap;t>_ z8_(#$Gghy?QsuI2X#Ylh zPgUL0D&K(?f6G|OXz2l#T|Juk*^VLT8OX)S(17Acg_iDA$Xcj9Sw=0_0M-;7OCSEI z`cwXuN`KP(@>ce_*j5km9%WA=V>NFJ$pct>h2mv9!H3wB_rN=qJ&8=c4_crJW}uX3 z?Et6ZN0EAD=|BDiwDu%4rt%QISC|W-vB#jV3TSIAbR<3%au9uT=5q2jE2l&9LHF_5 zjQoD~+1IX`AAs)z=V(jqCRapklLNe~;P$pQl^49fZsR@Dep|UE`hJyu{2}}zY`^}_ zKHn?S^B2T;|4+leZ%0qM?F+G2pc`nRJw0i$qbGG%dJ=YA`W;-7J39|Q%>n%dCf;zd)-@M3Hv&7Z-oq}w}SLWeNJcxdU+n6G14>G6kmk$ zJ+M9#43}9db|>p4{koV$7OEwGQvR^-CuKT!O`lAr*_NiF+m*}lL zTi`fjG`7b*`ET3_$I$`KmVh*wZ&x-IJ5jT zVf1!sP`^gt*1ntP!I{p<3GUaZdL>l#R=pCmFK2!NIUdq0cDmVzI3w)|f9I`|XVq_45;Q$_6fXh1kH0qt!I6=^K(?_8BxPcF`>GpzK{>)AsI4H#{dn`5S#B3;Txp z8=05rWXjhF?Aq7(06hOei|6}VYjYi*KMS0%2R}(ADNgOrH1HGCJ{}->6)to9ZKpGC z0T03pAJllz^gxcC>f3@Z;2`tYdf~6YLxh}X^u&HjPpoBMY+_G1xv}h#ZRkS5w(T(J z^J-vJwk1WDPpY0hUGzEDJ_drw(WoH&xX>~+eZkj@Nk*Q?jt^#WmJt5ch3w4=KHm;rz0mkz^z{3Y_a*!-XCvK;E_s`_ zE$qEe!8ygwUSO|uY%k0B4I>=DaDr z>u=+|lK=hCGU95S>mhxcKIQ*k;dhz2HqV@uV)t$$cR+eKNqqx_M}e*U{uIBLTw%%m zZ-Lk0XL=K3RP{+K#J0-62>TyAH*<#fe{8?ZYU(eup-;&>=)?G86gr&{gAV>cKhtP* z_UrJv^Dz5le2nK8#Q1)GjOSOznBR|d-8ed}lh*|;OveA9Y~E^1R(aZw7t}|L7trT4 zIDV@AP;$oDFQBas#R@8}jOc^vP^_SFupKMtEBN{r`p2i) z{Yz}VDLk^;FouWoy@~Aq7Y0KA(7E{Z#<1RF*%Jzv;8=KV9s6JE2ZDQ*N7Wl$S17$v z{3>Eo&>I0?uv_&;c%1o1^1sEiA7u`AF^9Xu=1@wkLgm}D*MoHXdac{H$+xHWNBR#Q zPhSg&FeBH-%)Ji$FPkbLpPC{pU2Rbbj{B~Z7X|I%|+;{W$3EU zqc<&LFG;+5H}ziPCmILs?B>34$cNqBBRN`o`2Bv-V_6Ta$36xRTo`Zn&RpBs(PJy1 zf#9Ae62nc1M#nba8^u}_@a{3tsFfd*p!^X@@aZeLuHkx!>rJjbT)oj3F5y!CB5?CK zbf^49o4m@N9nbuw7B85#a|c`eJ-D8P*hPJW*oFU4em51nm}#Uo%!Iy+flc`|3of$z zsk>@EI}&A&+OQ=7o5WuPKF#MpMQ6GXx)(o(nxnm@b$!oeP1Bq;6(3sonyMbCtf|5Y zYpQfz*7QN*lm}VYV1MUFtm`_~6@RCH_1e@BJ(lwW>bKBK{scO!tgEjBuzxcCbcXT; z0_VgsJ0I8P+mib-30||Jkv{p*?n}_$Le?W<&+0W@o!+iui|-cNg0s9SiHtx zP<4Z2o8Hm^oGbt*Dj!I%eT!v#mU7;ds@=-QZf8I1+Aa96I-j&%yM0X;$8PsPpQ$CB z#R%OWq&8Q26WjqzZ?L9!vLD`JU1yiYneVI#txwwke4lFgYSTh;p0K@v?>Yy*?j3;d zR^U^)jKDY9aEJH`J;WcBf4Vj_cMkuwKcc)|lMy1XB@bJ2VU%wgp46^yx*#JY&bAde zPR<|c@q`#E%E#+H%)WmO42R$pl0qc%msb2Y&;AOIwI<6vq65`4JL)k;=A!_+aRD2nK zru<*Y9;l=j@iBXUz5gNKI3!9!7|40Gya@Wa$kPR_*Zz=j~U-! zoX05V&qkA%x5xOt{%G|3yZ$5k_rvYypNqZuSXX2RFhtA8xg^H?d!EPp@r$Jo2!DS& z`oQ-$op(Go^1jON84~x=dhqMek;G%sg{^vDc&f^qfyUa6$8tW^bLd~~<;`s486!Pb zJT?w`jHC~iLxbV^>h@021481b2@G3@YXwZFq-<)H{K5FPsF zenyexmT22r_`xK@&f&M^yyUSeKO?%ErK<0u_A`EpPQkgT^dz%wRrr$F zs<*?Nq)u7-c}w2wZ1{a}uE{I#dwL%QdLhq7)(vrdZ`H^%{H}+MDvwFu4khE49*)f? z>&KnW5It-+x?7)Q;=jZo`=nxLTxgvUeT?}?FZC>9zZSo=^w$c$pAElUO&^UDoH-_W ziA&*^5%Ln5>*Z>$6U$N?UPRZQNdEbYGH3F%cJK~~F^0s4vxb<9pg-L!HoY>gK`)TL4&sZPS!T33w{0nSd=5O4JLb>yc+?&!V_x>TZT^uh*;bzt zbfud*fXAPM$A{syd%)!={1jQp%2U9V6YmX-bP)%DzFxo{kn?aPR;F-i`z|=Mpxs{i z=u^}J_BUTb|I_EPyo~%oul6P7U+(Br)yN;o_k9I@P~xIm_ecOoiQtHHs(g#r3=PpW zbT1F$9`r}J%87fV0Bc9&PH*6qGkt>LD1~+=LK6$n4}xtP4adSDI2Ji@3{_`Vi%lc? zudLS$)@w1a1lue@dLT6;?VOX8bEP9Yw;hU2_uZKPUe+hv&XD@6@E%dWU>zd%h$2Vg zZT4vuHbyl%+?U{U^>WS|u=n6Q%%u(Av~7!F%mLfN)ON-5*hFTERj=_2##PYM(~OTW zKE>FV@d-xBV_n3!g)tI;+z>{oQ%U$0@*ZKl6(wpO?p&->+kQ|4V0nc6^*z zn)oCnuS)asJs06~c5G6QvPmUA^Vk<3) z-oP~cebc*oEn2U(_+MQw+uztkJ{|j6_c*{N^+&KteTSMxDVtQz&y-q*9r*8m1;04T zK0^QF+!g!0H}4>7cbFkR+ei%yQ33x zv*Ka&a0-0VlOC|$Lf4EO1j|Ppwr0e|RNsXMz{>&j{8aS(2f>dzXT#+-A7X#&H9N_g z9ddI47k=dWnXK8Y&A@4|+14~~U><9xa{)R7S1NE~fBL2V#0}iZ{8nQB>xmT`Bu@rEGjr3=(L5lTxKntoldh9~G!x$x^AJ82YaVktFprXRoX7W> zM|XQ3=K=?D>~xQPzlOiPKAR(Dezu=E{G9b<@}^(1_1;EoRq=W09u>N-@)~sJmsqdx zIxzBD($S;R7jYru({JG--kbhIu8;Y>_$cx5`5hl0>$CxyA5YIrb-pa;#Oy!Nj-2db z#Q~>5Kbv@t*wYWQhm_7?`(5yxIA_BItknWt4ebz&uLH4_yn6 zRnGz&?>D0(tdY-{-+XXW0B#C55`P9S#BY5ovdGJ^;rwZo=Lc?*ephzfN5?9N3rjAm z`18>>g7b^-*7Y~% zz~^$A|GyHg`JaW~MSiinhIpK{pTgEfY}zT756mY%u&Jzz_JK{)J}~;JOt;r%vgq#Y zA?eLm3vC!#nWpBm7lN0sc)zSmcs`@#I13GFem#wI2*pPyIRfFmL%RUSy^L8#`8!GSd0ONP*@A=A}y)9c?`$z%%aS z8R*k*7V?Z1=!BSkK=K$0!=CXe&!{d-Fz54~er_W&vKk&0{MlplVp+g%q&HkLxEfr3 z|A_m08D9?}4%*3H>owThsvjQse_gMuP3xXf?bd(zBGiBQx2#QZ{L<>2K;9|!AJ0Kc z!Sx?y%*oAlKlVQKSyaH^LG>T-(JWQ}L5`4b0q69I{UI@#A*^3i+uO$Rb)%{OKvv87 za<6KbY+pj|h@ko>=uFo?q2u}@^cJIjqfa# zdChP&%*aA!_CMy}(3$jIe8pF$}HBhw#{&n6o)zkQ8Xl^Vp zO8w<-_LuBy$@fNI#4%^F4q~SsXI@fQ z${APaPW{bi-N1`3l7TL=G{N>2)^!f?6~52>irsP#@O!S7=FG)Jj-@~Wcl2jJJ-}z==gMc_KX_&-vHw7>E4g8BBDwJFmGC^) z=KY-i7oS#Hh0b^@qvWxUXS{`R9AkIJF^t>r1CC}~#aO^t#^_}n#dsrQ665uZ+p%4* zW!%U(f^jk9aK=fD(c++wGw*2MzsEe~d-~w3zA5KY-!+Zehsg2sq>wmYhwHlvlFq-r zt2VLS`Yv?QHuYVvLE|&BuXS|MQ+xj3)OT(0wyp149~Zm6>uPL{XzNxSqYq$#y{?Ww zCCncCe^KA{2b#h0q&f!6Pc&4l+(o59|R*au$d|1pw*$CqIFMvl1zG|^!RG))f>cfaZOzUjp!#ixRv zmCiXhZ`O$p5AFU4It-V?^F3*m@AG*XFu*vFm#m%akd`p|l>k2N(*RXx+mK@&X*huJ(+NbWS$>9AV z{0+L%@2%v$xA7dyr|t>ysY@Q~O!RI!Z(aM;XM@{_KK14iA-*o{Q&+kpe!%(g1MwXf z1o_o>;8&M3qO|`DczvztnNw{4SGZsO74(aw{A-*VvBuWOuzercZUMGO*+0TVWluH3 z*Axxeyt5R$Zz3=*!1j{d6PV>@78vf&auX4 zN!<53Rc~1a?LCPuJ`=lY7P3zAYRcG~OZZ#jYQj5LgR9lUiCZS**foX7Vt*!cX3|Pb&kKQg?X#_%)i{3 z&!bV+;52j4d8EO3&qdZbcn5bK!}|>(cvpGu!1fe5BEk9KlU(>l;_VvOrt2NwPAPM@ z>YguidXs&NxyRa@PXNQ+;8FY@^H}3xII6KDAAx>G))}VQ|KiW>OTU|m;8V`I@5`F$ z+V6hgI{`Y7bDR1zZ(Soe1{#$fu>)A2R(_-VJ?y|QvJ=0Es!uIJr)Ezy;uC4XCxY!) zzc_!eeYU%+=8_J;aSw1vF7YAWCH0)aG?9x=C3##zZ`#K<7Z@VuakbnK;`3vV*Biv| zby))&5T8i8yR~rZeWx=*7b~H z=dEL$%@|D|n;PT$OZM1$YT-AJA9qir|37nx6&LzyZDc*)8)JTdA!j)nd{@M{e|?Pm zvtrzz8RPq|F}_c+>uS!%oebhVXU~?47N7rp0(~oN{GPpE$F1C!%(8h~ogGiqajU7+ zBD5E`A_jGMe94XN#;p`B2gR)(WZf>~{VHzdvGPP4;RQ{|60u`MzZ>o37sWaGMWf;4 zcX8p%O&3}h9luy~dH$Aoxa3;yPB2#A3~w1F@hD;xDi@7sKR{ha2%mvpNr}D73WAV)EZ&W#L^mZe5&shq;WZ%-~$KP7q-y{!3$+53@c2;M^4Q5{GumP`Y z)RvRj1TAj2RoBdCy1%A=j@Y~EOox*GR&EP4wB3HrF#9>h?onHsc}`(j*M=SF(&B3h ze@@)GGZs$=ANTOR_%yd8hrRGY1#fXb2i}kE=l8dtUu%ro(kk;T>vFdLC+{iQcxEa3 zi9e~Nuce=0*Su%nJ4DY77!Po7wJWvZAbQwZSKGOb`pcONdWrcnOZz$Tg_rE-uqE=*hYU2wCjptU5CJTJsHb>gh(8hMH8#%S~%|3;LWzPVn2*@>G$tI~*HV z)}yhDQFIsYT9Rz!y)*y*5!(lI7AZN%uc9jr2X|YjiQdZROOuS%?r1aJxn;9M=v9ViOD|{7^&bak& zF6j~y6O@?7OnmFgN5I^*k6^Kzewzt)Y^25N!Kw48--nh*mR@Y)%-w1|zLYXs!n7}>AyaxTm%*1gXVs}?o@J!A>L@ECa>_-Zxh#k4>VrTn&# z&s5zk^w5NSxCwgr0D36rZ-pOQcH|c7eEzd%%5Q@Xrt*yS(84t6{uAh6gBN|1+VWe# z-5AzfddW!sfYh+b-(ruSavPNg*`M3t>r$KFhxZwb={)P$<>W%9z>9|vFJj&zOSVGG zC!x(#%=y#+^hoZ9_5+Or@R9Jh^tT;&A^ui!{=Pbss?ND7gI6iOHpCm~{rfXZPvApY z!*liT8tmU0)Z!{QTda6~^>sGQd#Q7xzFlhePI7N6b9otfPw~$8fH%N%-v{2t%gI9o z_E(_)SAl&munz|Ie!woa3O;=0myl89SQR;BS-{f;Si5uIqhjCCck&QxnF;Ps0e=AA z*otgu3ZqduziN$6&4t1@ElKutNGJ737$+ zu40{lOL_t<#fNp$ony{pRB`?fY#!KR$8zyU6f<{&xy#x$VcWXE?F8no`am)F7Uu3@ z?jGh2?)(cHFEHc4aRzhm$=rJo$Hm|e^dfe<6MEjs9@qu0c7m&y;g?Ck6I|CVy`en7 zWAUjAly5`Vaa(e-mnA22y@4L=JJuj_FC%`li?wbYMhuvJc$D>$nzWx?XXl65dsBR% z>8#^1@OqrN9b<0K&bN7u%~$IN*!AD@UFJ#ltd18x0xsIC0mqNxFCZ5{{3yBx+|4>l z&*}y43#|T5;8fR`N`I$i;84Z9OS+n`g2UC|P-;rWzFF+**)u$T1>=11b2kX{zSw(W!9FJc};NzahHa@F5r zLO09S1*Rpy6j5)p*LE|o3}e2sXS2H*MRoDu0=Q3wWCXEvP*p zxZ@dezNzeiIK2m&x~n~q$+}7}1F7qH7+UC#zIzl}(0;55ZfcJb*muy~$qC(+-)df( zl?$qLuZj#y_X2NYzX2@_1b_Hv1EOb$UwaR@=vyATH*(>HlUUakw$7nx+R>SyZAWJU z7u5OqlbU*{I-lh>jSDV@xGrc|2|oxv=QOB3#y@jH4;9Cs4=$dvaWUN0rA-Wf7r2nx zXczCv=3GPR!_W*a>=?ekfN~V&%LEs3-vAdouRWb1Iru7H1Y8^f7pF8XDlDE^!5#_r zpXeHg66id_*~{tsg-vF7I)|CezoV=?0r#w!@lpo>VHO!$E4)t|sKa@l8(qCbdjB00F@$vM4+ zI8ZRJD75oDf@`H70*4WEJaVivZ{@rlp^dk}N9BZERXg<*xM<@qX8o9(nFJ2{!V7k! z+P#RnBJa_oKKLnm7`1Lv=PW(8L{Iz`zZ3uFG4`F}ug&-~kts8IzQilV=99hB3@;Ra zxQ@9sKsO74S#sMXw?%Y{HNY->Q}Tzz=RF!6h#nV=gBIRDnSCWWk-8QW`#*B+_Oe7( zi}@imp?bdIbDe=sAbFJIqtSzniwfqc=cMLQXzKykC&IU9V5LK>0>bc3BGfSQ(P?tPquI67!|OO$hu}Qx|F)m6 z>p_~J*JAdF^!)wV)=ufVenRZ=2?<7CAvVXOx8mPnFFeX#SOZ_X4Ep>4+AZO4MIWWM z{>}fA(|?Hm4$_P2PM+}vw1K`55Zk)ZlU5_XCVfUg3G1SI6+qYGJHq!*?A-h2rY)T+ zgXzDTcTeNFgYt<36VDQTH;d<@y9S2yY?0A<&|OwOG6NmHGwX}~6wrC|qSuM-68!(e ztiwL$@*ty}Jrrp@s$$^#l{L}V!yRKiQ`Sen{|G&DqpkP681pNOF~7gYcz$vC^Vwfx z*k5PQNKL5u-XA05uQ|W**>;u&kw5;)n^tHBP zE`7|W&_5sGJcGr^hzHAzhNsaT%COPSAdjnv{j~7>L%in<`@9&wFZF<8FFp&e*rNNU zw^+WWYQCSxyE8p*Gr;?M5hp6<{rap}-S5`TK38#~tbS$!yt*ecuLsYKLoe9Hv*p~q zso0=NO`XhX#9ao_GiT5ry@8ZmSA+N;_F;F5Z^FyoFJRwe8UaDrwel_a&TWk1 zL)LX8lh6%z;uBiP9$TdK09&Wb#m}Ph0+7E_yQ}R4@&Y3F;K}YAVmnL!#9y$7l-&UC zwcRise9QnJN)|8ARkC=pEsN!xv_}LVoB@%&9o+`JHiAohdA?FZpYPzV83vB13yW-r zqbKjm^#)o85F>!sf0fs^J|h`?d>n-z$2zBAakI6b#2##6uSmY)SzZ-i^AgV%ej4ff z-`d|h@}M1l*XIwcm&b~ijAp&0SMy|iy=p(|wIb#*g+0-V&!iPR>)5B-m&^LAb7Xa| z-o4Jg9PGqGMVD7GZgBq){+>hFLt_8yxb`0Qz+U!1Pw00`^B^aVt$N+FcTb_8N*n|_ z=FFC^POpaz+dCFx|7+gqjFneICb{qL zl-Y4%y*^We`gDWiAU}>@`*AeiYGz;H2lba4Ic5tsq|O7c0MEi>Uc|q#liYvl|EXn-CyC5Fw0CHwhI`6bBq|ydfxxTH8mQ9^1#8gh2(h z&jScntv3W`)SOBkItC(EsRO0p(D8;?XOU>N+VO@UgNRU3;kLH^-k*KWzB%{g-VhM_ z?eqNl$9XMCa`st!?X}ll(_X8l#Q1UKXO|ym32QQ;q<1>ke==*5(|<7v8C)B7zR!9X z{wi~I@zzRT+zcFSO)cGZP))6Sn73+btq6sipF|JWU37c5VGi;l=iP>QX~x|Ka$8o9 zO>&=y{i+;|6Tr2d4dvnZ6gcX>l58B+r~YAp=J{Xo$uIUyC*;@a`8B;W@|u*(@&qwN zBfnU;Eb?ph_PpL1`8xN5)8KsWF+eBe^J>#Wa6a}KG$E&{ZfuNxHQxO4nBPw05#D@T zkHwyY&VQB-Yklsu?s;5I{6#j$CiK;_IFILp!`bkJ?x~yuU&x;PB4=;|z7pFH?lj`< zW{o|4I{!ah-_m;Y>28eiLJ5BI#%>ONlN7xI>PB!*7BbckuA>JId$l2y@66>pcD%EC za;J=Y0{)+EMLyol-?*~MJ->DTPq>av;M2rDx{z;iE^_Cq%+Vc|XRy@1RFp_aJLM9vS7Ab=F4Rz!>&!{iD8KnU&ig3m{aDWX-!LcT8U0E=d2)`P z~)W;dme6=TZ|K~C2cn%NbN%za_##!`7#e*rEad5Z?%I__y}HNcdCmuA_=pdj`?_qeXQ5lVR$}Ra z=B~s_=ypvZbV0u`^^N7rW4%k!*M`FX2SXnt=crp<#u`Lek74Y$FMx+)h{g})JImH; zp3KjzP2>K~2i|(V&%8#0zx;Q>b89Vlt#i+%i?_hHDRL(w}}%k4+= zFxMT&x#y$m2_17x`yBi!(0UzoGV5LD?UT`79F09I`L-TftBxLgZtf7j06i?9znJFp z661?m$(m1x_U}W-$KZig>=pGPvURFofG#gWm;Uhiiqc5NUH5CCrRq{Y4X@a`)OOv5 zGnWz2#H<^7r(HMs4<|uS)usLw@=5f3h=0q6BzkgZXX$gHi18`i%KqryI69qs*!ag@ z3*PIb9>?FME*JeOsPp6P71`T;#1U)Sc$@!>TkG!=xA2Xp@XXMDdV?G^d?rIlB zO&_Pd3&1lMzZ}gRN2lj_WCp*CgDyXi{Rgky z#QYX>r%yVK_+>J7&EiNe^M6yfEP7OW?#Fa;?x%TkcV(!%r&{T0VSI|@I@>#~Q*{px zIZBhf^&mhaDd{c3p2(5b4#nE`Ko#JN=* zOMW;L-eO&SCXIhxg>ep$ki9X=XvmGlLbX-zbtnf$T^8FQ(eO= z*#nPpmS4r5T!qd18aD46k#Mu_>VAaHI}>|#Y99Nns~6XqTV(k8O6;@g*sIg9SEmfY z);$njhM$p@TgSAHajJA5mG!gzK*xj2nb5+-mgBwBK2Gi-rtonteJ<|$IHl(${;+eM zG&TCufpOWps=yDtSdtIFT>^}S(sV3&Rz8iWcXG{7%phu@a{fYa3 z+ljGYZ=C_W3V1qj3~(IqZ^T%}0vmx*;G@7(fL{Tg1XO>E6M%mJ9uGA4|A1fP|D%Cl z1s(;A0FMCvg?bx@1Ahe^38dF#hj!fRo%od>|5L~Be~CVovJNfUQ9`fG! znY-gtW`A`-r<5ED^Ka?p%9A;bztK6S*z-d=o28FnXN=%)jXY`c{9xGK<_;Bn<-0Fb zm-7x)$?%N3GmrC~*Wexby>w=7i=`JQ+oO5WQBXc8*meR$+) z*4^g3={#-vq-eoQ{HzhU9GLb`1nluH_Wl(*s_8!quG-I{V>!NzdU~uD@Xd#?vHwhr zYax5>htP8aKPyDnJe3-mJ@{D<=z1wMSO`6T#P3uCPX6{+21HY@_Vs9PZE5_4^82sa zr8Db@^!;7+-cao8?cQGB4c6PnOEb@_QRcj|eK(N7ZehcmL3fS#6Xw> zI9&x!?d)arQss_r0+(}G&$X=QS->YcSl7GW>v(^y<4&^nS1!Kz(@uW>%RhGf{;Hk4 z|G4-5XY9kB-G}_b>d$o_GWT9?IVN*2bFQxP-G}TMTnpC6`e<(zUvL)N|7*{!`?zSQ z_aTSxWL++^bg6Lj@3r5ptcxLEkO8Uvkq<*XnP-27AJ+8+w0f~M;>45T%f&Ipfv+*S zZMr9=yf*bic$o9-OvX^Y(2|()_+~AW{d`&&+Y;TW99fyn@3ABak159X(Q96et=jWf zP)AN@?l#`r#(PQL`-naA5$`7R_gP|V9f>aW(B)&s`9ARXz>fItlot2*Hm)e&@i_Ke zFveZYzRMEh&Sh8CP2k?hOU%_5<6b?jW|WC>JHN}a=U8j?Ti2s{0$_mUk8_1zI^0%^!^TDZYHsyKTbIENp^h)~#B!7>E zcRo20{gN}{ZS5+_hxL4aeHpdxbS~lp=)vBZhP}QCo8Q_fGr(mgxS0EIHH9WW ztqNRJXXg#xSFM?Ey&X+`42?eFe3$QuJWJ|FAL8CGgCEzwD4e;9hh(cq46 zV(p3eElx$xso?L%;~P7RhjrL=F1)~4@1KV+fpyq?A+%yGKDY$m5Z~HzX*9KkZ*Qvx z2k;gC_l&|m=e+p`JoJ^keG%hmPOxx)V9|5A^5^IhFSOXCWhU>c)*jGS1Vx_?~JEoyXdlJbC!d=E>iY=etW^F(l(&`2*mpJA`AIb1gQh zVkWje+%)#3>L8l9aAL4Cg?*_SP^u3%jPFS=J;>9=3&T-UD@nTeZOE7r;fU##dk5$I zv_|wP_D5g#l*$^GdO?PHLmpriKCdC+m9rK6|o(ksoa3y=TF>}_O| zYQtaH(VfDk{mh-hpY$dlt*<9DMGxrM5TM6w=rIR+;4`jUAEj0<^qAq%V>q-B4Nmpw zaR~o@4_P33;76l=RD}E()&V&)f8nVn2XNKfJMl{)bJS<@Pe*(@aLKl!1uwEs9tO_Z z$$oinCw&IT?u4I9cd{Rj+R6KUck=$qo!~cQC*%M1ckX_byefqUBJe~DwHzZJUF>~5 z-N7;Ytie0ai33SbTZeC0_YcfECJu01y??>w~OoQh5U1v<4yPhpT!P zp9$@^@{L?_=KU=l%aK=d;QgT|-*yS_`beknz81Xq^YFI%zwSoMW>;^psiA%u`QNSB z@Rva&e;=UChj_vG``(=+;j7Z0Uy0A~$*^ZpiYx}j?2q&{gT0SgV(A>fL41L;N zAFJQz#zH%!L*pTtbYRavR@u$D3%IIghf0=e`!a_O-F@aPa^6n;ef zdP_r*wtLS%|7~uadJJ?iwiEP{jxGJ-KIkM_l8cY8;deVbZ-4!hw!C4J_rxC5ozisf zQ<+Q0ChpQrf{v>Hemi^4(2(4x+u3uQ*mFI}eY%4^XLQcW(awDK-j$)=&3Cf@u3}B@ z;;d2K<-5@Xr zdCq$Bj1(Ih4`0id{XDpA(Eg7mKYRgPhHo6}3)Lq0MqJutMVD5d?EvP!h-23=Z5%wQC=p*RT51~sxdI0te zyl3wCtUSzlrp4{?n*_fIalc`lnZwx+Mz@chZ2T+AKQCdPLpcK<};RR80Gne6NhEwL8WclYFAd)Vmm1=^bs~^F|=AyLLL2;-5h-N>M_0at*W8U0BEJS z(4Fv89?wVcO$ewwo`3wMXu({MkGLOb?r}~*9{-uOYe6=srjXXLhJTY!wsiz@0=gI9 zh7D!UP~zxIN0bkDn7?!i>XZ$4uH@X`Jc<}S@NO&LD?B|4o-pwz?*D8%6nlj8U;g>? zS?8R&&1+6F{(76+EW6|;aGS!}zpgBl&gp)WdB4Sc&6$xr(Rm);SOsq=hkGM>-BjeM z^daSb>CWCp*5?j%s#ma0{C&K?1z+3?U-W~=W>DioH4pECFO&~28+R6KYWfwd!7hO} zl*?u0Ve3#&9_B4cyye*@P3TekarWV}T2qE?g1)f!P~`e3bj_o&O|VrqVykR~Kidu$&drg$DgnKc;MW!@D<{8}Y z$k~@JaJS)5&II|U&tac-5L2&P!MzamKz^2eVEi5Iqu=HcBVtXCXD`Vwe=+njIgY=D z-{E8Gu-BDDN=)yLPv6|N+{OpR?-lSn`$hV-`2F>*MGKw{@=Jgpi+5rN9}>LRo`v7G z|G4ekH1uxGcYRZwUxwde`Si4`dHrT+ZDdV|9-Z);)lYAQ-{vBFZc1{;6ux|fzw3c4 znXqslXNmrf-%k(qZ?<>G7r}!M!h???hwPoib6LZj^&3hDn6qjYXRhuk)+3jm42PSy zf4}zi-y%!NJ*pejFvxiu9(@5Gt&WG9n|g3YqNl9v%NnAmyb6CdAwR7hiSCEbX_zw! z{4NuI;2&d;$c|JU3&}afvW?wX)5DRxQe5O_)>SeE{Uz(2owbL3I&c!}w#-{Mt3O-$ zL(bvEQg~1@=tk)boHa%l>ZWyfbs^#ub@O8Tn=|wZzNfg4Y+HTP>i)^lL2pgqJDcry zkh}7umol#Uack@->o=MA)E8Oj8uvsezRTQ>+p@5K@XjZFv4)sCpM$}poeUbNb0y^53l4_<-v71lKH5^Wpar^q2>jVj_TOlH zJRO}!Bfa1AEweu6J~VWa{HiS0dn0(vY!BuB@ zaKHQQyrz*}uC2FL73?#`ls941E2eTbc;u)xU$-h;YH}1uA(ziZwjIqJm8YcK#$&)q z@nYeGK3=yyZ(rjJp4HdgzEPm+Af5u8Z`ZrRjW4y6OMFwZV_`126d7RT z(m0P_v&p5Qd?ziJYTNV}$r*CbCZ5XpmFQu_#Oqef?Pu;n9^s95yp?nCs%*nh{y}e< z7!Yet9e`!J_hIshs7rJP=dbCZgRNtD!P?7Oa83Yk|6xkRcbcoV$aU=C*g^077k zTHSq_&-|*iFF9+qFUP@O^FoK1eQ9c})qiI8rSXx5MwmMC!`Ls%BOMMM&w$^foWCR3 zwtpu9nx1Aa#NgM3Z|r=J{_fCE z2Y!Qjy%}5==H#~@68I1@)-CY+r@i0X`w4~?)vmtON_})gi~2m1&$WTIISo3fe&V~x zXe)!118eS8k;k|R88jWe=6%*C$-11wd=$&NI=)ZyHfXYKSewl_Igh+8^c(Ery6xnq z&F+ED(wo2S%N-`xcSjlYXMe~i;L5N9=PdS!dWlbGk4&P6(^_=v&G-ZE1h<>O>1J>- zd2)>>Id_7~?ci}6c-#tq+=6doKE4g<59?(^Zgg$P3G7kT*q{EYYpOH!0q~xeI?gDIRX_!nZ=;Q-C~>UNVI>doG@5?z+o9I)!yxmqTBA z7aiN?RekZ0PX}sVGwr+@ym{Gp*_w9oGGgHeJ5M14cc6O?!Y}$Xve5XY^LuC1;MBYx zT!XC#?$%FoAF}R#WSxoUhq^j9A?v0vubYu~Q<>K-$UNg0VNR~^j~okVp*a?aMOq=c>DemJem!g_q*lr^7?;n!4w@{J~~#f`e~wF3ow4))WQz z=IZ$+c_xnchvwX}=VI^_9zQ@&eN}ihj;`Z-*VN%P;SP#tjT#+e%E^YgBthB7g|6(Sv^*5JpBUh z66NU8Q#Yu3aQeQoYSoWn?PcdHpJFaP5$$7}>wE$GM z-^&g%{2phW#qSS@-{Gey>#Mt*`LEzdfKPNTSMVr*ZxX+omps{vTZNa*XWcq;j(vA{ z!1l*aBOmp8{4~Zl&G?0!;V;5Jy2tYpJah+hewlrx-ZihlL-JRy$!EQZnJDjS3%1{R ztn&w~^Ou2*9jy1V*F8B>Vf9D19h>ICtev~^=0G&*IN$|OXcV7aRv*5v3uq|{K&eoIvA~GRIO{cmU zb4QpM*3H-%iecHl+xPn9!m2#Z7UY7f=L~nAMJ_bKFE7I{YndbWm$2K8cTNXB2hTj0 zpjL5SxLLL8HlQoXw)+5Fw}2-xLUM~nI2*zBU1+BJsh>cvb;yK6SaaP^)mm?64x8aM z>1sd0FZ4L}(G%FX#k{{DZ@BSsH-NM1@DX!cy<*J?#y7I@wNBhI_IT%|VV@3s_PwG7 zk9g~l>wKHDlej^QTF+WX`8%@Z-_2pYGvrJ_PJGFG-|~SO1HL~Udi;>*mb}n$s{4FK zUTB44l-eWm^Su-ft@shNx)J?XJ|e?2@V0c`YA^S7Gr6*dL4Va5Je)O9o~-zCT_|*H zHMt|{KFuCY!moZdP`-Tm4pn)uNOr;ETzyb$zbTHKz5 zZ{CC!9|vfW&zY>4`*vtP5SsV*(c(HEEx4Oz@=UQ0@pT^O)|2DAC*+{T>wGT-EhLwf zcefE*l+0^T!zF8Ru>euA%Ssl798d|lW9@ zwW#~=gcdWvZQDjS2JjbPg1xi__-){3;I+U_z^?*x?XM51JKfR#c+dO2wcEvi;_*Uk zfHKxWb$Y)R3iavJqf5Guy6RdS%5x%*;yU7K?61|&#YP+Z>(8qKeCOH6vzd=%>J_}B zJccB^JBqy{-@M}QGZ|w+)zQW`zlt%m=ly(Q>tLP5IQo0D#+65zHC~zHoBzq*&gOf% zQ+E;Ln>w*Cv);UKbokhjMu%V4!S_ZnMm1yH$bM6tY+SkS-yQBK&V<}9HvcDQME`f` zaFn6L_j2HL4CCFvx;@Og`QshNFU`Iyh2|@<(afC-=rzuMn=}1#{=E@ioxofs;O98& z#d70s(%oa#8pI#6`mxGUrpD|Id_U`6V?Xd+=l2JHI`AgmORrz_aD(^NLA<@c?*`uD z3F$28Da0-F(z@zH-z|4#muIszSbuD$f2S^|4cU@sY{<2oTdEk8)QxF9*!XhBWLslzZcjpsL9B^tsto}C0NByK`T7Te-)GTpE0*NmmrD}v`*z>S zPga4ftcIrJ$nDWRgqwzXG{rVE=Z>d8`Rgg-6U=?rq$NLXA1D{c-*^jocRX}ZU(VKB`JU1B^2p1IrmEL}c3%&^F`*n>8u{HX z+P*QJZ)n{tU6muGyGlBj%U1SUpt~r-vlKkBx0Y7N4|Qw0^Yb4=6UDgwu}{6HcdYE` zyV4y$m%M!)Tf8H_Ica&vzyC(Eiw}r0(Ao&u+>!{#(r* zkN+Nbs5_$1+@0Jh~H_?K;We{cD4tbCox!yNYB(rS3E>TG;s$k4^1W1Y!g zGQNhT>yu^9)QLvFsvFUGq;vU2M*eb_>u~3aub@*i#{9;^o#`=Zi1P1MC8M0HCXt8F zzh}^wX~t#T+veXZ){JsyO~3V}t-Qv(u&g3}$F@C}rTjQ& z`p-SOG#=+%mGI~?_IPK;vmRZ>j&Wwa;L&B}7-#k?9$hL2iv5^;VBAD^GD| ze&o?*?5WN*J3P8Ho$Ac_)X-&VC`y06P&kzr4>?s`!kqnKXHxfYsw=*zDZRqjt$EI6 zeZr|8@jT~>;xKu;`Ofq~;Z*N zr}l|+kL&C(_FE5U=9j{$0o)V2W@4Bcfjyl$7YW~>?u zfp@&fxokRklTUTU*T5Tp`}CRMO^t!8=74v6A7{q(;7u){S#j`=_i<*=1Mkqj&b7B{ z{C%CO`JzW(XHp$_$NM^y7l3!DpELD-@Q(L$F8?lghl-tP_23;ZcCLI7yhG&5JPh9P z{?5!t!83pS956UEe;= zyZB;Sz(;l0XP*Q<@$%HVEc7?N*v39a*GkhrO04X=<*C=e$Hv6gfX`a+G50{n?rUOT zE#RYjpjVG0hQ72s^)C3>yrD(V^FiooY|6yG&O`9=Lg-l!Jtv=`m=O2AyP?ZhxcPec zmP5&-@GZthIcp>{iTCHDuU9Zm0d|D!({A{(#xqVKzKt^(t0(@FvlvfzbI*Y%_d$<6 z7hWqS*L)&8G$2BZBmz$k#daUc`VWuloJ!@7WL(y?%MsWotd($4{4>dSL*#n2081i= zI>b>@VZQq=|6iOq#3|sL>-qQk*db0gzPpisj|d;)6oQi-!_0%9hw2Y?$HBJB7$M8M-?8_) zq6OPL`@oK$hs~Ck7g}BtBUcETM?#?m{_j+vyDO$JG9G_@IzG1;ypYWAnf6WlbnHMlCcw?oP5(bAi=JLWEim0po zd}85fs;{MMwPzE7$7SHLk-He`JrM$r_raqVcqH??FR^;NzE{upb^qUdx5D*P%Rk0r zY8$wIj{FQiM+x@*C?5Y>HV_Ah@y)gHOc!|OG}arLk+yU6EmJpKw4=sQKD0IOTb!|t zFX#P3LN%|eCOCJ%Q=6dmq2L}dco$~!MeIN)$~OkuH2`0Gyf5_l=zQQtXmuV?xk_IKHUZP?*5u}6weeS1CxlFSx{!6_ zd=MX1uFN-l6z>sD-PO(IyN~(#!Zim{(=eJ!bd9F+ymb~0TB<_M4t^fu-{9r)TZ1=O za96E>EyOcaComBX5j&*ris%KuCEz#pu5Lu0s$RRzFBQI};QkkIH|y@jdt|@p-o%6W zYLk+qo{v_4Z~e1#)4s1f!xKZ{gQI!Mc`oI-lII?tXLw%Yd6#D!PY>$4MtIKPxs>M{ zJo9;$@PK#mTRdIJnHj=!JkPm2|HU(l=UY50c!)z6zr(Yh=kGi{sR>)gb0p7rp7VLC zLI*lEtYNJF0Oy;7Gi65pEH{R~0UlM1Ajvu>^Sh;EJDO)@^Z+N$`-21Tw*HU1w-19) z?A|te*+-+wSg1LUJoyH8w0Ph>{3zwflTEBajJWCjzv{U_K7;r9e@)B&&SrjJ&;BJz zK0}UFTCWe-6f0#M*?mgdi*Iv9`6+X~;AG~V7E4J_e zXSrSfYFAD*UEtoc8y&7O_v>P;KYq;Am1f@k+RvNuuk*(Lfbkn^_II{0evU@mBiU=ehNH;jKb=tB^52 z0-xLA{T}ew9g7Zddct4x^A2=+p|_d+krz#U-_q5ae?B#NbtcUKM|&oH0*;?ZPOBb| zZ*7eH5}wGfD(0HrUwqTWnVAm{7L2)Wz5gWDc0b8OQQ;p z{?y-{1&!W<_jI?p9v(^N_s@J6*=qRqJ1*|)#2bvYUc3SB5zPsC6x=IA0(jR(J>3z! z728gDdqweo=~RmUCw(!0b1v|mIN#{zeZ$Cb_M?^IVfzhl&C5=9&*pvdYD^7Z&N!o2 zzGl{(v)H%hW=$A->)&1cw=l03#@@!fV(`;@{M;|2@=tK%kR^;=LSA5mIa7NwOm@$mCU-p>sIRNLwG-#McWSlgTfwoqD?9>?Cn59SkoD(GTm0r}Rc5!v>E#)h9h z^Uk)6vpSsbTp}KWuEBM_#eTEaooDMvS1-78ZcSP*&{=&K>#Vc-ZnFo_`F-o1-sAE8 zoy!Nhb2Dcy^fzZNYksBuj>k{cBiz0m&oDRTf`-6NdZY3|llg<%kI$M&hJ2av4ewNV z_#W)qcE6q*f8B4}`SG*-c(%9JI`3B^?^?Uk*poiqHu?d3>yB@`a|+7hr|g)PugT|-oLJ7BboX9zLVC*;$cc9HAXaE} z^Y3F%`RA0+T{zL@9q_VyBP%_SCHHx>4(cstT_aae?^?P9 zZK>N@T>r~0K>1&80xFhV3;a2-2B=)98-aDe8-Od{;ETX%z!kvDfe!$u0>2KN47>zb4Lkx^2^z^=eEft#ttJ0AEt@HF5rffc~- z0Ly_l15X8B4m=rn5il61EkRD{?A`D;_LTMi6e*_%8P7R*LjO!TQO(+P*8daXn`!?~ zE&dC11j$4Ed@1|gm%Q&PkEm+jC^;3Lt`82+WcjxIIPc+mvc26lbIu=T&H?Nv&U)r& z?$C$5Z|9otqaA$rJD=mbtx0#z((4Yw-^N^*u>V(wl1DgSeV_w>P9oGSf8ou-3p&yN zgI>Ml#X^?^{nCjI$4nex{7f^UiTq5`1#8HW{+RFA_lTzc)5BLbN27Wj z^YdiaXzJ_WC46;G=T*@AoS&EQZ$pd3@y=LF;|5Q60B_kb+weD8J4X3oN$_p~?-uZu z&7eAt#;)<3=7f0L!Va`iZWCgKBd{p6m%yxshgVMF)f+34O9Zr*yoyDtpg8{6nU zb`Q|~qK@cZzrUgT0FUlL|K3lfTf!&Czc)6II~C9tx_|Ol7vH_<-#f%d?{@TzACwW6k7S%aK2`SU1%n2{SMG9yZ>`USn?Z zq32caM-2^E#)b0tb9&e{_2$EBVw*lWPi+RxnSPaSOL zkNxDIzqh`vc8m(|Y{R}#T&^2_9Lpodm*RU@wu$ta-+8_i^-*ZyXB)sP6pp5T6Y!-p z(ThWIj#2oxY@9=Oy?X4JxJKsKhIWNvm#5!j>~ef5n;1LB*uMyj-9WuL7*=K&`zg!!uMd1*cM0e4{dagbr>r3FB?RuXiZbOO z_a==!xt4b`?8)GFS?~YiyV{G=n-*2>M_ots5!R$Wyq`mFDp$UGyeJ*k*i85nY`jJ1 z``u>E@u&F4zxq$EK6fSXkJts%fVxX~IZ!oXrUI2$JQ;W&uo_qktOTki*rmYpfL{eh zftLVfXIu;_Ia(lkMg0b_PJ_1b;VA1^I48^fa%&!-PxDYJzqo*SFV6LSD@!Vp3dCYmX@2* z$t^9nLHm2M&~krpmpw29m;@e#ew@Z1e*Fjgq7{8vxJs90pP8CThA+vLR$Wz_f3d7@ zsJJ`h=nlNb$us^MQ zPkh-f&hPtXWg^rZ#ZF?+xiJQKEzHl>uxF#lfkpZ`azJNgIr(d?{5*zixpiNUUfv$4 z#g8X@+{E0Wfo~OGc(+jUpZJOI+vPf!_}0mG4|sUD?(h0bE<*3H{*q)qeiHw? zI@5XgaNZSu>%ebibcnMa{8|_{!TJ7oi(|F7ri0t-M7n$Qg4Kz9<5$K8Ihy}W#?bg1 z8MlP}`X1kja(}6h#n~IXiT;7&m%BNS?YXBt^0L{tneqH`5BJZW@?y-4IhUNj&3t1a z--x#ic2)&&uf?BN$@q(W=e>?|P!&^<<3ci9t>;WL!CXHS=38UrB~lRt@5= zHS_BlO&#dbRW|fO^jD+DvLAm6P5j@~d8_j-1z*|oPJ4GCvQ0MdVD^mhANuBR<_!(D zd1sh^yb8`KK(G&eR5&M>|dA5}^9OC-?lp_3Jr6`StDw%CC1P@Rz_lfI4q)1KtL_1*m&jHvuOBYk?DhH9+`i;Elk+ zz#D*FfY$-nbAC#$MOg0^bni2t>RH^$b7*NOazw^C)MwvN@f60)bq<-eY;yNA`nVfM zCmxZms}|X}eOdl*(gk{$ zwYK|&wU*92nlmAn&aB#@lGXX}VT5s{-#qlBySDP{JcQigE;>CyI4epAJCZwzMFX7~ zmcHPU%jYMVGn+Nu!CKEL)OYat`PTXwZ%$7Ewbt$Et-MO%<)?S~;55Cz=BIbbfV4mI z`h7Cb*#`FfuKFXt>7%#Vr{JP}dg+rri`(HzZo2S1Tlk=h=!|J({iUxa;fn)>KYSto zSydkLoS)Z-j^w6>qQ^OrEVSI!Jj*FQeA9Bo;}grjK|hl2G4|zwzQx>SE-n$hv&dW7 zURiTdeQR05eFeQs?QwVSdps!HD{Bs{|J_)=;opfiChWZ{+snk*JK*2`oLP}XSNOL7 zl85ebjPaSk9q@T zd-Vd!_UZw&^*R0g@!J*fM}Y1nv4O^Be-^$JA1MBZ&AvzSTQ~g9#V&jOQvIWLojej(?3D_lJc z-*zgT?AC1kLbE^4q;*B9d*0g~U-ApBVg6$aMC(kykj9SI7c}4Ojor%Fm9hTLTGmGE zxUP5Rxl)GyJd1TamUXl_HPmTLE$*tZ$*u9NV>$Ox#GhmA7#@!`p*M>c#=>LPClurX zgIA=F6Z7y|2VRZfwH~~ZjG3@wdi>Rj&aC*<<=|!G$nxhDnmK3YCzpGEhsuDSQcEoS zO2)VgyllRK$u;uNslK-Xd*mZp$Gf?FMCIH&(s!$Eyw_WYeEd{KFGMf1dSQ@1%406h(E!e>eVA1r z^wBD8a7HFC&%~Kp&Dr(A;Je7TWZ+%NMa7q^!8s$o?0dJ|ld0zgbXdtn`PXmd-HiCM z|J}HIu1^Y_>ynE)A0Fdf>+dkRy1sY6m~{7Q0y(n`ypx>a8{ylMk{*t+$HLLnPrGOC zC&@+G4ey|vTf0H_SWlxPkb~nJ|D|_ax$^>0a`8E!HlnT?!-XM%p3jl|hXV?CV+eChYm zloy7If55vb#<2G`{Qe#DUZT*6nDf2OxAU#;TwJs7HSs;w?tl(0(6Ka>-yG(=kMhnX zqOCpiTl%NZ{4KoOSwu|2H;LKbM$olDQ1G^JsAALC(L?YsQneZEbq#Xm6kgNJsk(_K)tjyh%Qm z@$vg?QzQ4han!HOk!t8cDxe3yn-(jQ`t-u14Sa z$jfVdmv1g)E!Xjl1m74Lm{$X`P`vOH=4I`9Q$Gco1^r+4zSJGuE%Bc{705){^>1_b zdZUi##;v8F<#yj_zj=~ydF3U_;p|W%-uB!SijNhk2glF}&&RA?btF@a9_l zXNn;i|5>cWnH*~KpG|?MhOrN)vY#|}@DP@?8oP#)TZ<5ttFVd>|^;) z<>!2Zc_*Tw<`L{)`ANI-dp}-1!0SB^uPCzrZVxZ{Mr+m-QLBt^cco?}dZqA^EM2*# zAGM?KuOUklRehb)gLt7gO5Yh&fv*(2tj=S6q>LedrhKKLicoVoc!j}hPynwy@WTE} zl^|2)`)=^gB+1z@Ka;H^x%xeR?msi+Q4Wynu_s-nd+yld$Y^buPde`LVM zFJsS(zn|sZj2NkpuTJ@`>r*`mD4*&Hz&C-%1Lada7Wh5jXrScdQ9#bFfkyzP4@y3z z{Tj?SsQ>xmbkwpKm7xQ^KoNoi87Jr;mA*7KKeSvrop`1s30+yk=l+Xn}KVgMNU07 ziXNMgpQ=rdeWNS6K)h%4-=<7Gwj_#8jDGcf?PYXG?V-hs3QQhXBYVFd8PM=!SN@uP zgdS^RfADCTxBqkxr?jcBWBdT{6+W%HQ1V!3nzczAJY9=<8d*eco#jp4iK|2wDQ;GU zENbN(t~Ph%GG)>e;QtrqZP%amQa&R!RYy4^?)K@ytf8x)cTJxkGd%o_d}=`#1ovbC z-_@Mi+h&dTuzp?(zUKU>_0Dm=BR^|UKiBy&kjMIC{)2yC#&Zo%DRnivK+g#I$*L(h z(9+Z6n|x&I&hoQHL<^c__eQV*kAx2X{Z73}<6k(OJ)6tFVD%*v=VXt#{us_N)-BGs zS6H3C+FN5U?sPHx!O9T%V+xqNktM9N_4C`Y(TR*M=K55)>%`be#=awj<#%@4vb{L2Bj~(k}_VF*awwIsM&7XpvRyQ|yJ^k<2 z7dVo=e;_Z>zZQ}KmAu=L&*g(RT^aB`Q1bIVpkh)RfIkJU11O!^1Dpet+_e5k z<)g-tS!sF4{uZ6M<81bV&i1(r_vL=S8&frVEPkvr$NFmQI)kr#HGZF-a$UY?S=B_OJnRC?YgEubq>x28I_w$uH_xI9%z8jo_`&l`g z%FoQUrK@8$^G*4Pb+qz zd?-ND4_Uj)H+H4x1G^>Q1FL1vnw&EBTP}ZLB{i3{ z-$H@?R_(=)f5N-g-ZXZm@4NoBQhftIy|rJZE4{<}R?Y?GTOK^4+8iOE`fU8;H$@A6 z1N;=In#z9#Du%oRhzuO~2`~=y?^p42EI;##rN zKF+kjH)=U=%zYjoKS|&CI14{17eTyApL@frCickqs#|MxdB#64Fn$I6Dm`jE<6B>j z^8Vj8Je8TdYsX*bjW2z_w6>3lMK|q-8u&2=?aBhTdN_(nB+t61Ele8c7@%g-{^%po&2`ycS5`~qJB{toy>U;=nH@FCy?Ap3gY8NmMr zif^%lmRNs5|0lAT(Z{`VSczaLA!43wGc76=Lkt+_?hrMzjkIfJB%W3VSTY2u~ zd5~ur5B6&DDxN>^yvI`>>t$riVrvt4a=ff;=lZ<%Pc&5Myz;m!FQrq5D|(yU?Fj2J z(%SLf{;VKxJ7{Ncu99;gSxlakPi~2SHTDX|_RFkR^0TF%T-bqrQl9K)=Jd;eylf&T zTfAAtyOuYDF|u;vBa*eZ1>SA&^2cuBUAr%X`O@VP_uX-UcNGIO{K~tQUxPUWwQ<8>J)`o7t3#Ft-c<}t@xm|iZZ3VkJnEi@AK1I>9?vQU zrg-5syqhatXlRB0aZrF(ih&uq#k;w9!@P^G*(dO>Vqo&GKE%7$znaX)uj;2&efMUq zZ^QOXeY+ZYsWaSerryEc)uma#KzO!FK{!EGjZT1pz_CZ`T>|<&=1hUou5DQUWak8`n+~= zus3+`HTzyurvIQc(j%>xKOp+1{j|N)digD?0kxO(@<+hS=;anKzOS0fL7g0btI?GX z1)j-sA&-fDMT$)9>k5xI2;hsrVZcX$ zUjQoBZ0%jqO}4H-jblIvdC6#&?C+XH9|q5$&1YAIL4{%C2=+#l+r8QdGPBZ_&-d6WlabAaFhBX{$y?PhtvyZ^MF8ecZypvch%Ww9LxP&);EcN@pRo`V(vTmdAOlF_1azDjw)^_ zpAkRLOZ3A36*alUp=eL%e9Pah-d@6Pz83x&Qz5_S%w_hDlkuZ7Ml1WHjBl)k|AvA? zgn5+0zj^r82eTLaF$UGmBsaj|9m6lW)Wh4)++<=LEyc^(wq0^3UBZ*H5STyH_Mhwg2(mz-0*mVOS>}f{9PO+XNS8p z_6(Li_Y>qpeKgd38Q<*AHNBR9pzANc-^d>Imu zi)F|H(PRbhT6&neVZL`q!qc*=4*|*#HXQgG@L-^1z);}zz*67^K-nchd0=oy2Y(ve z#ee2rPGv9dt7D%*r+VF$r_S|H;lrRz=xh#g9^aQt(D$w1+V-Q7y{2%d*MAd+{;lN zf`x@1{?zlnUGKs3W)4m6npd#qF=(vbZK?-}ud42?MTHJ9^;8J{BA0(4Yph`4h25PnIpACPP7D10UE#}I#4nX|i8J!^cpi23?7FtP->jx)rHOHL zo0XOsvi;xWJ34FM;v33&_$}X14Y0TQMruE5I#HW8Sf}dI)oy?1CBRj7eVLod&tb0S z{AX>~fL957ILg0|^7f^gWFTZGd;Rz8iVhU*AEw?Z*^=EAwkaZfytW zB=0|L<8Rg8JmFv2XIVb+%Z_WKM z=Bs#(@U5ZMQ-zv8HIjV$_ylm1?xy{bQ;%i+-1`x2 z@ho_z_)t5q06ng2XyZ5W_*(LDy1?UI;PH9&eTb)oQj6j70(iUt-a9y1=yZkmhDCcg z-Qc}aXyK2Y@%P1j_*S}~c$3Fxemcf`H;d0i$G4Y2M=y@Hu&Rf9e-3_mPW%UbO$?2F zB6~l?v%mcA&{zH^+5MvL;q2=K``Xagn@_8!BYotLo$>dToD(~Xoh4su^S9^ZD?2ZE zqXm3Q;)NzINYB#rd=^*jlMxsEp604KfqM(QB0djQbZS0G;bclKTkRc_?GZ6 z7v}`M$6CwRl1H6p*LL*g5<137%MagNbbk5IbNScjvQD}KSj&077CASM^E`O2UE^D) zobyR^H|t{Lna5{~OZ#N3%W-yHz_}%_u-Wq3kCd0dT+F&Kw~TeEAMJc*{RzIg>~6fa zBCsy-)DpA)^@lsZxFw689Pg9Xle>BNyLTwMr}boVQrh(7mEN6IWD@y|t_-hjlSR9l zPdN~LjUDOL3AT1aX%f6Ro1>BokHGJo&GMJFgt|LAqeGm{uL&>CX5~MYaK};i@uNlb zm649f8cCn4ETpCozmMaGcunK5Z_NINUrpYIcP3}lJjff~uI7R68$DUm&(u74sxjZx zJb1dKi>Y~_^SY5U`6-RhI!l(Xsp)29c_nm8mUMG&wrkwlCMQjP8|Sjs{d9&eM>gt? z;R+(Sm@1kYvt+|Z}m zThm=Umsi@@toMHPE}Y8?z+dO`H-YwCZg1D^+Z>i|0bg7qdRv*ls9Rd*pDDhuGQX-# z<{u=PZ}(vtIpwTdT0TZcI|tY`YH;VCRrYsMK2|aZ#ah$yq?YvnC&iRx2bNO1z6$$A z-;d$X{D-A`h5PL$Vr=q-9fv+{ePO|vwsI7HKwLQljTcfoup~Lmxl{5UUbMcl{Ws8) znsY__N^#s+w7B_aH@oskayQ%>HgY!tEvTKHvG!WKpua_NnrMM!XlAVW3*Oq50bgg{ zpHuE#61tzKg@a_U`~LwP!NP&Xq(t{i}kL0!eGh9IlT@LL_I^(60S z7&#&pVMjds<5%5!^iKd^U_BoLDwj6R&rKc6m(h~JS>%g;{(0ofk}d6hMV;0AuV)UD zFJA}dk}uLHb)WEf@hNL0+Mk=&eKt@sMEq11>1Xr;>HNP35AA>DMwBP$OU(CT$b}cZ^WW@S z)>C`0KGDDVhMQPB)>OWvM&4I#pd@Qu;++ffCFPYDIOeX7yYH5U;zv98S)PUGwYFvK zJH^un#pkB;Gvpt54_#Bax|`T{x)i zy*s^Dkpa!$47}T!wOR&lTC1f%t<^!Y6Wi%$tOK;xIee|R4(2?`FL2Kj=rGk=2kG$P z_yGFN^Y_sEnGf7`Fzd$qX5HWeyAF!I&n16EarK3+{jxL^IodfU%R1d`D;1 zP|*Tj6^#n2`!^d~2OR5}{|M2K^UCNW&LH8udWYvkV`-4bh+rqIia(v ziZjIUxusL$C})$^%YFPBq?7L4{u(-|KK66aN&eL5p_A%gzmSDahXv@AJ_l-Dy+%4s zp6SOk$oM9s;OLhx4a6_9#$EV6K0+g3>>e+PF$VJ-<<0XW@x!9LwmJvY6C^Jn;~c5Z zqN~VfbU}gSY^JXA*O%RMUK8gTC`qrZ#)@3r^z_qM*x7x;VQ+x30t4RF%lYX)ugv%*XWVXj@rz**0M&GjA`$uOP?y^EGT2H5i{4!e4weU z(?_h+WT4{E)xc+gmB60>?K2+ehTBnLQ{zT>~Ul_Wn(Ff%tkAZ`HAj6nnGUWNF zsy#Y@b7y_yCxVxBAd3%n!_t!a6P!i(-Nz>PbIO^g;e*JD)DsG&3Xo5yp|f^Nkl%&Q zT8Qp&COT`+c-T1$TeK({cFv)H**?)c=Un=i6{FiujL^pnxpcu$`k2M?or{KJdnEFm z@{!z$k92V=j-Zbj@_pQBdaWh9IH%Jau6wk=IfI^WJ?aab2~qX%>*}06E|ltx9{j~K zLaBamtxH+QK|UjW|Jx;f*1@Q(I&CVUsXxfgzRJ$Q4s{EH8QcWfW$ zyobR%v5#~9qu@<$*o8~MJKo2+csb)I`#9xKGk$bmr{d?}P0smg3GgNdef+cF9qa3y z`2u(+`Z{O50^X5+&N-{WJKoPZ_c!3py`_n7gLkahx!@1rohWuLN-}Pwzf-^tB6 zXQR~zX7TsA`oq2UqRU6G0;LbU415##BCyFP$Af;d66B}u7b$;Qx}~{m(~16YAJUsl zx}}MiSl<~uh_2x3TMh31X@%chyL;FB!+jgvRfgW%9vvS-q@Xgcqhbs)c+qwt(!}WO(TLS$;cB#KV+y>k8 z%9A4%pQAtA_J&Nqz~1Z+cY6);k@+Zg?e7nFvz?E}rxlmEe$>6tAFi$>c|88x&`$fq z{TR9k*EQf;9^141;lAySZSrIo+xB<))ZW>s_RhQA=nq%xjcw{taEEJ8_J^Au;FVqJ z57*OM`(U3H^@n@VuD>_$-RTdvE$;G`$>H(!hubeO_U`nD`-3;OIR~2DwJH0uYZv_2!@dMepteIkomoQY`k90@+2m`@{VQb4~9r>SFw}`ooR(z8l;t zd$K>=tBW$_RM|M!j(jVagYA>e^8d%!U(>aI=y0m1fe-QD{o#;n^3RNhCjagaw`cmp zy>X)}f6Q5p+_ilG_jG@_i}!MWxN_Uat-{k858gBV;SROqdNQuH%*%oL{QcqT77!Cu zj^~O{=la9_bYZ3}+3Wq`5+^yEY#*^&@BH|8e>memuEB2>!|#;u?Vq6D@-N*VE_RYL z%dV^CYhu>!z2vs~Pyg-@NBj-jQ*^nkgZ^;g=Ult_vtPUZm%jtwz~=lLQ2pUjK<;A? z+zwQKxQ~H10Jj0B0RI9!AGigm{&1Ut>f5jh*d4eLsQz&4f$9(UE>Qj9T7l{h*8)_3 zxIY8cAMTGp^@saCQ2pWF0jfXTZ-MF$_a;#N;obnMKU_0V{o!5%sz2PTK=p@v8L0kn zF9Ovc?s=g4!~Ghl{%}n|^@nQ&sz2PXfa(wT3!wVL{S2u7aL)kMAMPoj`opaN?oNNW zLu?-}k7uh{o6g?dxSwyP{XfXEY<0If>JRrwmTz~~4}Pup?RNey^gP9$I_eL1$LIL& zCEjaq&)njAgw~_y_1^=PVOW-VX{WjiN z(ZKpB&c7@D;SL99>nCiFm)jq1lGmq9y5Q&T4;MPgIm*(w!P6bUTfVj3=@0jhXWRTu zmhL&@W=#PE#6*ygSh!?v;N+f4G@`yghj&pJcuDN%~^dsz0K255`sZC6-#kGlpk8 z&sTXqSAV$r6P>GVFR==5FYIc6xaf(_f9=KoaDTM@l|1}*r9a#%-j$yr*dOi%J7%>z z=iTWK_r~`#b@MXp56QmI)gP{Wc&GcrRbKDfamoV^_J{jxV17-z(I4(iZ+w#*Pdv`n zllkw!*t^po?mxYC$?#KU>kl_}WIKCF`6&0|8|kP&+;qD(-umuNf4EER7#`m>c=sc_ z;m66iAL-k-mEfiG{eN?RxM_BMy?Osr`@pdJl%~JYR5RfpiuK-C)hBk(@p?}4?zcYs#_ ze+xVh_$Dw4d;=&uqZ!x__!?0C;a&x*Kitbe^@n>AsQz%z1Jxhy*Fg1$YXa_-{&3Ml zJJlcVn(uisH$cnI^oLsj?y?8I2}}YNAGG?KjqA6fFH0sVhVQF8xjGa%IphA=BKpI{ z87EkGQodW|+35bAzs8NeQRO+!%gz~m<9X8-D+|6#@?O&aI-z!b$>qC zAMTd{+-tpF7yn}Y;g(Ja7j)Pk?)_`s_>Z|a(_(C+?;>L~~N!}YYdd28O_)%E*V?hn_q(e>*U0+m1R z&k}BbxW5A@@&CU8Cje8xBZ1q2gMl9dy8yQVgZ<$ezq1Sd;bNy|oI@e{!~KadbDcwe z{kj7BSHT;t+$Bo)hpR7i#u1OOcc)M5!rkde$Nk~H^&Qt2Wb&p1{o(##`(1f!E?vj< ztL(f#+@s7x=kpTa=jjjkvn)7t)^B%*hl4$T(&ssOsq&9qkKaZ4biw{`KUaS+>!;bn z{;?_Gl=joG&*jHV=O4;{gxY0M#~{ zQ>fT&W(~q4y*Z8Y*18?N$qN>}l~AHAi2M8HM;;ePw= z-2LHB5dYU7Wz{^aqA<=>zm zN%{GGd7$tAiT-d0&T;*utO0Y><2%8oGbna(B1Zj zTfP_i!^J%Ogh%?j(uvWR_hx^%{@-?WNOPYkxo7*s{o?_5Y~9)N_lJ8c(1&ez`ooQ| zV^p|0_^$Mad)vb+*dK1G9kbf=o&Nu%KimT7VRQ?Rma2_u>J5-jdk=*k8JGF$$DiJOwDZ zcoI-@@dTi1V;&Dw&AwxSw*p54X9JG{Dh7T8@OgmuRomnP)Zjxu_toe zZH=XVSz>m(de*o8!aeKL`VzV8+4>i8PcVJ9Pvqa%@jSqjtv}pC%>$o6w*GJ%Y|k)H zzBT-d_lMj68aE~q><>4{&ZEJT(|fN!+|mh^*!bbj^@khl(caW0{U`N@`-1n)V1Ky3 z+a5}_E{#;vLU}O%?hkj+4q~*Xrg^shaR2zZD-S;fs&?sLf$9&p1E`u7p8y@;N5EOY z4}t0rw-tB_@B`rP_J^yoYv%1w+1s7Xk6F!krQc@gkDmY9Usv^k`;ZUFGjlg<5A}!p zvG?t?9P_?g8fohfcb&d#<*TnhTnlsFTk`b|@RF^a#tXTaO}=(RmX7ARnCBZj-{yIk z=Sd!;7kPUqYkxRmsgvO+Tfb!rK9^vBxc6qd_RPOxf4K4Luf%#~>ks!8%a2X245>yh zln?p2=-%%ScUA}e;f@XB_3!?0sp~4-HPT(xIjqs%>JRti&s?ACa-e*w%YbhJmjdNe zeH{2b;G;mv$0fio10M!TAC!Db`!&EhsK@!@bakQnQ!@OcPtzanUd9RfN97M0`@f(+ z+*EK^y@tuawZLp~N>e8^n!P{Vg}j$hC)CC#z5Z}_X)mKg%HJ3454YdFuKdlotBGA+ z=J~X^oE_{BM?IUa&Ly^=S%ar*aVG6&Y~u7mwoO8y`9hnoUVNd`;;N`6)W6_bhq z)gSJ^fa(wT72xf_{{-%V{%}h}k*>~VwwIYluU7VQux4Lp`@@X}FYRT&JWucET`@?kuXQL1L_OtR4l%E;&sY@qR&6}Y-C-C_D4*7eI z^|Lg!`}zMsf4DlW4Z5=Hw+;QD=@0j??X%^rRT=y*U8$q~a9@AM-LG?i>JN7fQ2pU% z0@WYxe}IZ1e+}pWuLADL{&3Hz?*wa+tv}pMJ0H8BIZJ~3SvmeY>kn6@x(|Fq_W*+Z z;Vub$V^8;os|bw0r~AVl8W=wxU$0`=yV4)-B5w_}AAsqRvz${r z4YKuz`)i=jnEV2!-xlYb?YEVyKio@CyMBQefa(wT98mq?o&`PxTnU^HOaT8ID0%LW zgWY*gmN;0{?GN`Mc%^*_#7S+hd18^Sj^gp2lPc^{<2C zI@J1F^UX|J{kuP$Xw|!T zp6L%)^OP%dZUia@b^}l`uPzM^m1 zPutcXZuVa64_5+S8Gc&6Z~DUoYB*8VdcBkmHx&1!(D3oP}O>V z7xq{+dd2^R{&0(*boW~WP%)N;z!!l(06q%*9#H!%od@IjgZy!fsak6r$Jj&t;cn!+ z(mm4g0_%s0w)KZQQ{T1w!`C0~3F(M?$q#igc=`9o|Cau6N2o6mG|bi??ljBatuBAp z{tNYo8>#!I;GL~M+`u5-#8v;@AI{VFE8Mk|UA?pZa1X9JRsQpk%;z zf$9(UZQ$hcoz-pZ|5ehs-f^XmV+sr9a%#w@UMNt3O<^@b&Efe^!6Eq0m+R zx=Mka?GIP#?aN>v8vWeAz752{w7&n0{%{{Icll#0(DsS2e3G+n0Q)2u_v)xW+&he& z5%+=Tvh{~sbhmppnYs?X{&3yJKdi6KUD}iV;g*4$&L;T{a>lc`!yh64+uyV8*Yt;L zu=5Jgqr?7ik;2{T4|gly>TG|wFNuy`9L?V!?n&_<`_RPD=C<_;`e*cqy9oTPzda{k zAsb8|Cr@v&{o!sE-Zm~6=nvQ5<@Q{-eb?Gw?v>n+}2Qi7bh)0d~?~| z{%{}sq-~vY&L`pahcoibu1lal+!Nk>46k*rKit+(v*Sh@F06*<&KIPruYxLxH z{YTpR!(A-Avh;`hmGI(h4)%w8#Oq5E><>5Io1gzouEs`-aqeXFhnpK|SM#7V{ozJw zeCQ-u9_$Zyja}nbmsZu(lHODO;ZA{ul9ML^JKG=bB=tW+<^<1W{rvNs%b%w|TrcpK z-qr(X&*h+8DUG)EhkN5rpUn65hZ`flurlA)xW>=hL4UZdp=7>OWY=g9?8A4KW#&y- zyI8SH#Vv#V;Xbf*uWf_F z7u&u%zI|$RX?n`49y;;%W$M`xDd3#szSwc*zF21ej>XJJ`?LY5m_)ArZ@&{?m1Xb$ zHdX7DrT^PL!h5gue;d6^{ohU%egU05d;hm1+ugtIO#ioG8Xx(PrT^R3P(0tc((=GR zq5s>FtfT79j{?2`JPf!i{oh7P#%7Tp`uXRPAIof?wQ5gJa;9{)|J$cOcIC%kfw|;| z?f-U!_>{E{_J8|kj{a}+EndDow5xU2egj@s@6M?Yvj6u)|F`+`1927XE8#m5d1B*_ z=1wSb5gWkNbFls2ZV0?9-$2&5n(y83F*oJNdChwD%T83mkJdjJOi| z&el*O&w0S|Vr$!(t3FxV>B(yQiJ^Ngd%G)p61ivki4mhR{luvMtbSteQDfmH`YD>; zoW6R|mCRFTuGO=w9i^COu)o`g06mrO*{QXlzuS<&yPa8!6TG!J-dhV}=e5(X+SViN zt%vmRa3}h^z4-sJcP8+4Rn`8#Nt(7v)48QBWw=R72ij7w6pDb{G-WFD3@Vy5fPkO~ z6hT368kAYPl}QCn2^B$nRwhAFQ-TOS6vFh!@!d9+nFq=kMf`t%`|N#l&dI&$y=hXa zkN5f9&+>(ybJm{LUVH7m*SC1S+oOqw(m~<7{cClUvzKpN<@@_U@ZElN8U2|xL5T16 zXri^md|!X3-^TfF=jG?SJ(@_A4hrAx&R9KV`z`h?a-UsnHpbAQ1HgCNYmoSE%PEWe z#5D2`$Z#A(>z$Q8S53%1)!=h&3clM%&`EaiIHcy+eErVXf4=|j{YCi;l&RNQH{Bo4 z!FPK!kt#7iJvqw1*@S#I?$jsDxA?w%gF)uIv8GL!bgZl`%vIVGFO={0$`1p++sjDp zBfp5eANf4;cBF5od@|ckZl0@0rzCUJVDa5L&`W*a>tomUsbL1r+oRQqnTC7<-DS*? zwcKebZ%>%*hQk^ocgBn=SYzoDGiwa2u}q1XJptBOs?^M#3~Q{l)Xduo)>xvSM_6N-A!gdnu*R5kr!Ryx)>>|6?g48oG1P3If;HAK z)XZ57Ypi{!*NRnA!D67-^~DX18N`Z|iVV^HKEXTuyC+ zm~<6pyA#But1vT87L%^h%sNd>x=J(q3^C~{&D^uaq#I%8ohv5Y2($C~=nd0tm$aC4 zRc7IZycech&BfAxq^Y?ay}AE9ZH1V0BhBtf{?MOuBJqyLK_@#+e!S zi%B=m%z98vy76ZA!(!5nH*+5qlWx43_XK*wbldr9^oHrS%OBAjrrW}d>SLm*S&xM2 zR`ZZZO?uiR}i{ZMN8MFx}>g?FQ3r zp4e_M-F6n+4W`>JV!Od~TL{~&6sB7ZY`0RFZZ%@N!E~D@wi`^h>0-OVbek!*TSL-p z58KT%-4gtt_n&0z){0q}*v;5=1pcsc!L>22PhedCrR<#Bz66Uiosds9-T z^DQ?K|K(k0^D~KUpL+Yhdi-tweyzO&j_Jm8w^0AaLXATtC_iDL-RRZb)>di3uF~FK6#qk2fwVHLtTCPgkb8 z&(Qu5KGz%k|10UAZ}Q*UxxfF;iTr!Y6X(WF_vL8|?BXDD<5pL zGKXVmO-qBl@mn0fGFbvIk-2VKx#mFPw4r*lj1>I5D);We;KsdiQP5}N{FT4Nm~^!t zb@}elTlwx%%-OobzGR5>E{*DqZEm2=|IE9?eWe&~+y$=fb8+Jq`}S`N+P^>CxD(y` z^8-fhd?5$Kqc8@FQ2 zsqP#98MWOVJGyuTxyJn&eeGAzvNjObe8_e;vi?pJ_wICan_|y(<*9Djvxbr~c;~^~ zHrU)a7Sh4lGR?V+aXaUhrn*m$m91%(%UeL%rqJdI>O+3xMCRp8+2lysma;}{mW^l4 zxYl#9+&Jrk+n}}GFPEnu3$N`Wbt8WOU;RLIP`zuuzpr!~^A>fq7TwyHZ)N`5zt`Eg zF75-J&U^oNAh>bM7xX$4a1J_&f$&+@$CIiO-RDxq$zu}TD(9RpN9VDD;Kp5~d-Ifi zEoHCaTV0gBk#DhnA@4$^xy+Zp#o4bx;Km&s%cb8jDd+>omG$%i?Qagt(FfSO=}e>V zAKr0e#I=7DTnC+#KcOZ4*a`Rv4R&o$KCtlEaL+y*dsg>_lyBz}o~>XnJ5i#(H$3vJ z^@$i;%bJ3|6ZcyNf*W_Hzf`zDQ?_BNO9v1K#Ci;KT_PdeUakE z?Tr*St{y3FTpd!}xV@0##_fp|H*R;NxN*B7#f{q)DQ?^Xq_}bOk>bYfgcLV!9#Y)6 zxkz#2W+TOon}rlNZU(YH+_+zRrjhF#O|(s+d9f<_W;XuQ66{ZDt*6+a=Q{MojoaU| z#X{dM^z8VHHwWMD74KqR7EhutZrtpR`0j7qcYVA~F-<%E6QyR~r9JWfUh$mvzPWLi zUdUR_ok<&LZd@xm`|}LF^$NIgLmae$`)Y+!^Ta<4wNa z^X|uW#NxD>zPWL~Z^WkidS5fJ+_*)3)qCq!_T24v#RJO`-}{PuOCR4`RNDC_@$z=X zPyQb08_6|iq-_4ETi#`^pl{go zB@;sR-K)Pe1l%}svGwR3;>LZ@o!7B($wgabix|3disgC3j@WCGsLWK z;`a!@Kk<8wUj_F*C-a-mZx?=x`5n%0Df=@zqtmYQE$Ip~+K+|$U@Ww;*4R*9BKr>P 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

~wOgJkGIO_$lZVh4=B-~5diNLf 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≦-POu{sh_h~I^3Cqj|=Y35MzJ;@Bryc7R^K#k^?!Jd?rA=t(D(0B%krK+B>XqsE7H)BI zB6dE?SCG>diS)PeVIXrZzJ;8&NaWq&j8W}aaHX7S5$TU!^_I0d+qjXTLHx-F)lO+2{?o-&y5+|Bc1(caG1|pLy?DG8c;B zTlg&BHug`uwPVnI^1m*pjiY=E>#5yY6U_aFwZykD6WO#TnD%z^*?AP@TX^fY$Yy=; zA1A(rf8Eu4Uo&ridG#uUZ{Zfzm%fnhFN$xWZNow3TUZ*YUyq*g>r=H(pd8GXu@1RD zx_tgvb8mLZNaM>3nr(f|IZ4er9m+YA;JKILgUYw?6I+*_dN_UQ##?r5N0Qtt zIwv_y@)p6ju&=G3**mpbI{`mmn)UBh;yuQ&#*HQ3m~gHzLrv zLS2$`{m$XROt%WQUgEi$_NNhN$d<*Zid*^Ys{r(sE7M4;M^+y}HCVUIc>aVrUx6oSMCr3>e^Qa+1 z{&MC*1AaE;sd2gDkCcpz^XMFI$0wsX9OGMPn^qLx!fyI5b6EGomsbrB%pGp#aGS}~ zu)$j8TbN5fDtGpN;4*L@a83CZu5zQUmf4V1$p=ue(2<3-bpXEvWJ)5 zzlwMgcmBD$`ch1-7}_aSPJBY9`BH*)ftb6Rx2VotSwg|XGd z_ImHiUt#j)_;)ZO?>@9N+~Yg|YLC+&-@?!M{#xN%NNq4Ad<#FNj#|%R`=m&}l@hB` z%AF+Fo=14?S#Vz@CU)%Oy<13MoM8Lnc-t4o4(?-@^ztoiWBWsPVIh1A_YQ<_A-n#N z@GWd*`@-2@`R3JN@GZRfE5Z3iqAM>Mg zV8#5@@@&sjgKejHXVYJ8>wWZm3+eR+mv14l-Wu~Qe2)HjoBlWo6yL%Tpw{xkz}rCA zA3nN%VBbGvd<)wngIhOU`M&?VJ~Om@3zLz-*sQFR(x-a_X{hQiN{-{u$z|!zRmNN*gZ*jtRC&kg57HW6|zkYn6%F0@$Ag@ol?NL$W@ zY)Qzukg}W$EtYd3VL2DlmUE%aaxPR^&V`KST*#J%oC}=68_osxHimN{VL2DlmUE%a zaxUPrF`Nq-%ejzUC*)iphTU*3kdM)DE+j1HLfUdJv{}xDD$BW$v78IpQ6c9-%5pA{ zJJWD3BrNAb+Hx+mSqy@{AkKg^cA~$gUf5E~G5yLW|{G;5gWDE~G8zLYw7W;O=eR3UN7D&V}sc zkaHnrITuZ>=PRBL+eh(g3zn?clh@`M<%ws1Iuv9j!ShcZaz0F|=Glj* zfhWWBV;-I7xAQ#9GXh?M4S9CqnalGzp3`_PE;tNw#!N=vO_M{Gek5kX+-Gq4O_$@- zOI0OwgD%MXHlot(G7gby-NP9AOfjqxpt+n^>n z)o>fsmEq$g4)YzG-`wQEuC564VB~4wHom&MM(BD50HtI1I@7QHBqx37d7< zrD6LkPkRF~)5_DHDIuSOw^lZOE?g_Gj>M4aZowgCl8tpT(&zeans&d@e*0a%y@YSO zyuajljjhA=a2V)p`YFEc?#^hhcq{GT=k9gi{+0c9EI&KrMtS2*+caALG8_hqt60Ie zU0js*Q4O?*iBXTrtvN!!e~)j+#>>HBJViONRk0jwk$2}MdN~YEv;D6zt+{9NecSnW zz8eEpzShr%b>E&?C0BQsyVtLKw2Y%|874=3wxWmoW0jvjdu|vDwRWc z&>Fvdzvo`L{eI)_;haB*@4Gp#xpu8-ha7VsopqGGC-)llS&ICx^X*RNcpG(E&z9@Y zo4IcMHHU51SQq9zx~Zu*=ceY(�H;Eq=}%_w$$=y~Q}}y2KlYpAK^%EnytGxCB3E zx9LM<*EoKhu^=7w9`biG|K3M_onLLNdZBauxiig^y%Y`uGivF^t=1^J2r>>3)E`~-+qyA zXZiN)F2{=fcJp@O*x#6MyEs6_ub!J@?3-_Mj`qC1jlE$wYp`VuXU!P&q2(}$jWgDP z$MpBKag5u5G4i05(Qq3yB~8BfGlUaKd zk23|C6kAgv|B%OL(~v4L90uzv2QdBWbH-fdwM#u52J*Llk#^~gjb&V$cJcC*>)VW{ zVfr>Q8J&i%>)|lq_u>Okxqe@t=gPHnp&kwc>G_|}@6~nc>&xkDt>IUgxe(7&elcSS zzMvisgVWtNZ67yIxA$SAt$}IxTC?MrH*Q-M6ib?c|R&_vDb#UkD(V5-iBSZf@I!4nt9bw@2623iM)k(1u7gZ}zw z>PKI1sQS^@;aD#Z?H9)Mj=E1wUudi^q~1D@U6N$(sotqs!IK_`K|LG>CU;45Q_r0d z#izZ6{&t5jBfbLNAvqKIovq~CL`HtzebsxnnRxDbyxYvX zv0NsRa(mW3#`E`V-hIPAg5G?GdbTikpLXB1{VKi!>BnnId-bF82b@m*`sl?>$X9Tj zf47C0Z;g#7kj;&aY-xNGQ;lk`!7{_CSB(ji~Lz3x7r zZQEw<2bsLQp{ zZ0!hqC#v&y@D;c^FQ?t+F&~r{snO^GuMH9*U%{y^kC>HRJ}IL=k=^M}zuup|J@iTK z0xH&ZC-5$CHnJI41!sX_1G#cSAd|7G*n=gO;lTaK~| z&GUDgEjypT*VX&EX!+DT##fNuBDiD?WVj?!e$0$ycxwGAqxa8Sj33qW{&N_?EJmS#&H_u3XOO-q` zc(&)6m#D;VVAu5Q=0Vow!ngXi+45h##94jJPKwB8zJbm#c0p$I;1Qb#U%Fju+5chh zOu*wRuC#qyvLs8kyvmks7PlmWG1vyeW+xTuHEPx=8Fp~@|3ou}e*>NW!`QNW@m2~^MWenJm`Db{Z`y3&w zs!mm%I(6#Qsq^`qcbzdmK9I0Dlr?b~7mlfJy-O12a zI3K?JS<2c7k+LoLWfJhE@<%w{^wz09F~R7~OCz>cva{BFH^yHVSXbHu?}tC%XX(pf zk`bL125I99u8mNqjW?@lqk}g7E1s_$+fnyE4^zLNbLp8^ZT}1Nx;1x%`5+%u-f_k@ z>Obgnd8Jq5Kj@DwZ2QbQv4x7Eev`BOSZvz2=x+`FgSQ!jarh73gvVxVoX!3Cx;g5u zakfxo4E#ANJ_de{hWR?2Y%3pwwUO8JhEDRU{qPNUzSSA66B|)yv@CpqTU6kGYUkaB zjf=tW;OAYs?X)t@4S5VAb3@(sZR$-fkAdP%6ZB6wEJ?~d6{}l$XOzd_tJLk!&U#;w zwd)0+Nu+MSuG1a0W|f~`*Y7^^N6S8LrQZeiaiqNMH?n<~=fRcj#&(o!tS{G}Z`~#@gKSP#TV3(I&;R9km+jb0 zyDKQ`&yM!Y7-{$R`$OCDR;c2RZiYSuy$SjN^aki1(CeYfJJSU{3)%@)K89gO_ zfi^;~hR%Rq1sw~$0{UlczssO2p_f1(hZ^XAKrez`2laM=r}6t~Z?Ejf_-J1!W-omd z9D)IuHfkUtty!rck&sQJ!HHvZT@_Q%e6#mWbox;iP!}d6$|Gs93 zy{{p+T@7|d&CYyt`3~hflkajq@>tb8#kYzt&u8_TlcRR_hct5Z9DCvr&gn<8PRfG9 z{7#MNjWpv!+@d`{33Eih>qFMk=o9cPtWQCEV_T-iJkRetsAps15IlBC;hywCa0s%L zl|KK(aR|sm$-8;-sq^j&|HlaSp!MMpTij(H6Y<&%FpG&3(L=BUl} zT{+nwXsk8%tsVPh7EGi6F*pRB<2E`D!Dsx~wufU|x^Zy`UJG)gO}%f!&7Wd6bmv&j zp6Bzl$agT`?x*1WMCOn6Wzwvnj~j=e{=RU}NJ6z|YzbA&#^zAr5KMv!hhPF!Z^_3) zPlnb&4~33_&V`PG3Ws0>R5%2~p$TXe^pnORcz8IZ^E|;CRF>wf%(KqdNOQD|>4uNqz`29>V zh$Wi{JBE8vi7p) z#=>0UPu&x)xhJ8*A?Sf>?jM8x1iAuyF3B7Vhu|7hWd4bT(z$F?;1JyAc+xGXFq01Y0}4tWO5MyiewTD-OYm zg@radzA1}y^#Xn*AID&0mm+7@M&cO*?4C~whv4oQ&&o}tySqa;XBXVvMR=A^CY3EW zi(_T~r{EBr4&OQ-ZA=`3g?EQK@j|F_6P*uLZlZsKDmT%&P~|2%2YMCsEU4_s`B3F1 z%0Q2Tejj=;^m|a{Ci)I^N9gHL-D8~!6%N5E&<~44a3p2zd;O;HeVNYR+6&$fhv2Ke zTzBEUMihsjPGjrtHkN-(I0QSwmwXD|{*sMUEcc7@zmhk%W(MCueBb4hpB;?Rno{gz#*7Ln>yze*mdq+HJa}#p?SpKvv=Q#0UUzYeLlO0y}O}z-xFQi{rbhV8^s~$ zyD*~nJ|-N3H}8z;J@&N0^xjl--231VJRT%R|4+pscs$6C`bWhf;LXmc|9@}@Izk+R zGkq>1YzWy6{$A)pY~6x;p@@&~lfogG#yZhE)2UGT__l&R1#N)pT~-}b_d%1PiY3|t z`bDVs8^ozUSIU1dH;O|Lgg6AV{=skvURoCRe>>h62_$Am+05&RX{q3lD-gBABP$qv<< zXW0)5Nyq4b|n6jAxl0g4#8&`2kYl?>$G9h;}AR^@V4%MH4Z^C z#39(#=P7byulsM^VJ|{Q7TjS+b!6(p;}ER5BV6aJq0)1!pt{R=2`azbN~mHdpN9&E zpbx5h??Km7y1aiq-F$w;zWJDN2>u=Z;_GR!eD7LQx(}YhwSc}jjts=(#A=p ziA((-hC}dpkQ%vBaR_E>9k8_Z!^A~_!{||c?T`u_y6G#j4Ivj%ej?aQ~?RxGjJ}Df6?G}W3!}|L1S$kjq z|5hA=mH!sAtNuU7A-Fl#-w%RA@S|ASj}wRB4BGDZ^(RVgY;KBppx^pD?5*zn%Khht z;t*VRd#GD3fy&o!pz`%!1eLG<0;v3F3!w7#p9ht%{|8X{`pB@flZ##{n_v?R5I0T=8uLApz z_CF{N!F%V0^Z$Q11YtZSdG76fW3`umcQ#Rc?fc;n{QkDkUU~|uw^>g@g+tH-eLoz6 zt2GbaFT0U&2=1g^`GnW;17xcD<@OA<>*e-i!XdZ-zM^tl%qLrpE%<*p1Y!L1|KSjT z>)_)=+h(<_;ktVJ`fJUSHvfM_&9M0j$%AlGoD94KM5Ryy^74|pzkMH3m*iBV0-Ge z_D{F7W1Rn$^IZWB!P*~$d&0+wLogKHv?thgrnGYpTFJ7Y#)2P&20c?i+{7%ON?K0Iq`AC zI(_?h5M1WwLOFys6o-JfNehFZdZXeHbVT~s z@85~{C;9$31kJ8LcAho>hrsrQTy`gI#JM`r^`*Zb>*V_#z#-U0{C)r&f@!XQQC-+a zoWI`G6yOlljalcdpmKe@nI09s70i~}w}LiTd08qyR`s%8KQ0`CDU6ZwHrGRY{JLy+ z{ye|GkyA{*x=n#YFobsfzP672ni{|%`0Y6neee-*2&|mpxB0!#X|oY@!jm`0?&I9} z$rq|SuXbgULV>s5BxN5vud z;n{^gQ=M@(6o+6ztgQSM?}tNhGkw$j&P`CAar(~<-tIz|cs!nysee=B5ZHB)8MaAq z2);!hwVxH7lOppL$067)Hl7Hg7UqC_Ek#Pt1a$;7kkP3<;o{l$FgXC`5Jie=Xu}0j|)`J zHRa=K%4}L3f;VprZ3^H1V0y-n$0orc;N4f#EOfMNeB$mp+Y9%2?G5iYw#(^<*5A*e zpC}FieOWX-fFO2hafAQfy_*^ zoLrH0{2T9K^QFvf18+ggvVqx(cit7rgqcdNpGxkNrt!{uST13^ddLPvG1?Ya3!B$r)ciU9pkS9fJIj+z>Nm=OABB{M**E zg8Wdz$3^!_BT4_)ZTuv(BR4>~K?muK2Gu_2Fe%ms{YwW0cu#DSQW`&Fs50 z9^_HD559AwO~X&&J2l2^m4$ESVd{hM9gH>89)|DqShL-4;5$3k%y=BWlQm}h-@!Ne zNOt}Me3Mgr*FVB{YMhys(|C+C_0K_r@uvPo_)d>EQ(l4Z?0B>FYw%4zt8Lzb?@X=P zb}fA8YR&Y&!Z&%|X9kJg0>4|2y;fegj+(a{bR3cxJnq=y0 z68X~XB-1bc0E0mI8#{qN zuq*fjyMjL;eJi~d=)Y{s)Eem#&e}X&|cQxSOv3o&7Nq-!>;sDO-NSNorb5oAZqu}iv+B}-S z{Q>Rbvs!j8b)T0GdS1r2ur2u4!=?pGkFT3y-#AUdzc8JgSgZLr<-KT2*j#_hF68$Y z@%xi`WBn$-e~I6}B40!sc}rcj$}F?_EKeB~$6Aa#Hy=bHU`N|Cu)YKKFNQ!oT4w z^!uCM-6%g#T{^^nIA8b=*rLkO(%H6|$zdn{Uf2)Vq4Kq_AV;%u$tow9{*C+3(AI2s z{vh@Wo5MPSqxUv8<~+todFfBBq;2Kliuk2J73I&JC!WLq)W<&mAo+ysI0QQxpSSj2 z^k5%6K1V;!Mh3oRF(AtRu`nPyCYd(vr>v=Ci(o*6@0LzoHfVl(@^h$s2YJt<^Ir-E zgmQPyjK9%{pA|vEjPhD&%bxj)|tL7 zH(X4{+<}%(2upZxV`QcwtpO)8})#_6MJ>>h; z70PE*YnZq0Dli~??moRQ7=gW~JG_y!tDJXZk@t9BTiYL3Pj?IhqJ-T1b90*;Xn#(X zGREmh`c%d^9hn`#fcU%{|9HORiS*mH(dvAkU_jV>$LJcL%MP7VG~aO>^P6VeKjrE! z$U#q;l33lsfY6!n_tfprgt~uvrd<6lJp1{&H*{_KV=FJzH6$)CU_j`8xr#UJ(#^?)%2pQ0T1$2S1L9xZ{7c4LSbO~#5UjuR zybL)0gaM(x?-t49H&_n*Xd8#RHf$dJ%mm}};NKq0Ki&!k#F5m$7xnv`0m@%_qwRko z_Cd7%MpwU;f$mTSJO;!oCX!Ie^YC`JeAMUr&`x;eBFG(x7+U4O=Fm& z@Se7Ty!To+_t39*S>yNO?}%f4csXqGW7Oov9}I|Q=JJ7f&ccYkwQ~sXoSk|eS8jgz zFTez#&3g3A z$JS}}cNX2@oHl>~@oji)1Ovk3dgvZ%7v@cO^}DhM=#FVOcv_3?GE2U>(usv*o(VA^ zlDgApUgOvvi(}&=3<#Z}k6~PVPFMN$dhNK7(=|GusvCK#RNe4obsD;^9|MAa-&Jx( zyYaa`*SG7|f-oR#{=NAFdR}w=5Ob|P{Finu6zcmck)^fNZRZEOfZXSW`w|!sE%c>} zzW6*t(r^3NzK~}q(if{YoEq)n^`s%`X#Yez^7|agx^7myox6*U<=moFS?71Qn zm{GoNC*#6^I0YWxhR4h1PhOiT;T{Se7g!muDd4eSUw0S~?-COve836B1Wo8pu5&jh zz7pu#X7r-RfH?5XLYqez5ZVXJz#8!TV0{0x{bQ~tsejCMXunj3_6st-gTsKZm^k#? zV&bswY`>F%d7=mgguRai1H#|ODqq_v^czgX{3&+6W4Zq6ONKehd%OcTKf-`G9sUo6 ze{U8RK`pUN^78fRKK? z01O7N9~Gx@MVZ!UOfTY3P`?f0iiyR0|UbMxevaHNjg_kVPS z{=k2SD$e+R=!4LEp~8T;8>)AVcS3~$aR*fIwr__D1L9VwFd%M*ZV$Z)s(AVvpjFW8 zp~8UZf(iqo6DkadYoWq`xCSZ=h^wK(fVc`O42UbB!hpC8Dh!BApl^fSV4zPyFM1MVh;KuM0dX2s z7!dQI!hneTn|)s4@tSk?p*a3SNfG>m4b6dZ2yOP?U$@8NWRNrYAl63l7e=$cqchsj zH`UtZF@iWVEz6>w0+w2?Q_RMKEd70{uV*8Cdc4jEw7di98uuk`3XGh&HrTO^NWq=fd47Pfp|q{{C@w_MC*UrO?_glHX=E(T9F*oYpYIok%S*;gd zbyf>#kG%ecat$Vg=6wc!2tV)gbzNo0t}usn8)pgCy+kqDjGcVk3EER^bqcuxE1;lm zVM5qki`4DU((-k!DA$_7hZ5o2ukB0<++9DvuHV9hu=X_PTSCu*ZVpv$j7iXchE9MA z6Jk7c2DAn`7CHthOo&lXVM2_6J_a2Q{VB8x+6A2)$wTbzhQaKZy%;0eZ^dvSj`U;i z)=evW>xSA*aueH(}^H%Yz|_9%OggYJ42U75u`IYK%CzU;dRcbAi9EpNy@ z&ReX7Q&=d~5jLoRo>HvsT<$%zS2ZVeCsJ#E?Rj)^*5q)7j*0A{uh5rQitM3{+&N1RzQNhA ze-G&j_u_7kD};}vA6KYx^L5?|tcIsM@y`iY=&rhieJf!1Irtmu`|Nn@WABh2y%OHM z9+ix)Vf^BH)c5_}?}UASlXhAjs5O$$He@;7QftnS^}P#!gnZFAP`~#@%NBmh_8nhz zWNeS2-!FO@VUDK8?4(k+pZu1({C=W+?(!o0iIvaxaNJ6(L-}0u5sMZxkuNYzM6Sj!ny%J zE*~(aT1O))HE-S~3MT^@c1Wv?>kef++e zJ?c4rFW=p{)$5+)!|^_)f4mh7{5<2W{p|&0N_RXft0h~Ee`M`F{NwN({}8koPQ)eO z9>}|+K9$nGa1-m{Q~pZrCzBkX+IQwRjyG1Hq&{bQ;dgS8d5ORMk=!2uues8~w?Ccm zB-x1DWj?19>tP)`LwTLX@ZsyQIma3^pt77U*>h+rS=O_HdH4zQsQIkY zFtVQP`J27TpF^d)8<+>{qm8t2kQ=ivLxlnHCFn!Y$=JD8e=u*-A6rD`Rr`?Uwk{Lm zKRoXEvVKbJNsm*@xQ6;U!dK|Gm}m7_kO=axz}Ij)mxVfPrsGR|^y^XjzM=RJhccf> z^UdRv-AJ;Gnrr!P<@NaT+?ROcI&Y zp6_EecN-eitfpLE^)c>6^CtwAl#_lQDA!pL)I96Ubr;@S)U#*!yt+4OT(Kc^cd|HU+(>7UGD5n?q9``>_hyb_k%0G<|WQ@)*sGU zPCkHD_-k{e#Fa$)X4j&tr-^%XYx8o3x3SNhMUQVDzb?K5yjgq)c$!%qI4rozB@^8E ze{A>;bIW`Fa%!j#EWSg_Xrowx4&<}P?<4Ku81lKPYvnU zd&jF?ulIV#^y|IJT6>#F?|m1(3iKXpd@#K?72Q`9-yu2LNOyBqS{md&YlvU8{OV4k zF_Y-&Lq2u3YS)>Uem}?W+fwY8{9gOzU%cG8_0cdsv^!o!e|x(_IYAe*K6Dp%gIynm zKAVx$vqpA5`Y~5YEGzm^V;0`ojWE(dN%oLSv5&-q^+zVgkhdZ9M_S%9pEZlUe07Iw z)yE07rtsUskGH>c?|%Y1O&IAXqSMl;pl54zZ#jOmQv796y;cElD?M+FQ=8-MRmNd? zVmNo!j2*n)t+x&EX8naFV~qS0ZRiinTk^B!%ouOF+mVfR_uPQ|6sIop_PAmM6-z2V z#XVI)zGH6Ca|pamfVXim-X_9ZUc4pCdyp|K)Yvu7<>oTi^`7haZgR*Jn4={V{s2{ z`f;%5k%+FU%c4Umdl))2YWGRc$=-Z`vIXanNZC7n80xv(q4Le$3VjNCGgR;0Zi4D= z=LV?agsz8v5$ezTaq7>F^3TkT;ya{6e232sg72_{Un}T-*=W-9x)<9XJ@4tcI>WZpO5!nbGec?JANMR+lNTmljzU8^yiyU>G`-GtIKlM!?t)! z>kHdSzU%8-%6cS=%d1%DtjnF|h5D@^mV^%Bm@f|ux8s%Q8L)Qh=i`^F94Iu+_ z+eY=@4cU25?{1nr-|gYNH=yrYk<&e}oBH)Ia%S}~vMN2C(|IG(4{P(X_nae}7d@wY zMjMk2AGrkQhnU^ejb4*~-~`r_f77D##>r)>yYN0ydyQed~EjdiAOe-6}I_&vHhejjb~9y0#Be*}C7-qNn4=d{j$iJmK1=aKO`?W%B{&x1t<=7^iPlpS{KeOk z_qj^T zgE{eM)%e-8S?4zFhMOeA*oV&}XNz(pjIeW;BY)`Do`2RDB7=&VUjeT#@^1;`o3*qs z2zEE$@;tk>)HE!Nk#Axx`51ZGNT1g^jkUC|T}#BuM`XkMA(x-bJkr)b8otBPF`rv2 zd!z0)?qh5RyW41q%q#B&*I6&pHxE+Y>zlZKx%tX)z1##9zQYYr;X7OpT@LMnE{1kO z(LuG>LgzvI*9-IUH|A9GKbTzV9$+)Ro%rzm*EHi>k={Acodu=S9%vqE)-dP2%y~93 z65mMdoP<9v?qiT%JFrZ;r|_=AVwq6CuuN7^kJoMUTSgk`woY_grevh~uUH$U+(X#A zB=nmfZ=Gx3vHFczqli6W`yl-mv&Fjb!L=~vO^mshOJTc5%SQS8iQ`Y_<`wX#yXORL zTDkA|j9C`rvDNv8PJ~Cl-U?!^B0TQQTT&dM_9^YYGWXZ>{ z2&=S(kH4$=KHvF#Kjh;aRdWwtV-Wg?5AgP7s{8fd#Gm0`g^GO{ZnHq zZ1;j#yYl5L2Jmdk7Q_HX+O@uI%AfkLG24l~LVm3!lr4BS8Y$bD3-Osg6Khw#eA)Vs zQP$h~aT~ue8J2y=zbW(cgzY5T<6X*n+avCKZcOpUo;kWBR#v|JX3CbV#~&a1@&ohf zSbycqmwZg6Y=O-Y>8~xz+Sx8vR=#}MV*63n+hW!RiNpOt_bx< zJygE@BviiqEur$|Zw{4@Y!Xzy{0UI`^2bBv%ddeR1swxD7&;0nU;YT_PSD{{`SR_$ zr{Bf>@ay6@{G2%M_bz`Q|9!{0I1YDEZjCS39rNF325=niKPhVGRrlL@C!#wxm7Vtp zd==Pv(!1=daT`y2>E?XWef#m1qL-5CVb*8AKzz%tK}K4Z4>$g8N4j~qNqW84>ii8w z_EW_&?(g^0h}~q*3CPmkG24&WgZK5>*HG>)c%lw#11^#ch@4vAQS-1Kz3Y(gXz|+v z@qo|1%HPm`>xW)ZY2yJm_xo&n$bUDsk#yLe*neJ!>8yS^_MhUF!7#%v7*b&Wtq<2h zI_k_e`{--X+n~{XOZ#QiAG?+2#qXKRhxPb7{A1~}^<%g> z(cZqHcle*BUG44boc}upa2+b5a@>ZW&W-iI%kF}oO>qxZ3tv$=E+)hH)7FdYFwvho zo7`NpUlrY>Bl9y9IeSrZmKoj?RHyP|7+dvGF_N8)2_qj!wlbBUfO2*ofX7I zVJDWS@}KkjYhTzV?@tDNlf221Pfq^KE3h5!EeY}+*o4+kiGR}iDM#=-{FJkip@~KO zl-ifHHZ6bnnO=7H1M9_g=qj_aFI)Lv{9fw#>vHRN-$v!`J;mnkRqV=i+SxA=*jNe0 zu*|K*E@wS7Rr9;XpyvSi)4PPKm`}6c|IGMlJw71*7$@uN=6BxL{ZoD)^`kbh$H@+v z-6Y#_-ZF2C$ltv+<&(@|3vHIr=EPW=b;zp5<<~y`!_9XSYg_aE1IiWbxsmzyI!W

GHu;)g~e&e!mEuR3DkKj1yW6)!u!gV+b+6FxW+5(N*rCQtlaaUSv%uSl_ zr}RPc7RFr-Q{2_UAoUp=ceUKhR%<9*TIcbz%wTa>P4J*~-hbZm`9R^LAJ-u}tf!6~ zQE67BP3kvmiMb2;*r`)0UT*>`iEu!*xip-ZY=~oWpo{o&8tu^N-BshU)CcX;*V8dGhl)=(|YPLQ#8& zIZkrd5sgbIMW5bJ-8P<~+u1enF25`1x_nbm-BXAEMe;FUnQhjCs z*Wqj8&H3It7Y*P#jC3*>_q!M1Iy7J>Aj7i7lVChN=k;Zm)93L0VSVl`@bBMO4mw}4 ze%0lM+WQ2?)b>eZ^ozM8dUVe3t+GBZGuh3B?x;%ID~#@*>iB~0ik{1z{3-6OBt6vX zkvjTj*Jb9@=9VJ;(^>Lu_5y#FR1DmF_9?|lw6jk=$6fnb>{Ic#hTBH^=jAePS9qKX zwd?2T`b8rO?nhRABa|&WPZ3;)n{_9LJjzc|Upj!lVf&K&wE1?CzI@oZdiRpp{fO6> zUfu$51IUSzVlDh!{CZpma@pCKUiRj8*$Bv?&QP7K8^t00#RO!T46i5JNkavNi$JlMBDd;Gd=M{l4PwC8JG+I;Km zYk$*Nz*}4o{>1zBTL<>E4b_7e(yrHo{c=W|_MQkCSH8T4bcpXDoprFrhxxE~aSv1& z$ybgwR4G}6XT_72v<61UDS8lY1)0uMfQ{R4*YoGJJ+TR7c z#joG^I_+~~r1@wGsEa*=@p96X==s}J{?^M0eG14&xmY|jxO>yNqe8tfDb#b%pUC`qyodQ^ z#>W35o4E%@_k3ODuvhHdF^AIO0qb)Sc7WEVjmOTqIDFQo{XMb}U4z}cze&@lf}Aq# z+pUvRM)TR6C4V|=q#3@ISH{LZvc`WZ9vQ=edYzr~JTY8lVI081hdQPe$9tgOq11a* zw!~CYuk7FD%+F%g%Y0e9hjh8ISS|^t$J4XTr@b6BY_;~0 z@O*+klfIO_V&$Fq5-;!X_s;St`11D3p!+@R_9NpxkSlUa4MqJp`MJvjcOM&W-6gO8>@s()yZD9XdaDvL57X%tDirC)%|4eW|ig zHwU3^p67K|cQ}XI^G;_>CbH-G*mLcbmB@M?b{#D7|h9^XoUD zliP#fF5ZyAg)Hv`(9_$f&&YYC7v};a&SoWT~wD#=pJ9ad6U$5j@H~nHw4mOUyzQO+8$Dd0c zqjy~L^B%(2%BMT6DagxKv~?}H`cvFVoX5{|jx2qB820C!GfH2t!WTQExwPlD_ZlyG zwk&u(!`?NWb)z%zKI4OhLzho8ZS=K3*WlxloqZ{~rr?f&`SQBPm0vovai%#bR$lLI zHU7V+e8HVer2L#COJ1)V;A82~e;Q^EkJZE3#Ol0td^VAKmh1gja!2E1_%D13JWk)Y zlPb)NL}B;>D(|9z{|N!V+$IhweKE#>d0@b}DFekArW)Cc=HVoc8?w>E%D}A8*Rw$6#FK$EbCB zP_e9OY$LtlvU#=xhe6@Syp^%BG4j9i zMX8R8o=+cNd8zc0#s(d5P;?$`9jv!<=ETlfUud&6@jJ!Otjr|Li}0p*1CJoD)0WRL zFEMw&nt;C-nOK!f^t@7fvb95gOC2XB0&=y2(FOmHp&!3l8RVa2Up=`x$o~%AN)DX- zQ~34fjU%u6MDoL6XP>%7kUxz#|7&SSF$$|n$cs-M`Erc`F$xiRWgjZQ3`ST z6xuJF1n(l5G);SG{V<=}`;RNMaU|nK(4M2O8S#L@in~L zt(nFbU1RO&2CcC^;zgrtH#&Anc(-~J-LexrM9cg6-i9^m--y_^AQAqff8UNxr}p;c z@2ijv`PGKS*0lWg*P^%6$lPjj=a;}UHt(`%J*7@JoJ>7qsfRd-0zGrzMIoleJy6BC z-UZcsFM~b^)%x#c-9LbA&Sj2L$mREs3-K(hUdj;Ge$`r5` zawX=FZGwD){k?HIzVwb#)3gKm{PBtGu`^f;*g<>E0&5{V#O$*>SPRKAvu_Hlg^n__ z-yT7J1n1rZ_5mY;v($n6ff11{HwS+SjEH1~`RYNeg-nGx^bqRLRhY)FQ-5lxX-b2G z&@t5Pc?1{{#2)Q^jQFlJpFaV)<;WX%4&*zSASk!MDJ7cBJ|0Qurp;_0YShzhjhXyia!wqfOIK;X6Ir?3sn{ z+-S4+gYeC}rq4eN-yLJj7k&fZ!C15ZfWx*mo^_lXGCdzruI6)*K*gi{u1z zps+2-%YCr0EpijgSA}gs9{oeXwn%hLG>yWxNKP_M!nPo9>z-g+R0Nxuy}`Ap%xq>p z53a?q+-BwrU|LkCHaGi&Y4Ip>^=M+UIRIRX-!%v3AaE_7;&*pHFxebDE0I4WNzUrs z6ZuB;Vq+?i-(wpvEcY0|zNly2q|1Zd6eGl4)LkX~yazvDJ3M&36TK`vqs4r`-dJD}{sCl0vnmNzcEcp=39lH0j`G>E)=WqKy`D|72dKJIZ9pT#Q z3!k`h=B;n6{q1kxm_XiR~9`Sv}Nn$(O^KkQ|{=7pggdyS2!;GUp4{waTLyImP*w6jB2><$$=dAA(90_dv z`7!-lkN(<`Zw{Z&(RVRF-^ceT-*bF#@Kq6$!MN1y%h$}8;k%IUR=#e&XZR{gf|@P( zcIP{Q?=Zf3e3$Uu$+w*EF}@f0-r_4O4Qj^n;XAEq$%Hr$>EuN7-6A*N{Fq4nv9E9DW|8LCInm*2K zY1+ERx78lnnytr$KHs^-I(VP2&Wuxrgg)x6hHCFGf)kMqOgU{t`R+bCyiYrdJ;dLq z#qY_Q#W(Bia2Km#-%(}~VLpEP<8dN%)+{0SmCl+jCcbBgO^u;p2MC5+RN^vU8xWCm~|ett|i{%hz*FE*8O;ip-<#3U8QWq=c*``Vka_5HhQ z-9a8yCf1OWjqmx`h)lkGh|xZvXB_{_T4ihjnu3 zySk05yC4TXW#07f!CT!K<*VU)gXgGwApRHr7!Ml<9OWCi!&dA04s{pE3pf$->sJzo z=HGhSoH&uPEgcg=>;lT4Uee|QNNZ+Gv z9PirDeO6ntwjW=`#B!7iC&I=EQNNE7(p}Cuw*SNi4bq1LUHx_(y2G*bI1#IUJpYMd z$k}k@?EL1b2AaPWIjcs_s;O7GU0!7zMzAK=(C3lEiL+rG#*V@_gA62C3w3^s{W$Cs zo}*8Tyswvk>k&H+g}LLcK9d|!_uh_AyVj6jzt&EQ$wBL$E~fzX`!%n%c8eW{!aH)i z_F3a;_tsH&NsGA8(p{47?K|ownrW`x__{gJx7+UYR%3Xlad+E5zEi!cx{Q7)XVGP> zaeK!RnTIwfhkrOaCWqieD9&U#a_D1B;yJOcjEHx}e}(e*qjQCcw4C*)*nnJlD!;Az zg?@^!ohdQig%e@@#_;a_#`5c>S@SxdHgi_9_azbD?btClqg@+TufvPi>%)8-e%^Nr z=e?F3`rdycz5Za4dG~ey+2!fiT~sG^zaYKBn7!q5;JCVl6Cv5(in_h*>kdNLTt#!_ zbKdMz-Pjfu7YG|ddOcY^fD=(5XZYNIufJ!E3-BY5ksimR#gAx9*qr(~zE=!ikWc zzkL3HuG3s!$6U+rd%ax?vVJ6IwiCV7SR`P7f8QtZRfbq z9*EjOv%Q{d3g@A(E{eny<^(LITkgU%~9}1JF6PdRC z4t6!q6~T$H`7GK)9J^csdxn0$ivEyo{-)I*Epcn22a1-ePV)`W;cfp&NjkrvBx%+9X{Zf3!x)XYa_N6;yUoFSJN-#%( z)@td5*w}_R5x4m_nQm<53zD9E9v-}&EUF)ojjQ27vLPL_V*W&9u_>6#T>V6Igd4X! z|5n$|8({be=<_#xp3HVCoCZA~Iu)w--&;Y26VU)Y z09pqXPQ+xWa3Z#VV$0TU1{F@kM5u5gYN5i37zY(j#8{|sB1S`n6EPAhoQP_ua3Y35 zg%eQ;eH(m-3g}bNGN^DON}3Mb+(P~k-6p~8uH7dj65HdHtf zZ$gC=@j6sE5o@5riC7I4PQ)tc`fwt))SR;q+4vXsLLUdXHkO~fmATl^_?Jg%v;W>3 zxhROcLCym7e&E_Imfx6ry>K6Gb#@kQZ>V4VcGtG|i^u))iW5}(xj}FutiH=kH#dF+ z9xjaZ-}B+A^|9j*;m*)vn__cWx~@Nj99ZyrPXSIut&MT-MPFy@5hOyxkHGiUHuj2bd(i++ z#0VG5C|%h(e*h=qtd9XFVh4Ekag6JXC%Rwb`GSk7vi_yEfxOoHy0NtJ78}{WROQBU zvhJtcdeB?a4v!5Hx!38FZf8#8?_x&bOG@(1;@gYw>wL%Y&F8y{Z#my%e9B4q7e4u& zCh&28U9&4+OGmAJA8qBkV;A$9U*ApP8f$m>V(ZIMY3tD1l`WLo#XRe<2Xx=Beaz;* zMvr&Kd;qQ6gnPoyoYVcDpm>QR*%RXV`I^(?jrNsEG5$)ocD6Kror1j}GIq8s{0(z_ z*%&42Q%;&3b(Z-$onC2ZaJDjhd0SaHWDi^WlAO+wy4_t*&v8c-+FspBXD7hdz&VOI zvq;&N?0EaWQs*||KFH2`i7~71tTivgTO)Q>va!}Ii18;(27b)9;f{8@E`RZcua`Z z_zqk?@1>8{4PPflRI%`Ha*kI%@3-i04Zef78G~{74iq2XjD0i4kFT2}VM1sO@{uu+ zZ>pxq82C9#_&S_yE1!n7k2zZp_=(6v5$zvyqyD|&&bB(gTfY{3$*=WF>}=akY=Mnq z!sp=UU4E_8$}~5H^UvC_V|SD8ff+j+A4va{cRNX$r($(0Z;;{+zDnKx+^n;C)~*-) zB@w>;x=yER&0qZdx_q^xh7 zc#+qH&HZ1o_FK7&P%Qmz)Zz0)#q(48_LbM#%9LwgabnhQNLlYYi{~$G=1xky|Jvuc zb7f^WHq-73%KCGo^&dxgzy93NZtQ|8POKC96!co?1JG-rcR;U(DsRwL(6gXdK$TD9 zGN>>iE`c^e4Ri+dBIsD?1yEr^EPx6V;yftWAGJS#{s;7I=ygzU7kKLThyMN6*(>`o zKH3+G*-K~mac}+L_EIZ+MB@n7**EcvYu}s@jZ<7++kY?fJ?R7Z+7$cd?(pX0EIeO* z+{=7eJcwP{7x&;(-jFuFEBTi2{hn_%pZ3kD40f|Wq>-cb;XyQ_7t_e#bmiD*ZQGoU zelKL)h*Pm=D#dMeqF=O*hmqgO=4s^buJe0kdpLJ-90=`4$CLy%FQE2}_2EEtw-oM8 z9|Q;DF3O63n|G~ue1EQ=RNHv-yg%bP`T9UO5Zu$I>GvO%ciitAU148~;y^S{S!dr^ z9}dJhzR!-g4}$|S&-LBrbz3oh00(0Jc(XXx_b&Vm@~?du9EfRtt{tz+7a+TQqu@Za zY`rcHM5ZRhfe1nzh=V1g?3-ckxSD<(hqv>(+WZypC?dq1}A;e3^T1RRK$rN6X3 zXrr0+V)u;9&St!C!;MLo+cP#f4g~QHTDQCVoPAAUAN}4jH@LA&?ljzpu&L|0aaYuaH#SHR6$RM4uu{HEr-s94uQ^umO#ft184&Jw{!4ius2MO zoEHlA1N6$}k^P{VbGvN4Oxec6f%p?V#Bm^QZvF^35W%*C<3J?Ghd2-!Vl=P?6IM@_ zEV-x|oy6WEdv88#(b{C#Vww8!ChL7gPHyC%*iamZ#q>>k-gVIacrj$Wn4eQJILall39psy< z!#(pRuiHFmN=```6CJ)-$4`c@%g zgVv==tnJ+u^M|(+qocFMe(O0?*0ZmUV7`*MA-t6xvE;uUjzT!kr9FyC7hgXsg6|+- z`{|sgysy0%o!nclb4y_ks6U<^u9N?S3g6)m&|>p-eY(heWyAC0Tblsi;U33Vfqq0! zY$(2i?7w6APUAb9?-IUFzT5f!gYVaT&+x6}Ysw|UH}K5!@#)Y;vTp!N%X{oQJjVF9 z{(ZmGMO}64zJJ#`Yb?_k7v}Pku1jTx^c>{s);eq?22T5=_NOOexyaj#;5+zxw)pv| zF+0l2W*pz4fxD+>WMD4xHQ4#6F$q2g?Vs=0z3W>kJ_BJv9fkbpu3fovZwQF5qaQa~ zzXA8{5gA_}&Vy{93*f=~ByC>3Xxa4OI1hSDcsFGW-Vzp+<^2Y{&GPR{-MUn6D0|ON z*@AoaNLl$2g!8cG@IrgK0o%{srBJruE+tZSeK-%=8>+A?d~A0-rn@l{=I|})w7*XOecAh*-8i>9 z{r3aPdf!?+XRUHiYmUy2?RBkA|J_1a?^}ucRQ7l4vIAf3+3+pf(!MVu?$y4*qTXUS z57K>qz^~$UpJE197SVmzoE7T6tD(vbbrn>(p{{@`H`HZN<%YThdKJ__W$Rr8Jq>yR z^eE^8=)utQpnE`n0Nnw4Hgqzy9XcG^1|_~}aJ+_&;y4c{Q_ki^VBCx5Qy?BV$s9%V zDRhGKaHKESO*#AaE%fi#2Lm_{+iP605#$qG-Z-{Dzs{MP5a(fz#)0whc9CqCVmWpy z(9OJmu9?B7+<4#RlOJ3N{w0(Ri}R2kGl26Dj4|8CbZgfqiSy7gfb-B3 z#d*k#9>96XRN!L|&(Wd(U;yV~xc7l|xwG}A#Cb?;xh~EFypb;Qs=J?y&v9-Hg*0gu;1`Y z=zcMpS8Sx_5xdUbO(zC$9x8o)^bgVYRM&RDesS&ACkJpIUOz0N_v!|49vU|x&O-ve z3iKXhF__+)ijLc#?_|D<_^#o*nXjI;r+28Fg&q&GJDFz`(<8f>{rVpR=b^eE=V3qP z7H90Ozp-(26zAdbAia}$*vnUUC|`>6(H%}}Y7^l+^bYICdAL(=5a7-F1Luy8;ygSa z1Us3|7;hUD=OGAj9=43)JfPF`{y5;9urYBSI>OwX*Z7=IO>QkaAKZo5xdrz&5g%9` z>qWNPcptaq%KCeoO@;HY+x$?^?E;nWZ71kc&>f+|dDtGR`HIKBVn9XM5YLweDlOWC~cF#ymnSI}NJU%=B zzDx0M`XIKqtgeQ9;J75=z*ZdC1G2l}~)_|{sGaruYSsS##~ zlPm3U^B0X6zTj zpT`x%hlKvFk|k&UbCG+A^awj=kBVP^wqy_VanEDC?cnDNJ~#ASyU_6&Ki9q=&ck%{ z-KY8X;rj~T5q$s3m*KmR??-%!Q_A#=t*qEj7%=HzqxsXra z#hT`_E4I$t@t-MX>np6&!D6-=g9^*T&apjFcn{5# zZJ}(zei~U19`9j6tX=u^btiESW&Qg<`{p-N*7~?p<>t?a#%w6|4Ey$#vR*gF?`S;U z!|YhQir|l2` zUrB{{4_R#ag|w~pY4fTDrAD#5S?Yb<=M0OiPwfq7;nVkfgW`RUws%p5F`hSmKhz_O zq4Mcp2bE8M5mY|?4yb%(KZeSu|0Ae;`aguqr++2%DCp%-`SdS^%BO!ZR6hNMQ2F%j z`e$7h_s6e`_wXOYXSY#yy?*?Tb@3iR>jGzq1EJtYA%cv2WTpZSnOSu`}v|Q2*}W_k4I;j_sv<`?<LufPrjq( za(>6YJ95q6uh4so&bh;SZuFQ4?V&x;jcsJ#aN~p4ouc;X%eha@Aivs6H#W}0$}>Vc z>3OK$OZ7pOQ>z!M_fmg{uV@@h)E|5EA>o>|{@Bg|oQIQrpWIw%Z{N^8vzvD13y%9S z>N5j44;QFiFTcz2(=jeOulz}KfJ|+Y^FMq=<+qqGwj6mS|47Ye_*(cpE)zH$RtIk8 z?eHcy*X&b8_vnax_2WFGhg+P7%{K_=p}ZgG;T^w6^@VM2GMoqT$2*|6HU#IPeE{d- z>oNYi+`8SjaUg3yIRhiI^49mlwfqKDK7!Yv!g+WVDx8N`pqvG3Uxv0o<94a;TP%(x zcHTn{-@(RJwSkks8k4TY2edFCFX40EUW=^p4UKjC742({t9@^$`#d|+@7fo@vCB7g z4B$L0{3>hS<2-a!_2WF`^uCPy>h=PA&~2b)*crp~6HW4-mCbJ(B!Ij7vq ze`G#4RA+ys$b1g^u93A+)DFVFEQa$ihq|pD)a~pUWJ7*e&UN{w-0*&!hoKsG_Jr`= zL1jPA!y%ey{?_|~<&WN2I1dxxO?!e}N1i`;(>kh858yoXeg)o~@4a)yP_VzTU8_?0 z9i0ru{q9?^_BBV=@7_9qACLq~pqw&Mne9U_d|03Ri{Bl1A35lJ#rjp3#6N&6kz>gA zN%qMv>I-omu2+AV3*Awbbe9+4JlyBxPj*mAM@2u*gI$;D9n7PCKj?D%75&pW;ltoO zERFQ9U(dw*ljZzLf7Gs@qwD7v;yj$>`eWy5Fr0^`is=2w!XVheTwSCuA9k+JaDD0T zM?7D1ZbW~+<~_x)%~giY$$K3evr8Y_T)t)-7sXwQa%W^&ce7pp3gim^o^)XW&O=?@ zI&U#7&O_SaJfuqta2^^|FLJE>7xlg612_+D<>nwiHq6Jy!g<)4F%r(hr=UH4UA7n6 zuO8>&uNn(@v$kvHfF69%`}JExzCMWUT0^^jUt7n1O@;Uly1)9QqivuW=IBE zH*tMXcn?=zC}$npn}i?Bu7Nf4VdbpvJF$B>H-7TX>#SBUT!$oB0@yd{EV{O^#T-H?88lq_-;*IWt9LPj7L3TLS&Pmyf0xz5_lX;XC|F{4}`x(vm`a zhZ8k_9^YZbkO6#$`J;O>Dz_={9ZGj9j_;6h_zv(L#dp|4JR(ccvFmpBO#!|GwjAdc zVsc2K#ax3}Ym6sx#CzyS^;Qy6}v=p7-eT0h-D)gu7 z%wv7Y=!1gTUHa{FuG_N7gt;PCR%f1~=i^A(d+D3*dG3bl%+r64@OBuw#p55HN&P-| zf1;tRAIIP^w=c>jNpy_q$1!NsoG@1__~vLI1S3`Tc*;d0fXX80h~T*Z=U1&yetq4|c&tuK#`Xrv=}t?1eUD zHJu*Y1Gb`-S8FrS_t0h-+cP~jSFPL+Y0r5R-S8HA*~foaJ&`Ld)DxMR=Aa^Dq&WNp zm=`_{UuU{$%%ft$wxwQSUTnvF2=ih(_H;ZS-p+1}J_VIOH+sH&UwnrS-UpBq&h{7E zNw#ZQ*O&r)hcyQxKWdlp(cO7g@7%NGJlF5x%Z_Vu0N>$`D8557hVPJ^X~q^AgSec0 zP<)3sPcM{{_mda@?>%T(ukv3zCTFETam7m2KMyN{uxqyyX03$jfmXEp5i#P<~B1&`~f+ZdC#kcV5K z(h6j0o1Fe@4SCg_knW;h zz&7!BQLKq&H?YszJE=kXD69$faT;S%Ngt1+ZrL?aU0jb&YGzGZIZV$m@DSQcu5J0! ziEFSbW&l zK~9!f9jE`eunx(J_Ma&J*J|px6^z^y?HG`oBT`3$la)GXuXG6XQRo)XpF%f-%9l0~ zsyDs0P~8c|*OBg>=eT!)N&2R|+`V9_*sq#5wu8eVd z9$nu_u72&u7qZXj-va(kKD=`$f_u!KVD$lg))=-rJhYd8+-C6xz#3S1eBG8tm;<+9 z*AB<79ge)n=Bg&w%(a|Ld*Np$ZAq7B!GyK-^@TQT7qY9p>}2K80>46g*&5n@o3%q8 z?)*F0Yp0fTPQ!jXt%@~Koywm+f-}cxaOK9Z4~*m7JwC{%C-L(Z{JbT4gxrFCtOecA z9tdB$4?3cp-0twjnXpItp`3q{Za~M#zmor3#J6ktYjyo~`tK#mNH-9tw@kW0?;C1j z<-Y0W=|rgBY90^08|w9asO!n;!C0im54$wF7PNo*zpG=vYv6Cv$nW!|-(NAylP}7x*y0+e7`j`gMQ0S+z$Fl;cGO`jp-)#OMCZ@j`er% z_)3<ju2zQz~W8KfJ2k}D z_;09Ui~k5!4Ap-^AB0Liw2mx>26L3cep>ub5qypG$PizHe`B9?cvvG%ivE=`kHXfd z$OiVUem0=9IgiTsm0Yumxj0+S%<5U91`Mc5OZd6HF6GD z10RFM)#z}z8bNu8tC4oN8d-;{k*o-DH8KuYBj<26QbR*rjSh#a!TY&AkAUyA!_~+- zT#aN^h^vutxEeW!tC1QO;%am_T#aCOh^s-q35%fIb4knhpRy@kv)W~k#@KmS%<4Zo^p$;k#V>hIfttO zzJSHmAg{2+)d(hrxEkcMwYVBNhpUmE6yj=R9j-<)#MO8hn|o;Uc4i-8Yv2PCw#IMx z-T8IX&3@o(e35JbfxT^KnVD*Cm<7fO zKTliUU~bwSoD+UNzPZ8NoT4ps-feq;agrh**FIpU>_MLV{aoD*4d(tYu}|>#b941( z(Lq6e(IMcR@c(CZ)SK(R&YT>=dQ7{1HE(HdL~g72_kDXeGfR$f{c79H+;W2JSKVgj zwr{z9Juu1Kc?!5K{Qcc6lg!_1HyJ(`hm$hvBS31euKg9O$@w(JR)A>EuJ~<(; z%g{c5|4?RvS$r0FPM^&@al^Ubg+gySKge&F$~Zg;4YlUJ>s)&s<4xy{7H@Icb+}=L#{6P1W{w`!n7;vx8SMo(fidG{H{ieYOwOE{5r%nRIyX1Xl%nUG zHba)Ft*#^>lg}d&UES>LcKds?{MnfnR;uecNX}?;U-i8gVx9J1cTV14H*{+Y^H>r0yL^>FcS2!=r&XSGHST3x~e8#MrTxIQ5 zixGzn>-YIwF!||i_}dr#-=;ooa_(hN#TM_Zex+~4jT|J#zu zPxqcO?9%^akN4v%e|>cB8aSJ2?)u1AuJLVp^Y5>Rhszd3u(!NQQj9zv1iPci3Guq7%rgQ_0Uu`1x?*QS$F8_Ld-+ z$r=r6?9cd$qIPQ+^Q}A%YmohdJPr{#hwlP^>v!ST#vyU`QCt@5Zec+Gn|BW$uVWue zF#dLr%S|<Oe_n#{o z*KP*CpNIEpo#V{5oL?pfRTlfHXnFFw`104g@|?SB4xs#_lz+^YAGxZH@v!Z|i^k(g z{`Ltz^!>t1=kH)LRaW0GeR|O-b2(=z^!?HarNhmYoTqF#?5_-GD)ON$n?EVk#b!s|f=>PNY zE2IC9z1GM7d$~x0@fH63xp4gW`~QmmJ@x%Q`v3gJLg zu|HPcWb^hed+Anu(~QxoJFJgk+3J^U4C1mkSG#^QZ*Tp=^}A)fdFO7|?}qVa?ftIb zxp5}i>TNH0;>Jf7{l0ot2HkVpuP%6EX7%lF zj7aNuBkUTr^4C_QJHZ0bV!iUh)^d z4Dt}R^I7u}Wlp1veCNbFa(_N=na^#bIC0@cvu2mpAx~jDpEG}?%yE>Fk1~uW8t_x< z&SEOM)0ROV!!mQsW0X0JGP;v`fp%8XPQPE0cI1<^WjMQpyv;EWQ07aNkq>ee{fYV^ z6&G==?+@o3$}GiHGIvv^i8A&+g?8Se9eD z-m-X(Xv-V8gkd`gb2VkAQAY9dvNxWijE|XDyx$4FKVTS!?Ig^Fl-Zmzc1~$0I;YmZ z=KGW0(zR1!+9)%UGRplc`{PyG@$blW|9Kl_q-(-9N=zqzU&`Mrj^J(Dc!$6Du>@-v zv)k#vWX}G5veaD0-@p5>ZZ4@m>T|{h&+kM(`u{#tYR=>DSMm4q%gbhn`sUxFeqsX$ z{ysazoWb8e%ik;R;AQGx1wTISKsg8xj`EMc;Uxb4N&a5G_chf2CV%hWgD76=o#@|Z z%gmAd{V(}@z5jTZ`aRZdu7sbdf35oK$A^3VL;3rE=kH~IDNfS+6;tf}y0;?cZGiud za;CKU(-tJ_n5so{$9Du@_wGtHFivM<)(%*izuV_9k0-aVk-vTc<`=}K7{MT zl}T2Z3d&qY8O3Y8MLTa(#=q^5?bR0TN4mmH_u1FKBb46XDN3g<%+FE-Q^zP`_$pb zVW@e6GHJ>bTZ_6ARnB@l4(RVt9xKf+D03iXimgS?j`{MiUrXzf;W%i;> zv9+kTqeuHW;%sZnbX1y~DKncg#nz&9OQr7*{sCJiS80Asndy`%wiaKaotr4rzgF;R z{fxg)^7qBoqGG3(MCY`l$}HpWYxsMsSDBmWT2!p*cD^6%pW%27GvB661!an@M~~ZP z$C&*$9Is*K1j_vRq~dE*c#3+EriL<$C{t{0 zDn@HJFT?n-Z2$37R#4_L%IN*dbIg783@<%)C4K2X111~8b(tMu^5mra0p+ZIrQWE1 zRSfK*^ywA(_^?^qwy@>En;Y&V$AtmD(*LH+36v?eHj(>$ z!t0zI@c=558fAJYb2w#+txbzzM868!$&E4(Qs&E)DYiDTr}L%s$?CTLc1D|fDYGYK zimgq>WL)RVaE7qFb&NJkC^L&P#nz|nrR&4FU0Bya?nm_}7-O!X%yyJ1wnk+yZB2hx zFm7|vyNyGw{sil6jJb$%TTss0Ka5k<{*le}%TQJq)^WzOZRN(8`IH$&8LM-ViKzXf z*s){i6K7Za5j%!uGGom=%9K(@^BT2%ti42k-iEiku|e+&2QB89xWf9ZbiVggw7>jSu~3{_HRR0=8D6U#cneOEq8{Yi#QA@%X!Iix&XD z_(P1!UiGc;K1uf<^cA~pM|0<9RReiy=__|(YwL-ZXd+(X2;wEmf*}jQW}f|np#0bJ z9R_6;3zj^H4}`H?$oPGiGrheN#%9-ey~2HF`2Lpr>gH;5Vj{@j7G$0nfo=Z{#w}eb zf5)&TlH2c{PZKpYs265>=~?=NvCvr2H3^m&#T;pSENJT~Kz}f_H`y zNBy_POKwX9vv02o%tg$V^pCJA)(+$%SKQtl&UeT1 zj`@(Fdcnlf)NGyKTZc?saKz(@o@+M`UY|BBIOy8zf;&2x%Rc71S20b+fWz+jZIT8B^{pSvvXYBx5c)m;YR6 zfpX^T=Rx@@FX#IqH?l#_O%R{L+*Fn=Snx7(zAt^)7CAq@GB69u*t3xF^k~kKW0`+s z;;f-Tk1*MfWgK<3f|thw?kL~lOssM2_vN~|lP@Ay+N$L+DH_o1HV##9Ntgr#r4gz2>8$}&P*52Z^t-*E zVFrVufR)|a^8Nm6?;UoIvA5rp=Q+>H*=Oyw-uGSadZ+cSwUiS;Y|X%RJ#gLfV{9PG zsg&1I_JfD}^6}+@XkpRk+x~eUHSTocx|AOXVk) zGS8ySFZq@OdB==T)wgV44)nVvl3Na3%GD~PH0N1)@=7wvpIa;7-@0)7SY{1;fX~pB z%6yy4d|SqRLmzF=v@&WVt?`_VjZV z@62tT3EbMF`?))IYpmvBw$7#1*bVpj$dhXpe6$dFHD_CRXSB`>giiXOocUAbz%vPW z<^oT;l~%in`M=!C*b;GO>_iVZg`vzXA;xQ%-lIR+E}QAgw88JM@xT0<>BOI>D<_w= zNpi7rd+_}SeAnCw%C;J0iDDtU;_@fmSjgSL{C=2q9?B1p%gu3%{F}R)bcc9P#>5{3 z>9*kiAKvEfE&DIZ#f*zDciZ${)dlv7F@bn$Y?$rG@L#x@Tma(bRf_%6?@hdK#ym01 z=ujg!z42Avq2%kFk=#=V&iCwd`L2e%AMsrcF%He6)O>eezln9W47Dc%dlkHNV}cwS zXnqKtshCVA@;r0qKzlR4uRv!;(3z~YI2)1W4akW-w5UYz*p|+5$1*L>Wi@zii?mPya%{|W^e~6~N;E#6i(T;qJQ;fma zo%fJ{=E_<51*O(O?xp+>N<%mL*FHL*zh-1wpBb42jmQNe4M=%Z6-^7RwAM!GAJkof zhw*cC{|NDbm51S@!y#*}fv@HaURA*7@2QX;ye%sxIqMvw?Jm%A;XUXMU`obI?|lSb zS&Ty~b&rm=@tcO>HhgXmf1ea-Vwg-oIwuOmvFt%E2Lig6qsk-$ z)SSGd!X0Og>r3O@ag~l3$DE(f8pQ&$M$zdEodV;w0vN@^QS2n~!3k(SJso*FYr?5@ ze;>PZ_woC75}(=r>u_EzdV54D#o8kM=#R_S&HMgop)K(=#Vcb?>(fKE!#T?h+*kVN zTD(5Iz3yKOzsRrj*GXg0)ZA+ufYpp~;QObyx@$$BP(Gi;H^Qj_n@{VN30 zS3AM#+)5sGrF=lqKjh&ix;&H9evQw-jBNAm>g4YMdE@*Pel>7=^2C=j;wiNq{BGn- zGwWfB`@$>Hs25w0UT7CWJF`ZTxX>=%fGRrQqOR)FIl~^;j@gloF z>*}ndteGDgVh>~uoE(rfZ&weo2eA%L4#=82_71TxVhvuf3l@t%AMOIhuZSVGT_72cIw{)9Kr!Q;~ci*P2k z)0~mrDSJaYgnrgo4fwmB?NiJ+2WgbR-k1Vk`1@6S*!|MCXH8x^dNO%lsa`OrRr*=- zasczn=rDd?-V<8>w$xroKhkC6ljf${(B0x%mu?7++@<$r(*@qI)BBHj@0*2X237%5*1N@5Z zwxskl@GLj|^j!IC7oIkIS^S}K3+hF!hZ=ru7-Wz1^ko5U>bc?H*dY69fBqsDgXeJw zSLkf$G+KQz4hDZ<=|dY0;Gr0}p%XNj<>7w^bp=Noe<1^;qYu0Awp(*nJ;^2mW7YZg zunPRIjjq3gPBwY+IuAoK+SIYmH|NVQz8rhTg~$06J`|7Mv)I$?*eF%VvxE3w%6rAe zuRCOA*_6(5^mQisI+M96n|o>}>~7|!@_%!fmwS+Ler{}D|E%0~(_9;+9X{Y<`m1sK zD`#G)KgG&Z=uhk9niHw?5tJK?Y3t9>TK2cjLGkTkjZ0KM40B7oTmZe;m)>?)ax8?6 z0IYp!vl*HP``$<2iUS4LN(?S(8mr89_hTf>^cldTb5VUbBr^m{%!5TVkJ9HTKFX&~ z(6?xA_O+%l?!d(RF6}*9B*SB12{CpZ!bAQ+K&Sjm5F04BjGSatU4UToOYD;y)wTaf4GoC)AH=S&E0##(#(#LL0{)vmE;h(QFOC)c|G zIJF1J=WoHasslTy1^5c^)fn@3G^%0DTwmMGLsER}0eB_>za-}(^`tLfjwX*&6q<+z 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 *la~OQ( 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 PifRI}0D5 z3{Tzu$&f>9w*3Tq0Q@2Ei??+)SPgHJLx^}9xYD^3c%?9budSw^xxIGpldI`h9^nf1 zb@7DgeoyWB(wyiHz`2}b=p6cBaHu=aX7D`anTp|SPn#{kH<0(X0-w$&Hj&>poCJIw z`thHXl(j6)ZS~`~@%{0@+r;;a!D|zGz8L;9KR(d!S1gKj+~us|>uJTFDyf`R(OphIx9D7g4^goS0qqa8*O9<|SladBg{ylX8el!9m8k0^ilS zf^g$)pO51gB;X{h$!eaVeN)2sTsdLD1{;2$5aj|N8R{R3HT?rfm< z)8|{rsE+}?pC#Eg{|eqQxkg^ize4x7H!H>Rkuf=~bbgf2M?Q|cC?EL*@*+NwynOIA zN3l%1a6Uym+HUJPe;H&f5lmjCVY(e)qxbU-_{2z8lF5zVI973x6Ho)XR+Q z0ef48%&fv5ti~SXz{8qBAb-6KKSeU5IY#HQC$jZ3dh@F7*XWaznUS9U`V=V1BV z7yTV{7W_hf>=WOJ_+}>A6e!edWq3 z^?&r3eAt7$-a;42UMYugA$#$6Zj`Z)6+BD#-X6dntOxkPD3)x>>${+#gZRzYpXm&y z0KKyceWLo1PpDgq+xKwpm+m+ngx+~SS1~mHBHw=*y<u)lLKpd(jqf>H zeTP*s%vG$4-)6Etkk&hq-)iw1^f9{z-9q0rZQHc0=w z-%XAPd>`QWrpnnm-Gk6OA72GN8OFL6x*X0L+CI@X&+|}V`zqm~%7&a8#V+Rn>qcn* z0^dECy;iWt^RP?ulNG0^?m{ujrV^gTXH@6<3h#R!)crG>-KcwCj>E^i6+Iyz^8`Mt zd#2+)=BdCE_c1>PPwFq-jBlvAi_;Q#@M`w#bH(yW=jOKhnDR}>LeEe5{y5}u+ZcQd z_#^IPe)veFFFs(E?R$?^_w2sIs+@s8H`p0J@&T_W!CRsq3BKC%BL^kGoejJ9a|icN zStC7}S&tFQ`_9(eU&AxfbswR9g+8W}d$;r7ProS(mCluc%wi3BtPm=a(9{mrE}A_$lnbhw$|CH z)hq?R_9^UJGfdjV6Fac)J{|1a&pOTazK4hVF3+T^^rvua^mVvwCLb3+JO3fLmyF-Y zXXAD3$MT+P2XuCR96C|8c?Y4(RGVirh`={}^LDeSq%sJFs}Dh^C+8p|M<2xH`I5sHxu~%!R);l`Dq5{CG1tRtA?WQ zl*<_A^84u>|^^PMU_53O5ng11$_`XhMT?!&SC8~5J?IGyZpdK9bt zm?K#iC+Lli_$}jn*7och zwk7b8`6bj(2nSQ4sc>*1@SNv(#ox0eUbzKcQ4DRoQv1b-SBm$kIidqz@pZTUY+AWO z)lmL!TwD3O5?W}6obteuzcazTa=}dnk^D7-C&{1P0SKN}7@oKTFyNJEAByDfH>~27 zU$efLfT#BKQU;#tB0NfCR~QWaGGI8} z!Eh?8=o9*X9qGpmx@3cYo4)M$cTCM4$a#CZu08(UGXX!@;NM*xeu^A^`muJIe;uvK zXJ_a+&!^IHM;_W%4rNy~+w&Iaya_sQgwDPu?qldY8#-@>&U2u%&g$IBxf$jHpKgrJcvux!HffgJ#ldymTc&l zOC2m1v&QAK1m8t4T+2U$0a)xz3s|i78CWc@gP&x3^ZqaN)7jBP?2O%ufxdYd7*zXu z3+r*fg+8f29$(;6{yqU;fVtWAC*uoDK)?F@Kq;TsnGto1i&VGRaQuXpZP=bT9!SQ_F%M0iIi*(*!{H+Ns2PEJ}vgzx3mD{`*zw2x7p7O0XSaZGmE&5!gw^^bLGhvCS(yN3qSTJV&w3Ylb&! z3j(|iaCqB|HE!qQcw4bOeVYxwLjUXlU)}Ec>dplGWP`6>eIU|5FSCB8`3k&sg|CiE zz*{!>>iZ6F-(~$Q@YUn!^RDn!Dgi&);HyI%e#U&p`RZx#))l_0Pw)@3!B?y1NAkFW z)%dEK{3rgOKmRLtK4OM{h(0$T7yTakYI!dIlEN?aey*RfJB?h!F6hx*{6E!x9FJZe zO>W`@^y?&ES3UEp1Q=&v%cS?8B!{3}%Q*h|yO+kJi=W1ySI(ste_rQ8b9a{w;O-^# zGcz+Sr@GL=_%N$_RLr0MwBSUqJkm{YUg6-p{4)UOT=;x?H^KQ82j}>mg)@j}rov|< zIU5n*s?J+;JXPa;Gk(PZ_#egiCBA0K?!42wO?vLd56IS!%JK*Ow{u#e-ah;dn%E&L% z*|^oe;lHlOFH>IV5#U!&=n~*pj`R<__9}nR=JmJ0O9QX_oXSl0z9+C>30^eMT6j@y z(3#+6Fz-#^y`!D1um5V>I8QkN%~jEP>MHQE0=%5dcXXb*lJB2~|E2rgFTnp&zuHvu zzw$C<{V|7^U$W|K+|SM3A$``}e1Q&lI061_@Wpfo|7HId`2xJ0mw=aS@Wp`+FQY!g zd?B4VJOTb}@WqDvB7L!r_5Yf_5MG+T(mncOzQfCXtfnvWsGp(!C9W^hXME^R%aKtJ z>gNM!#)9T*m`>#kv4X#IipZN^mU#x>jDA&4?{(~q*QGXBNxBrB+JHWN+v!u?$)oeQ zt>{4IFK;d2jEx%lCSpeA0|ucZ6}$IAKdOGE5FL4U0p~01V^(fi%eTK2<-m!Dt-obx zf*lIwO1=M@A>;L}djBs*->Ucj67;Ql|1b6WmRcA3qRqED-Qn+4)|aJk+ruAtGanMX zS)LRh(|kzqbu{pYeq=TM_g1SgMfRAO8+gMzPLBppWr02Rxzt^KkL8K2J%jeU)scOx zChriRN%cP88C3V>8efa`0XQzEzuM1OkYB3$+9BlL{cMpl!TAR8syt^IHcm9r9GHA) zqIo2$o6zhL^~w2pXgYiD7o*9u39>G@{awRbpvl9~Qu(7YVBX4apH|3u62ENY?+%s$T4ktPgv?w;lQzZ4!9f^R#9#7%od9Tx$M>`3mr|ua#Gh zOTNN|?6uPQ3zveEG1%_u;AATJ(0O&3|9ui)VJxo?AvZIzpRg=M&)jPKWO~th#&j-&xc1FC4yAkEd9wnf+I4WuJC_kRTV6z{x7) z!tm|kkIl1EPl`SJ8Srw`2EItC0`x zyxx{fOa*t6i3`D<=3`xyptsl5MLJ>?tLg3X%(`D6_b&%8rW@E_h&Rjgf-Bz>(YLUS z`bqlX;N5l9cZR&%NDoB3=jQ})uG+?v`TS$xP&_=>=dzn4nO7g3>FaA+=iv-Owxz50 z=JOwb)8{6pmJH?$e*%1@xNAb0^z=;2`}X1)LwQX$@TSq!og#a(sVn)e?GGNY9v1A4 z^{~{^#{!(bw^O(+%#UgiS3;*IbeC+A=KRl?`(vwW@mW5 z>`cf*mjSEJzrF1rwjCbY0*`R$qT&?o%%mGF@I@~-kcRN7jPe1_wp(^!?u zJ%x24>q)HYH~Kp3HJy}4lSO3G*CX5cK_HWg!$UmE{)nd@!T$I@vPb!hcMt zXy)g!{6;UHza0MY_Gi}^9U2qP<~2{k=Io$5Y$g!0ta%bCU{F8ifI{>izrRNjIt986 z+)e!4CqoZzofpaSW>(psk66?8r!nf!*k1o`D6i%4XxQf`8B*P~WOO0=$v#^b$!J|r zOS2BS(+s&{K3@!;{TvL{!&v_t@}&N^mk(;|%ZKy6bZ);nH`1d`;6dm1+rWd)?OVWu z&h48F54&cZy*%#lP|x}ycv!@$J~*=nJAwxXTUaMlT2=LCDX_`cAK~EhIZoBux6cMuGJmTb-br5c#=+R4(K`xf7sI%JyjpCy|#Odz=7Rk1RhRI zz(ZJr&6!=xK>qn&z82_vbzkTTeJlFoLqOjtmdDMU$^Fj`4_{&Z0J@H6eXT3>bucyt zFirx-kiMM%)vGo^eC&0;r}N$k@JSc-$DdK%KD7=lm%_i&MYZtnX5f1q{*^!f1pF&M z{z>ECq744+<>1R@P0y=ye5-gAot|0$js3NnF!ZL?grP4p@s|TcaH2YUGmu0J)Q`G75onk&OdprWWBp+uac1b?Y{$`hQ zGVoYGH`0fTSj8U;S$`Yjldj;ivIBfB#(oU0I=JTePZ_6|cN0#(;c$AE!|9oPh1J`y!~ALjY}u%h8tz~l${N?NJ`Z#_FsnBgKNP-0vy?>SAEFA@t}jl^RJK3Ej9;+IR74r-du^E4fSiIv#0*9 zfXVQLYKVuUtK=(H#_WX7N2T8eb3S@2_U0gTTnl=2GRa zs?c;`8soWrW~(X&}!@%oY&Da?m1 z0|!1fw73vDTUHYRGjK*PsBqxx(B*?Ghfxc@_5xq(=?g!f z=Voy#ccB@><_q&3&4eAu_x6Ba=1@C0>m>3>z}}#qQTAZJQSN+H@_twG%ohAp&G=98 zzVdoad4m=R$AA0q?{^{F7BA`b=a`wInVI0P{(_a6a}z@vj_ftdYR6^k)GyGN-`bx& ziH5$0yagMzH}5Y4->Q@En?S=*hspOD0~|gdyo~QZSD51d3TRmbEs4pVH{XF;@*oGb z<(^1BKV}sT|H7)d(VJKov2I|U#~RPi?kqhk`?pWeI`nm%o^{M;t$-Guo*qBo-DWy< zhMwi{L`U?zp#yquUcp=w&mZ0n!5`XFs;sqlMDwEZpqpkz^@46WWvM0ouu<}Z<;Oe> zzaGH*caF-`x1rxW8vYo~=au6h&S&Mrgz}xfw}NM=-=;eDTjkUs2tRMIN*BG(nzkqKMtoj` z`3vZMv$@y}^BJ)-=38N3LYm9wisrt@OEy<|=wsj;<)IbVT#VjX>hyUoe~T|FShu*> z!`~xrx8L(M4A#%Y?`aMS@3s6Q0Y{-fr8}$Hw z;phfd@z8Y+NB?m6=~P_r^;Zzbo=*-kjANy5;(3ax2{2_NPjQNa=_J;)A6?!~UKu)@ z|G-)6_0UfJ%QryFRrm`>v#x>u=0C)9$)9U$Z)9`LXRiHnO#w2Zc@iOwo1Kl4%~3z8 zY-tHJR!ploG%KKy{Etu27jb)~dE(+XKg($)-_?1e>QmIeF$n)7K4&X!U&7}jHJ0z_d{gtRyv_1DHlBBWH}+f7A)$`d8P3_ctvXg`IR~R-x3JGc z(6L*wQ)9i3Ep5#$FaCL?L!M=o&H4?i{Fz^~KEnD8tLBM6#d;&_6Rh81_44zn+N~&$ zOdtNfH6OVgaLA8d=XjjP?bfXA;IylDYZ^F`-MWxfI_Cn`xZU!2Go6e~wuys~6Fax} zv5@1*#y|&M2;c1w553A~bw>Fb`Z1m}%;$B<&yfkRhPlG7&i(q5gLO2ka%o9?(F5_k z^PyJnxs&%ZH7(@_5&g8tR)9QB_FM_&JW`=c2(cJA)<{LI*I zi9ZChpYx)#saeDfgMqymA8P~OKM)$}PP&7j>n8N?XlQD4UIP6)#qr0tSfziz!Kxnp zvsfQuJ(Kmvtf#Zy#F`{uJsdA&$l4ro2}|3VchH{Rr9Y@m?_p@mx~g~kgCptPU05Y+ zeOY%@@0u^{b#8*+_i`ut*qJ5X2EH)&(A7TncYhke_cm+V@53&5KfkB?z=;_bO{5Rp z^lkB&ngJc~KzsUjUILD?p>J<-IQkK*c;H6XZpxo78eIIPnr|n-k&XQ6Sq_df9US3( zahCsuN6mNWq|He3@vA$?DfP!+h}#P9qx+na=EvrsJA<6kqV44f<)dGP-fS;N_|d!V z+lp^34Qz#zP5J239fR@Fy=*EEdlNQNIby|SK1Zm$>?7ESB3`#ya@dGejDDew7=w*a z9HSUSJ)z!4c%IgLIjajr$Lp+b!|=9pAM&*FNM~Xrd;`Pa1|P!) zHsbxCL~{Qwt8B#Etn$&{WR;Kp2CIDZ*I937wY*XX`Q&u15iwszOo)9NL5#RMmP>AS z^Wv0SQeIBDQ0~179AAqrkMl{1i{;X@UVwWqzN7Q#L40oj`Xih*Y;%UOo94ThN3oag z%M4NpF`7(Ao-L!lUM$%H+c}%FeSyTo}c1# zlHMNHR>y?=q;syW%t?9{n1zGiI2`<%H9ohXNBs-tBt`zkJ~e*>PwnxF*TwNOyqgm6 z6zbxx#&a_qo~AoIUB()Z=ayod%|>IJ%|@eF72jK2hiLA^xq8lhwriuCIXmpgMi;)5X`|;2r>4)Hdc#>bB`J(;V&tHeOm9tRSs83@VwtR^Dt&jQs z81ikK`ToJ=+qRUDcT32(t@v>yXU(kA+e=xcxBr_}HPwG&oy+#eLGuvW3g{Xg-Q z&*Nt^zng+TQdNCxZbjF2HNX1zpQ#|ftwe)nsvpOO6T?Gqy# zaC?ebdEY@Vv}Xgn49D}kh13Z1vrIRR%CrxSgM#}i@y}J~ek#va&F5+O z@-y)%%kVYs_4V=1&cEI>%3mE?9o_S#yq)yuVEk~MMVt;Y_DBI%wfb{)o*b~+3?@7N?cvq+H=}hY; z;Infc;v1bCDSxT{hBBTVSfrI z_gb(+v-E!ct_=exs z+{1t3w+(hrZ{nM<=V&FgdlA0!Jx6v24R+G*putYA8C}-$pxH@!j>f50D(ZLqf|Iem zS*5r3VpVPFK-LFY2e4`$_HL}QkGry-$6CZXnYAD5S6Jh5kC#W;Ov$18A=C?D{Wajx zWDvj2?gWIcc9#(TocfRq&XTBxHxIg4zZZQG^0m~H^f;eUPm+4Qnq6PgOmI04S-BEi zP6J<4pqJ`&59ReHUKcHwA*Z^diM$#*&w3+n*O}JW$iawi8T{_f(RH6k0l%>hI`!i> z)K|I-zwz3Tw)6;lA7qafZqLy{oz#OlRA=$5>}`BjAHR$b@=83z3Oj$Ppk0z&Dr-yw#rRIz4++O!I90UzzV;7?fl`Gur zbp?BneW`@sHDBk6dDtm*iSIkpjE%kWqd7Z|7o=LArmlY*d-V7GSid=c+gX%&3*61a z9!ozX;Fxxs;MM}|klbi4e>a~$to$M@84et!;gF!_EJ`&Qrit?-`WncLt!#WAx@ zA2UlDTjBf9pSr`zKkM%$|E&KZ`LD*`!B_Eo@Aa$tvn(zFUh{Vxo~`f9`8#V$Q!Uod zh+ps{@Thy)Zw9aHp@H3@S(0h%tBHk8=YkWjb5G&((z&Pd{VnJ-(P66Z4QP(^jq==z zX9ra)?>xh5Q|0UA@H;ttK8L;Lg4+^st2^4x05|e=R^Sf|}{x% z%U!LluTNeLPSv}l-bMAcXr^6RKKH4>AKveYzVB=a@v-&TsqYnh`B+zd(SP83zSr)t zpdVxd&$u|3&+?2*;2rfdZUGL@TRLx4KkVibdSZBg?nLei1U}6-jCg0jf-%4n!cpyX z?L_JdJdbS#=7WKu2^dN}uknAKo8J zHT(d0$!yIR9j|?!Rp(rTSf6Iyll6YqJy@0J-ktS(tfqe(ThGC;nd$sX34B35BYod} z2(Q}mvYGw`R z`*zBH);WF-Y~rL&^vgYy082J>d%c5Y5o`QBa);_Np`G+(V*uAw`kOQ_T=Nigj&ls_ zDELtRuCK-N_G?xGe4)Kp4g2G{k)CMEM@FF4R%oR@x=*0hHsoxZ(JHgg@jDK_t62Xt z#%Gxe!%e#4`W&7iyzFIt$x54fibM3 z?5H2GcLIFUn>*VNm~!y_eReXPGkgc^*g4n(*|#ImEi2G1p-z#lpTeGW&NKr4RgI+D={Ns8Qp&&w+3vJ2mre^CS;bKt{gkWs~}^r+gb1#%+w zidRcwI1Y7J9yHTT;7#B;?78yud#vZ4=UAT+zxBD;Z^@U?tcX6uOuCyhjehWSSO?|% zBh%+@;LhR@VhfumhFn^$1NuBe4xRoEYaJd&PpPi97Cm)T%m#&eY5+X1dJ*X<-uG})0^Ss>>*punOgeC9`;Goy z6XEQCSe4`YD{E_BKa;=G`hi%(^gFaL{SJ*X>b5H*A21KTlCJeVBBSsNl($pydL1H1UzM<9^f*Er%N54E@n-tH}w2syaLbooQUZnc*b&0-j{UtxiRn!k0B;k zETH*3I=?=SRd-5-eqwK4R~_2d5?~E^LUUiba$n0>2kXJC@pven|Je~ZOYlQF+rOwY zr$^Dpqk$8?ctiPebcywVT-E_!c>m`AbNA+PRu)(O|8sBC-8B2s>>#(hSp`HyHa8v` zjay7&qDjoe_|Uk<}D6@LPqDgJr% zzU}7<^vL46HEu%fZw)fbsQtwrk5~K4`xDgu;)hIh_IE@(`@3UBY)iJ2sx8?@`eAyJ zY(w3!BTv^94wlnDgb$tBk$XDeLsDlxZd}ni&xboaAJ&pOJF;-^ezh&|(dM%E>966n ztYxbSskW^-vBor89U?OSb)ZM4R{?5}gsj)R}NhITgX)Y+*zfA$OW z$m-W_%g19x^=&m?RqwOhj&8qx@eTi5VeLggwsB8Hw>25xmuH|!1ck_u3=@Q>g>TW)T>0QcaW_R<+b}gR~-OVTLT0S4# z&`o^{x|Yw@?&gy}s7vzsO?UGNyOz(r-NLx3-@>l(?f7ow#4pWM_g>B0Xj@1{M7x|YwD?&g!} zT0W0;H=n|kF7fTI?&g#0T0S>*H=j(`^0}hB`Q#7m65r0~Za&$r<#SB;^0{YQ*tLA7 zbT^-%YxxZ9Za(?RU6Ri`*LTYv+_Np)wR~ReZa!hx^4Zkge1fj!v#z`OW{CNf%L#*rdmomS8D0AqS@$M|<*EJsLQ^Se3AWpg6 zdp<_T_HSrBOui~~dpMezd)Jtle0f-$ukRA?qp>e9fi+ev`JIJ+Kdi=r*glRonIj)e z8TL%!4hp`54Z3F=cW7_JMRW6LGNXw=iFSJKw%4laZ_V zW|qIE3G7Ee}SX)U$%Poo&>!lDM5$rnC1!_dCpCjll2y8I4}N!rbpj(w~zKC)F5_p`?1>$=FQU zv!(OGy1wdoyveV(d)?H#k942Rv6MmAM<*d$-EXXMc~z7{_gwd)9A#Pt_+@)8{^y!l zH*LM!;#uKU+g=Nc13ZgweuD3`om*WNuk|eS`~QR7-o4Md_Mm$%Qn_IBbwQ(B)BP!B z(>2|@_>QjW{*1C6MA<$Ko=({wL!Xj$D_!INxa+yi)KOzZ@}$ohU*TUej^-n+TQBy! z_iORC_s!O&YpKs7{?>I6>$N}Pb#L(Xxt>(lT%DdI>cbjXr*YvK$~FH?-%e;BUpcjM zrM8Rpw22dHGIHW9&R1MOThlg$o<}8dyDF398Bcni-ZSaF=S%B34u7a3PK|e;?@Jsb z?ec|z+D(Gxn=)P?| zV|OE1V9`Q<)Tc#-SGaZPd@(sD&pabBjHB@yP|s; zK98+?TkQ+a%;g!iKi}4rx~aYC?|Jv&gy89Ubs5Rfw$mZy;Q1}soPiziPS^kKPFjr# zTn6vXqD@4!2fdHyGTOu2yn8wA;T>$%*Ile1chXMWySCWR^R5r6-nI2nB5ew={%)&F+@?I>0_9^uyZEa?i)>NcH@ZYe;q9sM&Glr{16E&gY;lx&0xumvPWvLcbjk*Ti;g zG4>MDygXy+jv@z}|6*g7y-C!^ zd<<-4hp~8ehL+y3Q;mEz9#`)L_-si$dQqkO$akg6>=`TcLzYxLi!UR$q@+j%Q# zvR-ZN96fV(9-VaU99=yI`Lx^5NuQ?sWfl@QrF(mOF7oZ1J;>{MR`>Q!A?;nx9$)s1 z*?yUy(bn}YJN18dBLAJ}>6T^c`=Vo<>)Dy?t!Kc0*c`M9xD|Ll46eb1v? zN%zKK?mJGfKC#_cfqv1A72uy6E5J_|J5-0yH!v)|IvpP2yVG9dJ>F9S_Hi;+zy@f0 z&^=%eFQU(*pH13T8#`z`?`&*=o+q=4@63U(xAu+qno@e zdAyCC_$B|pgN*{;y48%*hzwb@XaF`m+;# zGd-H7dQ{h5{+#ve_HAg}(tEtrUwpn7`U9_C=*M1Bc$G(fKdnZOI?%zS?x=7167Oms zzm<2jpWnjxu_jX?|1ct0sXk{~Yg4RQNZ`|6;^$JyPW z1=#}!8JkseCHmoXuyTFme3y>xc;`&+opXIL_vXz}-y@D~yXd>IZNGq2ZTnYARR_-{ zRUJH=RCVx7(j}y0bsUQ=*YQ@D`?c?NufIOKgSzjJam#e-q+`ixq^@6EN;{)1wDoJW z2OCSa#k$hQTw6oGU0b6Kxjp!_6&DXp8`FMl2W>B@w|bV8#{1hD*B9Zt9fW+pM*Gva z;D~qrdvH7lqi6g)0M@fQ9&bWmL4{cE)oI#0EecJ(gbv-4kC(DO9Ey-E4q91`W%IiwvO#DS}Q zFT>XAKKHkD&LmK=}EZ2BjYJ1>r zLLX*QrGC=zjK974(nfnf%5=<^-KSpr`JP0Ob#SaA)>ZGM2`!s!hbM zuBf3OtU>N|$UQ3QlRtyZRR_L{?mSBW{TTiC7M@f8T7CHp_KLkp>kH^YIpxy+RrSSm z;sVo&IzNZRI8OH|yn{~Yei%IqRqv*{jd$%F*)8aY>VWRqZ=r6r)LreX+TJ?Ktg)}Q z@9t&ftvarCVUBTyn`2zjb^qVZ-|@bizvCO9?Lfzp_T&}S$<*F?knQmF@hZlL=+>|M z#y0sk18Fll50bE@qr8rdAXR%ZjMSa~LwXB%FzHfKv!8BU2j88ZA;Z#r|Ks6>lecec z3u$W>huxELoyK9WLq-~dy#;=?+yBM8rS~dmU#tGipbqMv>`Sy?e>T0hFVVjG>+~hs zCx3&!MCXC77^L-Ye+TP-T@|;n7f5w(ZhzEsQa9@Pd}&>or?VNz-u4D`=AWH}Jy8GbYshnFi48G-O!pJ(8CwrvLuMi4 zpYzUa67=J*Z4JsEtI3JEu!Pv7F&^d1K-j00rlID{R}pOI{lLP z$E&a(9p`%vnlHaWQ` z(v5le?ak@f3Vu7X16}(DWwt$$dnPg$lExmx>!6ak2>3h%p1sZcL(!3UW^%3$`r-CO zCTvQD*R>v`57Va7qAS=+AX7RQ;@EA6mwkR`*Z5hFsJ) zQ$4sE9k>SFxc1ZNJhJ&MI`8HkPLAgtROfZ>L4B%Q(D~vtH@{9pJ!+UsY?>&NgmiOb>{#SYb*Vz6Yb=+y< zY(HlVpwqTT=F47IUn14M?~9~5j`%$3oup$sSpRZz@H$iH*S<>68@rl)rrQdmyR^=H zIC*{C{TI%!2zzxYpPIIO+Uuk96Vb!Aad`*2==N`;iwB|yI`)&7X7J9n6LT$1C&O$$*?Dv+d{bX;60t6Z;rk)C;>eT<$xA3ovRLBf6{*C+JOhN+7FwuB zeHHDAdf)>Wb^hh(f%g^tTqPIgYnIO=%z;}+*%g=w*7wEFWyNV zbYB!5*a_`tbJSDUHtuE|_9kV&k8#)@WOTn9hjB(Ga5ZsmC2__RVJS#)jf45km|V1*$eWvc?KsB>T5pLnfN*yqtMZLHf3ICJ3G&& z2l6Pjn~XW!Sjy&|^}MB_)J@M@8bd#rJVJ&DodZK4joq#@`h}@=7H}z+% zzMmowooCl|{@bmd{yTaPh4$x{=$aZl-@~_bO)bKfEMgpI^U8XT;5&Rr=at_@|8=Zi zAiq2Ncg}B{2hjUe-Mu8}k;Yu;{M+}f90?svuD9uVF=tbk?~-4Zck~>X>(N0y2WB}s zsCM!OTW?F~;Jr&?e&0>1{Jx7+&oloC>HVZ;4?YUt)#r5W%$Iddg7*h<7LDF{w*wod ze1DB+OMNNb>#O&GDgTeQdMEhr=2+nW9{8VZ^T~OZSK$Bfs(3zj1pR}~#|Gt`|M4OG zx4C>h%igVl!nVyr@a~ki0|9U>-&)~nF&v|4)1V zpXB*}BI$h}lmCwQo?nX-yg!~fDbssBV@P%0)&=!EOpWnTo^Lb%J;8H#ZX@edJK_18 z=)9hnTfjbVVSJ!xHt1b!dVlkCd}lV_`2#vXhi~PP?~ZUFb->g0aOW40$6O5PXR=)(F)&IB){eB(&egpmf8Ty?=zgH*5zq%f} z68+XW+?&yFjWx`o-!ngi&o&pS=Kz%R-plBwwlUT3@m7umpVc3+b8uckzsu0?I^N6h zj@qTk=(paXaUlAw_fJi6`kiX0-$!^pALjWy*YkNcsrq_J{r;QrIX_OGwei({;`0lA zJGUbr#^>KyIrcN3TfP(9kpijOk^d%DJMu@;j`+LPbEcrQk_hrlWBBvxYtRI!&IGINIzTV^|Cj5 znY6j9;K_D)b2I5vr0wQI;e+FgwRL!Ne9I*-4Ox=dz0{J>d^eHKs` z+R_Cb)Wx;wje7UY-u9f^7;GL)T?SJZ^--(!kGkktc}2c6g1Wf1d3ZL2y6F5wO6x*f zqs)>oJL9=CeO+8TTG;+v2=z^qzE7DS%a_Kn9!I^p632Qxd1;Kb#mk;Km$-u55Xnvr zi$D5iQ2Y(QcT|p!%1}C=pyRi$>?xS!%i!`s7c9P1$HAS=*Jt=PW7`d1Iju5|eO(jl z@g~L=ZvGNK`~>`w6Oe<(DTE1MM91H5-3DD7id^(NFZJ3thBg^C()^`p3$zD~ z$9lI4neq)B8>jDufuv>a&xqaq?YIr^B-JyKjL&8l+vK@8Ue8%fY@zynYcnZg$}V?v ztjb3n``t+$T)ZBAM>*wqm2&r@ECD)a@zf{b_o|$jDX+#pc2-_j&X34P$3x0h-VHu}qXRxJ zV|{OJI977-LEBN0XOiVE{ay7W`Mc^z8b0VcRkE#ZO2z(%wRg3X%-cP^Ega|O)5_qV z+DKua(VJmdKqBlI%7@1EZgFf(6<97OX(0=~!m2sa_ zT8@t7wx$EQF^1ou_OUaWwebBnJJEN?&qN({tbP@B)OB1v$A1EK)3LhdaW#2lsbdv& zbUrI})OZ)Y@6DYvNFDValRnh3^lpibzK$O(#V*rtsyr<|R(Xv*i04P>W3?|;TUz{r zx5-|o79)dX4A&cF%xkCcEopZd+T9aXjM1^Bx*z6s`uJ(s(>JlJGo3vpj*C8${9WJp z1IqKd>M`H8exkF!-OVFXF2}1iv3{>f^bcykj)PZfzmA6=+DF))1YN&%aZ=Rh^s0UP zhU6Ny#tht)-n)ja{mZk|NB7%2M_t~b{C{wDX&=k~RqCR1QRkBCdCE?Y67~A9{?FBE zv2U|}KFwn4Z0%X+(NrGOIw=47=!^Cl7toieJf1`z7b1@cd8iz|M)_3+mr(val>bs! z{@(3kix2bVpG&Ii5M5~po!GB?wiW6=)P9X6kB;nD(yr8bU#QfsJf{1%3tijiT24M6 zcU=QJe9yM9Yx{P0e5;%JWMh8)wYy<9cal$=okZW%?i=r{U$OmA-=j`Fx6GEV_>w>O zd6nuxJG;Ce^ZWk(%5O>6>i6yc<@_3w`FXoghW%}`x!B{gu-kgZ{Mpc7W^O@aER(iD z*DrKFS?A}^WghwLH1AZf?v7k*!aCyHs@IPjh40ZL*qsf6Q?k&5!fauFy4pPx#LtW> zeI`3wm~V)m$<^|m!RsGmo+8;E7t$VeE_DcYM%PU~?mn~(d{8@i0I9BDB<#Cl9uwr_0Q--XMLjf(aUYWCw;?DkF8v( zYv*s$2Q2Crk9FT7rZ_1_?Z1=f9_oD=Kcm09f&L;(f1&F)x6ohc`pr(haU*?(-kEW$ z>ofYa>oe}6%&z|~i`QFRd0AU=<)z&1d^A-s$?!SFs(v zD1+{e?oIxz*|i&Yh2*z)A9j1c>uBkDUa@VZNw(&Ili%NIzZaw?E8}aWoIg=r`nkwq#6U`_`7tk z-`lQDp{wI4U+La$TiY~W%=ORIMSX2&PqQ_0rRiy+{7HWd{Vcwo@Wb=xJ1T#>_C+0>kBq#WzAW~>fcGc0&*-WCF*4HiD)on5 z9WpiY$qwp}v=M4gE=upU5nts+Ah`2k2=-Rz$+gc5kfqL_ z>zaJd`@?oyA{oL|@>S#=95zZ9Dv!$8V}HZ^Ex+%)7=&=)R8(b0E66 zp$tCh{^O(Jm5!A)*8LcGRSvHz=*KJIm7ZVi))*4=^52F>ddJAONOc`1wy*dx)BU^% z{4svD!aL=e<5!*M7k-SzB)feq#G9;xH+s+EwWP03iTmIk@bfiz^%{Imwo8qlRKD8T z-r6Q_ux~8GAm$Q4f*MF6#>+^Fd8HYU2 zg!i10zrp;Uv$MhGZOBpgP3v07M!wxbxpZ#sSA2gHGI<=o!08fgXF`g0Pkqkk_bKJb zbR+j9Bh$XTe-XBU`Z}NHCF-iWzm;;T?z{WsRrjZBe;Mz`>gDCx)627h^iGrOCgeKj zugDd-wcDS9++3_Va^0?S#jpLf$`$$lgjCO+aralEFFL3AI{J{5?@}+{WIS|okIKCj zv3%A4{zV0HLqBvs=kv%=fY4CA=FrrP~MdX};$6Ju^{2*wPx9;al zmc!(2@hT~m2|Q0D4;QNr@AWK~C8Ymq>n4fz>(&R5_ax-4v50zS+jhQD;Qd#T_YUN( zF}J#AeGKx{JtI%>EnR0kwrbxs1GN*S>joOfQJvbmcHqvZN8YbePCc(>2l99AcMkIQ z`|ob}M%;d{C)M_QE$Qth@1=X&vGen2N7i4qvw5`fc6*V~0VivXGexE<>#5Y`HQIlY zr%Qd@qP5){(FeWv>L%Wq3177R&QtlKGdjk|fRpbpB<{fN^Fij;Pqt9U7HnTDa;9%` zvHf$8j>krM_U;7i9Y}qK_DQ=a@Xb*74xpoFvNo~L-eG<(@Vkx$weQ_d{@ck*`&8XO z;Pwr`^HyZ3`!~;g$j3?6#r=O7>p~g>`yBg_ECx1D*>wN&6O=7aAMWDw(FcvKU5)Hi zuXO!Q?*hP|DDI>lx=!WJIx1$Z8C!?(-Q%`cu-Rf7s=DckIuH&Aa#D+aEgb zPJf$RD=GCqbz=QEy?g#=SMz!LL-J7_cY0P*r_y;q`rZv)nFD;l=arO;^@;m4 zpMUBkpN{g_M?PNue{Jrxaewd)UFZtm&grB+U6xN5^Et`#N%U{d-qF@IueNws?3c59 z*bCRkVdtFPo9Xx9(wDit9`t2ut8|^=o4U6VyNQh`UIgt8zL~UPwlCNEH@&;8qj;xx zdc<)!Tk6`suQv1>*qC=IoB6_9>C4K==Vkh^3g{8GEy(qg0Q-7zAM7c1*_C0TAKPL_ z)gNi4?|q4Jiuxnkznp_DQlDCF-BxU{-k+xDb!ptmvC#DVoL^y6d$KPib+V3!u$PoS zbo)ZW4Go+FrDvfz`^fk79ya{@4SN5Iwgt6qJNbs%HjV2Y`5*7Ef-bIX2^*^Qi{oSB zd#LyDUN!HTpKoz8y7#mx9gl_74|^Lv48?}N10RNAL*Jc=f2KAx(f>Vld2B*O_Mi#PrlnqY^ly4??Db41M23G=_^*zue=LiZmkH4mm}}zn)*q;SIC?K z@A^p^|hFWvbS$S+HOsCvDR zY@s>XVn z?jw2*{nD8D{_toUb*@CVx>vR*veiAZRVDr77rbmwCH*Bb{T%7Nq$iW+NNrqaan_5q ztyAW9<2rcfV%yf&L*HdlHb_1Z@LuJQGRzBj&sc40nC+ZetZ z^;`HM_50f2sD7XG^*h<>hn@PU^P9{;b;*yNOCFugqiX-*^kGwbpLrku5}Vo;KWU85 zYb)cFR`yUGjV-x~znaIF{4PIm)jx*A@Bed4S^4^(Pm1Sf_Id7??VtN;C(o^JZvR|U zXU}bH|J<#eJ(q9)+zp*Q_i+2?uIlW$|7ic*KXmroL+zjY`_7*G_x8`7-Pv>h*8aIK zck*1#FWNu%+0LH(dHd&%>*P7@hm-O>%0EXRw!W73UVj07Iy$hWtZe-kCVnui9UYk~ z{p1pQ4jC)`#8NskRr)cdbY!UX`K5GZru2EGbY!ITnWc1OqV#E{bY!6PiKTRSuJoD` zdIlaVeN-tOo+^Dv2_3&@gVOs$SHDH=foq%CJ{`|4B}T0QU#XS(8Qu46MJfJnYh{m3y$EV-x$0yYxNmN=M(Dko+EH(s(oNYxHc(H6?psbNFV&ZWhld z4|Ye)b1q0ZU$|QJME5>e%-BV1-fvev{azE_O8R={=c$ik^*iN`kN4gW*ZKGMQ~AI6 zvo4pTt?b{t=lx;UpLLgipSk;^=RbYJ{>#7RzWvM3o)5IIkJHyRvHoxJ`d`ob^ipES ztqo{gpq-DSYfrjfV0w}-JL9=;ToT8o?b8lA`0m1w@ZE;azPl+dudaJ*d)4wT#*fhQ z_P`H1+PB+dD7VGDHbJYz-@b#g7w8|8A8VnE^I@?UI$l#*mhf4?4Z1hKLQ_i{hzMu zM=N90uJYkOJNs@2`cc;n{m7F~seYuv@lk5f11X`9}2IN?N8%W;=Kid90z}O?O+SHA)%uX@<`eXA3F-y87bPoCZkoweX<<}aRhb5o3itY5tS{*LYH-zvYSO6+cdept^y z=%_DF>eFJ{vYxT5@ie+dsQa#eg-+yM+pTEVc89{pw@U2TKKYyy&+llT|8evA%fa|Ka+4+t=q?|39hE3BEqZ zCF`>=wwJ2U{Kew~XgWSvgFdL)e*^Uz@;l8J^QQ zS8ESb-uqzK6!KL4o=mz!^}HnC_>k6Xs$+8n8cS)32LN+Juf^+c#*;M>5`H2Q=F! zG<8vYhKimWc1?dy)FSKE`Q&-&Wz8SmEr<%DMz?z-}s zGkXM^#|J&G`*9G?yE>@&jh3ORyz;vF^r6$x_YZ<#_cf%Pfj&>;kbYiKechifO6^{N zj`s+%|Jc~0@;YMK{CPeV>+k$Z<;rCK5qt9j&eSs6A%|C1Penh?t}n!o8b^7SQJ#l; z2D{I9eFt~DV8PixL9ciK>I4+I&sMvbNT-LO5+^o>Q9!(F-Bo3EdGnN;WcqvUra2DTd!E4 zcRO6xb{>cBb=m{p3k!nHv+$jCy+Y4YN!oq={#d@hsVtatIc51%MX-AjbGl!r4DU9c zF?VeLVD}DqTC5;mi)RaI)^bYnuVdZDjcvlcW1EnCH1_3GWE_Ubjr_~WU;EEw{!Rxs zd7I_?zegD(nXWlKUkf1T-t%2)N`oDTGY zeYDl*CiG$>Wi!3dn4nU<&={~by{L%wq70hKuZpxR70kH+`TYo8T8%DUNWMQqhyK(z z*!?PeP4c;p^$e#ki}vaZy0T#p{A__2Z_!TmjAe_hzdOxZCBJKYqw)Ft1fRcB!sk}s zr!>K5I~PsYkH;ZH=W8YST)-Df@_hyT)iK=-q<=6zFWlSDxq5)Lk6VbIs?BPJ2ev*; zyDJtno+dkkv+vXEKmDHXlM*_hKGsC;KT#hw&-3V*i(f00wf9jkqzvk#o=^HRso5pv zx%GL(7;>i$X8`jJvm0OepZ4Q(?Vnw_*Tm&+v$eDr^()oZ>b%{Vlw}b-I*azgTsUje z@t*QEC3PCvL7jBZ=6d+8=Xhq2BkiKYao1d5r`e=!exB!VvR>S`vQNE6c2=*CAdm76 z%HCCZRQa-3mdIm&^Y@Q`*;i+}%HP68vCjNAX&Zl+#&%*p{y%Grr|9|78n2}>m__*9 zht%oE;#fa4c0%{U#OKdk=FXo{9qmsap!Yu9hkRG^|NXSp6yH)`{$As2neWdn2CZrD zS<@PO%eveK7pF~(vfd4$=XenF=k^R}oOTM`D`Pxd2R);DN4xz#-*!6A|D3HF`;We? zYrM@id#&y1HJ*FIwRPH4ySC05I*em#vc2SPEAJ-XCg@|%q|R4i`^VEZb>1h-w{-3P zyL>B)|6zL^G!9tD)Ot=w^7~8Rx$X!34yoGgD@h+F{U)i4Kl@*h!|7J9{U8UO??}qw z6A3vi*iUje$;#V-9M)n_K8_s5dO3{oav0_1Fv8@pFt+FI`XuDu1p^fO+Tj#%iM2arQ{o&$R_tyCJ{ja9u^XTf(ub=Ra z?w>H5{=#2A7^d&0_(r?7%C{o)*6x11V>tVYnM14O8*a?Lq|)uj)j71ql+V439%}!k zV}nJ!yS#D9@1~*en(uh>yn(#+&OpoiU&;H|7shtwSEMhY(~puqLpqjm(;1X2qR+4A zy^YYcZ&H8S_@KWR$SYZH?W48tJeszq{g3vW%BQo)U)P;1?{(zu`fS=X-*fY>caV2- z-gOakRyCZTk%8A*&&kwN%k=>|rTbbmo&uh8wyB#RdpbEkrv1Opk?A?0@ayU19EbL) zq0Mvn_OuE9>paKx_%1frk;NXmeU0V#Da>!IVxGh8Y3v)1IrN-Z9dlelIWMUnE0?C@ zSY#c4XnEhGKL3ZmS3N(CZ(8QIaj1_qYMYCqZq5gxJlcP$&pMIzVm^h7rRDp1?3OzR zhWx)u{wFLLD<@*Znfq~Pe`)?NlJ{r%E1kFfsQDlJ*Ym%pqx>Ht??XDsU;CC6ekEhD zxo2czzcK^ObVGG4sZ*-YYQybZi=_Q7ZL34cPkk$=C$tA$KU6(&z8t!sI?MZ~EYiKt zg*j4&kL&&q50zubbM|p&ro3_-{T95`@l%dx@lEduq8akbIh89JXW$#Bm=_^d{Vxk{ zQomTAc>;M|$a8lsnj)MlRNaccuoq#&-S~_<7mbiNtNLAcY4aKHChMhsruN6P;qTA! zufERv?=+2-U!Zr|2W#2fH*3bmF@lS|Zus_H%X{hvYb>3f-KKr2^;@swQ$2G*)ylWw z#b(l^pE;j7`^aonUEHs)86KQ+8D)8Z*lqLAoo}8-S1b12dqf-B5Wv@fGTE7;t10m*(>-VWBI?PpSLe-{Mqz_ z{k^ga((&FR_-6A1uOYLk@NF973_EXV9lT`D(%n~izm7j>vl>IFYMWQRle&zOnUBrhPG()xN8H(qtH{(lRR*8Z;g4aF|Zob zxUw-NR-U&h&n><@tH|5p`}aUg`c}qk^lyXB8JGF|)!s(r{dMw=pjqGHVtAmJbyOxV z|5p4*XK(WRj*&O=UUEJrIX=$7Q#;f44a#JDZ}zGCLf<#x*JA&>JHjFbzidR@1Cqqh|c{hm1d zZWj-?MfX--=Jr-Tif+G2y)_o@_X*wpIc-OE=?3&TsY~0T?SWQAzY2Uq<6xU;Gqsd^ z4!T{7Zkvy!YYV!Dd>XP};B`soanGUb+rm-wNj$H51`ep(Kb=##l6L0WFa2gapFsOo zmH8Cx)fB$r+9~g=&C)pr*EYO<)Op*c=jk0}`cb*puKnWwelY9@=g0HL|3s>N>usbD zl3M?&GQj4XvXDA_hyRz9*gDm9Hzq*Wtxs{|0m`Ijo?K12zDJ#1|B8L-0iWB>S%c4Z zo-JdA4a}*ybJjZ3_k~{He~Z3Pr#`hjf5AKZ>bkQB*xpimkS&p6sXefv>rwHXMUVBrzw@0{x_3!^lx66Z#v$n0(5unM0`bfmlcW9O_w+gP)H8*C z#Jpe@{ct+4DYg;p_ltEMU(9sf={a&(nU43$ZbS}t4)#IRTl=ax)EyqU_@CtW%IHrt z{(IhHy~``sd$pgc_is_YCcarq-7@IE*>UDZi*FM%{741+0r+m~?08RAQdi5+E7fZ~ zLuwMTr3~&YZmnx;vHf^yA7e8f%`rdOv;4XrW0#tdNglp$A*NwA>mW|fv@MPET8MwM z82{$X-yXf3Ky5}#cQ{;(l<6c;N*GYUQFkgC2EWa}3 z`BlDg0`fbbv8LUv5h63|D=y+5kEifie~X^z+_9d4tv>6)=;vDMscVL7NYy@DyKbT0 zb=0pFxv9T+w5w-)$E1@B^0V=e_GQVrgU;sSt|gB)f6?(Q^6O65n#ct?)g2pXW@r>?yY*86=4?~iN7m%;6d8vHx$Jf{E z-Vye!gskUk?7q=+$T!H05}j`_J|uO}>}B$Pfzol+$>inMk$wHN?YZw}N69*TvSu6e z^SkoTzS-H@-PGa-!;bLZOzPL?SG2!3LBFGXOUAR5#t$CY!FRNLT8Dfmn`~D2K?B` z^BVupy@e|-X*x=tp&$4)K2M(U_>+vqfAPHq#pgGw&x}p|VdL*c;MXjGcQv^Ql7hB{ zZ>Qj$`tQu~t+*;PUwTmHfU@WvP$~FuCUZ37;CUToQNJc%6&4%c`e2pvkiMrF^@ES} zUEC+<`Yv~mJ@)%Y-}gH2dAZQ{3B8&BP+v#q4fN~*^>uXaAOL^k-F^E8_3f;$!{0By zKppec(cO8M*t_x-&;Kuz>X`0Jq_kmYFOu^99I{H{zk4^1hkl866(WC~i)o>c_%!d@ zI;6Idh1e|oqrI|x-pg{0w}tG-a+~WyWdm)S;#@pQOqOfSK;>=j0v;!QLj=)ZI{ZQw2d8nyJMUapE2F)&nrM5 z0_x_*alDsWsAJanZXF%N)nT)3y<`V@oJASVg1!iuEeeCp=Uf$!Ra7_hoTn^hvT^qI zcXS?$GaZpFe01|zZ=D;Th4?0^?lIp@dLL<09{2Qv z@W8oP~S}3 zit*<`$1nQA1i#k7AN6zYAl17<+xXH+J+meC+*DFe^~1LNdcNxGxg$|eJ-2ymWw1N6 zdg2GWIk!YTFU0?`yUA>9c_a0;b?|EP&~?q%sP7i)`!@B}yS{aATe7}i>!7|DQcrEW z=ac>}SzoUQpYKEu)c13C7yVU#PIaIL8?Aln;l>kmMC-DN{!GujeHnj6@95LEH4(kO zgYr!(_h;U!+)LtsKS7!FjLl>|@q8EKK=P{DPx(y!EBRFJr+fx=kdKZJ^Vo>E5A<^~ z;KlH3aj-W|Mdz+vtP1VqZ0x``Y=+LmZi4!Y*<_W-9X$?sqfZuPJDKelZUl`WM7Ltb#Z`d zugMP|WJPlRTj##@+b8{4&+2C#8J%a0*wzjoQoZwf^l|wy5nIqze!TWE_;CX9RHgj* zVK@0P>-N9S59Mtge0BO!=WPRHNSiazv+iu(U@5xLh<E3wt z?G9v2{cGCVMs#Q@Je!IRP2l%0y{+~>-0)c&D|$Pm+FU6r|x+4M{e^9yyZ>ND_7#~Ys_eX68=|2KZSJ$o8^UQ92Z zPtcdI-An&ng8uqX_R^n7(7(fpkM^BMp)b56=6jZP+MqD1Ef(s%1(ntIoa6VJ*nYKQ zzZSuRno#dfi|;MgF>@Fy`l3{cSqG>HQZ4_dD&#`(!U3Qt8$M*6H_n zR=@W)|LZ#%qoeK6ty6(@tgLgLI$qZOs`ia1_=dJ`9n;6>vSj3{L-9XD?hiy(?dS(X zKN`I%rAN@mu|K+${zd4Su&C`_ztaf+>%-BKoG;s7eE-GS?bq)f^|r^!JTszA=2>Lk zzJGyl_@#s3o9^dY(3ksy8ST$B4&|Iw+@GE6`?K@#%hu7(a`-Z( z{n`r3rgI7|U#}NVUgWFi1*re!MnN!_hURZ$mxG^@lfKD(8V)HYCYTE3H^EMS-Re+dn47xXJ}Jp{IBg`BlSSnR$RsU zYL@(T?qxIYI$dau+u%~l=*F+vy>ltN$GM?#T+`#&yjSrrG&V@r1Z+=6AM((%+)MXn zOy~QrA%k}9eQBK68p@{q?@N5|Oyp}ZqUwW3&QB?048M2pq3ZuAzNcsOwDT8{V-4kV zI+q(QTSJZ83pbof>gu*Q&W|$#<8cgfv@@!7d~rN7)A4A5eAm;boiaBd_!PedyeG@R@mjAAiEl>8AIt@nn&$TjxQxtFYnkV!!n4Iya}An3G?W#?PW$ zHYd-xp}2|uQ)3rSqik+3Cgo$iy+X&^tBGZvNS(EO1>f(Re|-{tsQs_D@u{<7f8q&J z=2!M<5AG}s^j-J%sLc$j@l!Oe6uvSKQQbph0iQ2(Yo0%PrOfG3z_U8<+H`L`N2>qp z^E%#W9>g3m@9VqA^X~i?;&=K#l+@|XD%hb>226b$IZm+n%#z)?u{k7`L zP>RTUf-qC(*}iOvN7FyP-nccRaS&^ZsY4o>Iik0LA5jO3ce-YHuxs+hN~xj_U!8=mZyYJTsK43*)f45z)g^q;ez}2f+yEaw z1s^mP_ip$=tTJPKWDXxb437Wt7Fu?L<9=wCL7hnNQNW`!wZA(IgGJiL+7;MlN$@@*jeX$bll%ug&vj6DJ)>$TuruGbRNa> z*Vx_vJTtbb&yx~cIqW&ofAf0P&dzR%c~(dMD!+Q2%Vvz5jE4%Ny?b0gfet=O-|!gq z)0iV&15mv<4%t0K9`1ewFP}6#ZRis`pl!a4@~M9nji&9QuV;ZDMklr3balv&kpE;3 zP5b#{tC(-#x19YJj1bis#>A_14e6SJ#9$C--1d7k-2KkE*Q*$l7k`7F@EzuZ0_v31 z^G(cAsT^&s;Rf~}K82n$Z(95`eB8NZnCO{0TAym_^UR3YhL?V4A@fsCAMig_A8z40 z&ox(y>ckiL&N~gmMD;?yljb|m4~cyQ?ByvVC|_y&Tk6}Nt=Tp5y?SE0u$RS!d~b1K zsFeBdy#bGtby`dvwJf#=S?}j~8NI9E-4VQFI-xfHSiZF_KSXpK5|m>{b?pH=M0=8N zq8lgiZ9RYeMAAQ!9#8rx>9M36NKJ3HAV=pf(#I@dtw+~9vh*+Q%7r~pn`-vdt+P-j z#@Fa@`?%-nd|%gEtX=E()n+fnCr#dMowGa=I_u^f84J8ZyV1EU_5XH|kH&<)rg_mW z3ycX4WPGJ}_^8fWos}m8$Xj(*?XA_%)x+nZ?Na@Z#k7l~X&35)j7N8M9x&qj5p6^3 zSP5PIc-mg^cB`gfnS-S96erWC7v~O=rC$t+%XnsO zX1Xldel&S>TT>sQZ~>u+VAlmB(S<%WMI zUWorMX__N9<+z`d{~xHGD>vVcKga*?G|iP&clt79=1KOaz6`l}(s+;ON#-zFdcT$D zFj@95o+p{ZLXzASsmvOQC= zJ<0Zv#y%<4i(PAja#=PYr83#|XtrFwTb)vwuqU-bzBfFjGTC*)k_x$YbV_Bi>-tos zT%Sp)Om;m*4D1c#QYw>Om!x~jO_Ne8lU)xq_LQ5arc@@o-bq)dR25 zlE%5I*!D!dWa$yUJcVAeEKI4M?%EdimaC6Wsh;8|^_FXnOBJUqj^jUcZtsSp7Zfi_ zp%cd~C|*L}ecdO0{`Gz2=Fj;2oBGJAQ&Pp-_{O}tzH-|aQ^f}62rbTL*(nQ%k3}cH zxS;rn9?0vU;o@7x%zrv|C+&a&5D$^(_QDU z9xT_bOldpabyrQbEWb6S?R3}9)zxz2Kc}>v?pj$pL{{cf+D>;p*EB?Kx!vnT-B7vp zPA`w#P}+zuPi7cx#FrsAOqSj6bs{rdzWXo6li~8ce>a|tkZbeClM!Ee=1I<`|Ahs$f&ZD%(Z4R`xHwv>%sUpSBR69%&0EWKrQ z17l_LqXYaX<_%7w&v1S<{Elh^Io@yxt`FoG!}ujpLm&$bXTgnu9BDWMZqoP~|2=$< zs5y{Xh9huGATtaHV8+GM4CkuJKP8h5hv52@j5k~uO#UgUF`NZAreuua47e#JBMj#U zk$*~t7>>X#DH&)u0H@Q^*Klqi`KP7IFl{5MPfNMs!T|D5OUiH-+?ba4;Hl$Z2HcdE zqTzgh@=wcKh9huGT6P-_z}U&x4HNef)t1S2!y&l7Otu;>^d`^JlV=S_;FdDkY&Za?d&rZ9bG^yGhdgc=yBF2>kVgz-6QhP6ve7X6Y@)^< z@{r*SxT%LcXgFU*{ypRY!`R)ZrH9;WH~^>1kNnB`f^!oxKK&{ z)KDQy4AXx_jTLgG;S9K`Las2JFC+g7xy*0`ZmE!q4F}+KrCew@mnQ#8InQtiuCJ7{ z3>Q-5Unz?WvzIz*td!FYXTVLBa+=|MK>n3-s$qQEsHIX)HXMNIFHedwaT4>%zo#5; zI0V=Clw%ARjw1h_vLMDQYO>(Qo^qt&47jPM%rl%nlKgwhEW;7FrKij=9DwPUry0&2 zLH<=T*>DK1uafbG3x|_`mDCu{f*Y%3jA4AIsHsXu7|tI?{#7!>a0G6tl7WT;aJrZD zHH?22)%KDq!y&l7my{bW%q9O`k}{kHH};bE7PLo?P`8nj@OWraZfm?dX zZo>gM-CJHaoSRMly=A-M5M19|wi+(XBLCj9#c&qf*jrvSj4vBC^_CY5=MN?S-tw&B z2;9J4#D^^j~Ff-LjHYZqv0&Lv5!1tI0J6#BM%zR&mjLk z@_=FXPDCwz1z^6w{03}?ZO{p3o+8E{iS zxx#RM3ivT7 z2HezNPBWaJME?EdRKpRtrN5kPH~`}#o@6*Tk^Be9@rFZi{Qx<}aA5-Z50C|hv*5-7 za-`u5xM_gQGn^k!{sUx|;RxI^KxP;Y!0CZ9&2VlU`45!IhPlT$svjuh4RbGO)G$zL z40G>g)HqPa7|wv32FeJ-`C9THC_@b6J4G!6WuV~zoE{{74d-gee~?re4#D+F2g|dDBXG-L*=!g;H%eE_lZJDn$iG@1 zHyncNtK|{Hg^}c6EgKDU9zxVuEe{#afSao2LBq`PMa|XnfZ+(-QZ4ryW}Yuf50SeJ z=Z2I25Lst91lJFdwT27$qYXo3wc#wdaftlDa0c8oL~b*j#~*DTA~ze3z%4^W3MpmSJ+T;Q*W-E+-kz;g8l1m*WkG;QHZmjNtU^okI94<#1&VZYS%RIw* z{L$v&GRtrTZW%5!3%;Viguq`Y^A zwSREaNGTd-PB&^EDQ_8$z%3(Xx8VSs9wo0E&f$+TCf#m01lNy}t%eKuqYa~Ei(%$T zqQ+73qTvjm9x|K(HxW}{IFCQtJX#(w9D!R#%e{sJaC(f~WjKdFT02J884khqV`MFO z5%UK%1^m&5F|yil7Th>SeqcBQZW<%E8P4O6Hjj~;4M*UXF(QToaQXmQZa9ZOTFY48 za0sqHK$aOU;Ey&OAWIBq!HoyVm4-9mrUT>(!+HGC<^$w1!x6aU0J+$308WpU3k~P+ zM{CE*d4@wU`-#soT)-b~7%PhmXTgnQ<#fXtaMM^h&2S!nw0W$YYB&P7jFpoO2VmwR zPBNUEL;e{#-f#%6&&V-`3$w{TBMS_3&u!G0ks}Rfz)cyMXE={P+MJPDh9huGMrIfe z!08&9W;k~!`Pax~!y&l7M#dX1%q0IBsWF@dH`d4)!x?Z>jf^my#~*F3ks*d7a7&F0 zG#r4_wbIvcZU*_+N|oUdTwg2Yh6@Lif32hpXTgoN^4?dxerCW;wNf;k#~*F3mA4E> z;Fen1Z8!j@>*RIAIsDPuI@xYG1lQNeR>KAS(S|zNVmJ$KtdkcFXTVK$@`B+!{%CWZ zJZm@tx75jI!vUDN{3i|P@JDOM$>WAYaQ!%W#Bc$Bv|*fVG@J!Dj+2KBXTVM4eiQz1`ae`cF zI0J5)AXga9 z!z5V{X_Cw{oW~z+o+PsjN8px8GQ)5HPEVF;hI9C%wUcGC;SgLu zS;iYCUNCByEH#F+;Ks=^#&8DQG+9O%&f||ZPnIEuBXG-P8E7~Frw^3AhI9C%wFgR- z;SgMZpp+Xf;Ey&OC@I5PaN~jU-s!IWKV6dnHytQN!+HGC<^$y|!x6aUK-q0L0H>$O z>xOef$$yG$HyncNr^r^rg(2iWMYb5uf*YsEi-t4crYZ7*;XM9m^Avg3a0G6dBAX2d z;Pg~^(r^xcw05dIZa4(jPnAau7w|_Lh+8(C1vgHWhYV-HO;hDT!+HGC=Be_4;RxI^ zRqiz$fYa0DF2gze(b{RU&Tt5>pC)S!7w|_LrpaoIQT)-b~I7pTl&Vm~ck}C~oz)c6q6^8Tp zqs<4&Wribg%RzFn;Q*YTE*Bck;g8l%m-7sV;QHxumf-^aXv1__WH<|MoGzyu&VZYy z%V~!5_@m9!K%hv52yS{LzMkWr5)=xba{) z(r^acbg;}boW~z+K3HZMj=(Jk%M8N-I6XtA8P4I4*3OX0hC^`u3>j~@fIr$WLuw3X z!HqLyjNuHpX@-n2oW~z+o*_dFN8pwjGSF}UP9GwD4d?JjSy!$y9D?f)k#fTY{LzL( zBxN`YZahTZ`?9rvaMK}DjPX4+dHm7lL*y;P5xC_L*=;xgr)SFRhI9C%wKHYA;SgLu zQ??o|;Ey)Ulr4s{;KrHqqTvjIDM!*X*h>JT6?HG zZa4(jA1aR+F5r(g94Z?PXTgn!%0q@T;HE?6LBo0c(dI+t0mBivWZ68|KI&!&z|S968-^2HZ49PBWaxA8no^ zry7pHEpy~#!vQ!wS57jV!yhG%;dsL#xPGo2W4M4n+AvoZ7|wzl=gN_WGvKDVGS6@x zf3$h7%rYE-Tjt6P!vQ!wPo^2p;g8nNlgWldaQ!?PZ@7Rz+AvRQ3}?ZO^JI+S47h2Y zj4+(XA8no|LkvgYmU%MJZ~#spCVdU(@JDM8lPbd@xc)FHH(bCUZ8%I)hO^+t!{oic z^ZJniHytKL!+HGC=ELMI!x6aUFxhQ50H+U^*A3_JM{5t4?S?~e{o%6JZ~=d`;c(ev zI16q(TwXMs0XH2kFBs0_k2W7J&l--vEr-iy!vQ#bggj|Dhd)|-ggkCI1lJ!Sj~FiC zk2V}38x3c{jYr5shBM%%BjiEDdHm7lBjf?Y5xC_Dxz}(2P9G_E8P4I4)*dPA42R(Q zBW11O0{&>jk+Rxw7TkEG{J?Mq+;pVeW;l;O+I*zkY&Zh994TTr0H=?V<%VaZ~=d`;V4;RI16q(O0G1V0XH2bR~XLYk2W7Aml=-0El0`4h68YVzFcTH zhd)|7U(Pceg6rqYS%wSvqYd+Ak>M=3alV{xI0J5)FQ*yK*8h!`!{2q~E0d><7J6D(CciOS z0l(LkuS^~_TGrF>xi%Ut<7v4v`FEq`@qu0W%H$VDi#)ARCL4?vcp7t%cNr~*KkUla zL+&(M=xO+ZYm8RFFLveYAwM))*3+^*wTA^GTj23tr>FGw}J8}6cuK34*=)3or{${T38Url;a&Nvr)m zW}^k37W9&bjF!WncjfCP|6;Vz)52bIpV12V^{#xqaOLYQUpHFhX@%bMe~cD*8g}qPqvaS6xbpRpbBz{yTG&Sx8?C^& zz?H9$e8p&4Ps{d^(~Oq!v|JxK#b|lP2(Em6FX+d8(#%MXl3$A>9 zB{W*-X<=VE+-L>H4X%8BWwz0>o<=`1!)O^#%k`D1M$0pXaOLYO6O9&mTA{Dh8ZGcN z=5WRsEysAmm9L)+H(Kav^mBuaR$yG=%GXc&87=E+*?v-Gw2Y_a`biI?{%Ev3V-Q!q{_+Q-MV?mZFTXQd;Az1CdD3V(#v`tL1LRjm3q36yAe)Rf+s#x1UV1LYQ@Wj!rBP{e2%Psy4IY4CBf-P_8yw@3`^}md_Y1^t5oWoM^NH;~rPO!SV^CWjzf)dV$e0o|YRd zM;I;77|4}xu*@-9xn$dEMhg|upWs=cCPs7izGg^Uhkt<)d9ALDp zr)8^UgwZmdmaCR(qvaVRx$;#@f1^d7R;ZRJR&1iW)X37tdZAObctuRDdj23tr>5E3=J2C%; z%JW7GJuMt6&lrt*#{3&9PZW2XF2dDv)?rxk|EzZxy@ zv|yM#U^MhNF5fV@$7rFag~Q}0Mx&j@W8!hk0O!;B5 z%4m_N6^6+_8ZGcN#=y&sh8>N|$NmDNg`S3-ml_Q_AD3^qeA{UB8*%xD%N0h;cp7?h zsnPO&%#HCx@LS^Y zjgXU#mhrUQ2>GPZ@_x*eA0fvYE%LO&2&p$(;Az1~InrqOk#YG(%3Py`o)(UjnMT9U zjmtMu4l){kb6mcWGTCSuPs@#zaYoDgF;jk|j5S*1X@!w8(rAIFF~>5*XpCdx@{N)K zMhiU+JJZ`}jI-kMjgktZWj!rBN>WD4cv^0h{N?k$?dScNDL+cyF(<9x+o(mi6PP>=?P%Xck_;mhrUQSoyNi@_x*eA1hxlTI6YkvGQ4?1)dfV|6{bAA2Z>1 z9A~u9)544_jA^Wc_%TzIk)w>3^|UPUKSs-VS}r4p8ZGa~O!7%k&zxfE$_!n`Ehci(IQVPjFW4P7I+%tkYz^8`7u*wykw0Q zdRjPMzG<|AA2UVc<#MBCJuN$4E;d@m({khG0;A>qm?=MA&M{i#X@&99V6?!~NKZE! z---LT3Gzjwg`O5pkk1*7ddB_71o@QFvYwWmAjcam<7v4Ga>|2dyvdm1Dg3(Nt;bi$QqnRwD$?}}hOqSWnve{@R%iLsn z!e}PT{A76y+Ih^2PEJi_pD5>BjZeGt?+=`uF6uc|HPh0?3EXMXk1UuY?@YI zoYW^MP8bjrCsqf=bIEto@Sr$lGYXO0E6Y)`Xyf;L=L9{nged39g{#)*#x=0PYq_sasq7HGras3qcEN7Xv{S*+iD` zv{nA^&)ho?_qhaYzkgn@d0q0{nKS2{IdkTmGw06eT;*(F=L5SNa0`Gti9RxbodfJC zQO-ljO*rM)19Ps2FFVDh#90z!F5`P&&YCE@Jeq9e%#QLJzWL>Bi2;+M$vZeZaM0vv@-EI{s+bl{ z&g6Wc6K{ZzoUbx$dNg@o31`#&Fq&-UjE9l8M3WB;jweq`@LloHcyja%zA5IsxRN`8 zKN9$}fIAwvO?*duCg;;NN0WDQ&combqshC^<_w!(@;&kSoORU_P2M}6vyC2!ChzCm zk5itACTCCJe52n)lXEWPJmW>t$(>U+MiM4f0%v{|KTHj>MbT7nPj9GVReVZ}s zk>e!aVa$3#>${9uA+)~7nDvF$_ZYLj(E1)@))!iPLuVgoEP}q58K(^BdxdezguYi9 zr)=nZm2t|3zSkJ19OzrYIORg$>x@$#^sQu^@}chy#;F_hy~#KgK;K)8Q+Mcldonmd zUkNY@TR7L2GnDSyvO+moF~@gI5D@C^NW@jfXiIYS*A`EbuOjOWz^wp`=%K!G52ih zoJ*avsq+zabRXOU@a#eO#hJ-XIh7gio$%~-_|*V@Tc~pZbuOjOWz>0tIgar)zSQ9!v!)yQPPi9!G@py8vzI!1p>v<;gD&pbY#LLZ z?~gU@3Cp;+#L6M>Rd&gDb&&V z=Od_d8g)if$KYI@>yDw$KLFPswZ>N?pANr#+2P4lzk!|E`J?A2xhn#ImaGve2Im?{>4bSWI+@avH0NE(u ze63;NGY~um)H`iEsJ9Rt3=QkJixFHF(C=gPJ0CcEct4%@e*w2=tMc6+@cvrfU&Z@c z-gokT6z>i0^YdMu%{`3w19?A&_wBsboi#>=oNjJ^&O8{#`9T9YXKHjKXL$2I!@jTS z=4SA|fcIIv@5B2|ynmH3S$pXFV1^2k6O43g7+8k{#@Rl&wE23?>+i^xVo37fcIIv zzo0dmJm=+Tvih}Xvhs~+@>{E-$;;l2CNF(2nw;>rX!5J=(d1V)M3dt;N0Z~WMU&@$ z5>3XIMA`}yx0^A!w6!XE6a2pH<*MWl;d%VEDs%4Q*>6-OCm}Ouui}Z^ocnH7@+xHK z{P(JolaZfsf2&GfgA9#tuS!lUap0BnAVO_zQOcCzaZi$$4EEeUsUvhVTP3O}2XY!Xt+=su; z{WjV0WLd4ly}UY?lk+fpcxPR44qV~SsGmCbX_DeX=jbE6U@PWfb^QxRdf3g>|P8d#P{`xDo}>JM@*?FW%2LWJ zl-DRLDQ{8QD4geCxR&w(O0OKGI|5tYY`m z`+jvUBQ}1rFFXk1lBAFRoS}SMj?*>}{Fmf7?h_7uWIApM^LZ_O*m-wT2!8c@9{d8} zYrWSzjD+B~a0hy@zYhAl9(!zeuG2Oh8K{S*o1kfF7I94E;ZGr&ib8$Xz3cTkm-FRx zw=rX*yF}7x()pzG=%X5%9#J3AbQLr$&2Zcn`j{7>sWJq=yv>9EH1Kuz%O>EPGwcF) ze{2SRH_jN0a4zD#5#YirCo`U$6~O)Ch|}|*J&N~#f*$>6%yGZL7(W~B>$VK%zK7zR z=6_~a>K>KCew+&A=xj45u`1i-) zR}FrZ;CCf-&x7tb_)QAX9ShOj@tW7q>-3{@`?k@K?z;)X-2vQ{z+D2|YoU7{bhiTc zE5HrPUG;MBUd6qfXQw+J6Rh9uu|iHFXFXWv-OV9bYkXMm`7$k7X9RHkpdekItCx8= z>K-G>^KNj2hiN$KF0&cTnR@2S?f#f2m@5M;j`RI9OI!WBu__&RE9VK?yRo2q@p#tq zc%{=e9J!W%niuM0AAP({ACloE^z#GoN3Xf9^pj6NdjCG}OY@z!rTkWojypSX#r_%p z9{0{|pZw&V$1*sh-pQJ|*@=%?;pD6w8;Nb*@{%)QoD-YL-LYeY!#$b#GYwBWJbXL; z=-=K0^x z^2gBUPxTK*1_%(>JEn#fCfxCRf z@LZA(EO!6@AbkPoiW?;$6s6KFYwluwagdU$|dv_)ZcaaPN8g)cs%N^1LmLe zd|6)Rjc47{fphgaOH=olMzLuWW6{~I!5B*kydFqDS=0&ZSDin82l#GA*WCrqrMZrq z@AEqWoU6fG`uihr`F%+&?cCnjz?CFb49(D;aduOD-J9lS5a_Ltt&8J4Au_?|v}G3YCYz6|i{pMfudKXD}5 zq{q%fM~Joy&^e_?9i&bA>?F~a?b(h$F86Thc-Wb6Ju#1+W}a{_Cw=c`?1lHp!QNdl zrw)xLv1`m3;QO%Izlm<{B#-`Mcyw85%x$0R`ODI`j7L+IQ)JGDod-{%@FWWEMd02S zd;C0jq4Ra;@(z32oEv;}h(EDk_~*AXm$DPy{bSpa`#0f5E3kItbMAG70?ZZAwF0=~ zz-e6NneOX7sl)hBWBetrS+oi2QR%yT2F8;Mv7tWvtjDe?zv2#GVBL>isy&)Bl%=Q9 zP11oI&V*m!x|=pXLO+$DpK58#{m=Wa_;>NHDd1Vk*kqtL8(1@HXtP#rLOiZ+b|y@Q z$2stLGh@639_RWz9s-ZCqw!zSh45IqtQ$Pm{f-OEVr~z3s~CsIWF)+8o>=7Wq5iY* zuQ$BaxU^G$M}g$6$5T6V;V(WyiofvckNoDXH@^Jc=gVI#l9Ipu@OQN2kNFmb=bB$S zzn}5+?r4SwMjqk0kwS#Y#M)%!aSL>H zC6D6|BagC;3I-gM$0zUf3=VeTjA|>%=JU$v8?YAYz9+JnMwADRT zCGcExvM!2#L>?zG@A?Pi@!Z46;|Bbfupcue-)Y8wUgS7ux-}iom1AQ)w%!FDt&tux@wdn5p4RG&h_~kY zYhdH|J$vjn)>7U761D?m2Q8=1S9?0{YxMb__T5h3<4)SjzGydX zInz7PwmgzpjhE%N;{e0X)9EfKrYvnA|3^s+@H7qTIOHp!QBiA^9g!QY5o7D~_5kb|N% za!Zb{Tj%?BXRU8nv37;;Q_TYx-CftN^$A+EK81ZH*&QuD?A5^TK^tNtCWbSi0{xFq zH2Z{j@;PMxL+AXopT;tTC&FzU%2%cHouF7u^|s74xMAJkAG?9O{H+ zF;U@s;*dl1Y*D(MTlYWyT&Hgw!!xWbL|*eK3?kGCAEjOPxnamc62^+Usw0cJjdGChqX_4&1`{RqiQ4W&DdNu z#^&l}Y_7)8xRg&g6mP}FO2It}kFo0w?vubhqYK>6f%lI(eci{{6VcrQ=KO!l`$li< zmtE}5Z?nDwV=MGtQvtp3Vd^l}cgDc1?~H-;!;S%*&mHOSzI_)lxd`X(U;p`>ZP1f| z9?90%Lo_sA-P!qUq0kg_+Q=A zX?vM5s7KFOKfjf=;)&C<%~`t_Kx;*$uRG-UcoP50yQ_dZCWyOmh9+?rVwLA^&1o(s zh7{*+03&~Oo-Qvx-}k%LVN+t~Xuj^G-`(&*apgVmLHA>7-%|HuuED0s`|x=3 zD#iktU3@iTF}a3)8u%%jtQR=Oz|X}AZKjrMn+yPLQ`6ua}f&*x~Zc>(*fAM5!a`fv{v?Mxs3 zTv&Fdjmu3peoxph$jrfC2YyyJWE0ze5Ocd_V#Lk5D7U$Wz26}2(q(zroEPTClj95G z$%iBPTO%=N!bzd{ODA`GuWNAJK~cxVUUUym;b>=3Gw0RKK1TP8pnsyhx6b9xh?XAd zeOx;}J-!lt-`+R9eo4RdzuSw_|E>we#A@7D+*BscVTVfx?gz0&`d zf1b-)lgHew#2!fLEo_v(j!9pu%13y5Yb3H`@4qv#{lHpP(kC5$dkDXl(BCzoze_^& zw)bLRA_zY}1V7BLP#m_VAiaJ~xAec;L-0z%@5A_n;I)MQt_h8AN$BtP5PxcVhVVHy zL~lqwN<#HZLjAXg@NWtK9iq1;^mj`LU+l*wCvira{n(O~j&n`u?~>5pEg_k#3H_}Y z&>+UR6dBxtzgfn*sd)1lA^Gb##+h&}Ys6c`vlgPyT8yn!kY;m92lVh`HhZ)N`*zac z5UlFH-hIS>0G95ic33OhV|~+L$;Yb!RxP$y6uheB2eTIS4#Aq=+w-CB0G96FY(+ns zdsYH+D_E0#Sb5-81&x9g4Z(`_^46HI0_(8$V2HnhJ>7@>0Jh;$Xcp|PqtoXv`)lUD ztck#u4=mfz+~pa-)5go^Li5?a@81Hf_d>9$3p_t-3$V1dIA$zz()cG>Pl1dEx8@#vo5SgqjllW~u$BPpdEfqR1=ivaEZreji;T=eM;(sF_K=Q{%wzyJ z6L_~1pM9Jd$Y$cRx$Hp=VGrtQCvWC7VzC!Rx~+UElC^cqQO<;g#B8-MrS)%mR*y7a zXg+I>aM(xuOZN{G+eodkHSBrGR_uqZqCEq}G$mIKHp;CbTFQz4UkRMs;fwB9Y%$}N zna1O><8qrj*;hJ?r|y_PgC~2{MPqnA&2tpb2Y8;!v!3TEJSX!!ndc=uNAUbI&tW_( zc%I1fj?WJiRq#B9=OCU3K08n}faiLi!f53A) z&+~Y08D-#6gih4V(+NZ-`W?n`}2zR3>Xkk zKE{0ekeFj`H)q1*%)t-;-DB5X`Obv7wB3phnyB@F`SJWHFJ`G&@KCuU2!&cCHtLjEpzd4 z`dTj?Pn%z=O}3M~IAl9wk0hTE-@ljb{tjMg@2(KO89wk$fpRg63)6k_YWxW4gT35g zrTf>VcQ0jKT{H1?_cUy1@x|IWm$9#I?Bi{wZ>| zN^IdacI>F|Blvbq6mhwIdssEqkeLQ)(GoeI2x-VDm4an7W=a9S)dtY~0uEKdA zJ?I;r6;7nQO?jBy4aT+bSCn5;enI&;(X-ue#tnEqFpDkk@l~%ZqRNlciuY4R4KBiTnEj!rGf)4OM#>LRY~7Lxw;!T z%)P}gP|wiR===4<)BSqwA>EA+CBJ^=&~(4v%Bb=i3=D8pPEg%Y4~D%%uZlY??HzjM z;9keM12JgToqWfK`mY}1&kcM`%?;TM&(S~oPs!)$e-!P=RaiV4evSdw81g(yzREfc zoR*x#>hD5t8NXK%zo?$Tz6Nt*5^WjZv_1EY_{GqZgJh6`*fCb8u>T7YWcf>achahxlh_jO3%@Df_OT=%+q@{_=`ofmmVdD zlT@Rj?(0WqH+Q0&RnOuXznJ?tEgyUyE-Ur;FasUYA3i8QMfdh)qRR%r1I?=v`o1p1 zX+8@0LH^G#_Qz0uK5fUr|8YyQU5(+1&^C3+XjkzW@&C`~=Qh7c8OHAmpn2gp6oZQ| zejEEu{LF)&+WV@kO_!g4Vhe0zY-VG(JVy@79Q5e^hAZ|LA7G#9c=!;FCtIa+(Vq$Q z=lIh+T^*FQa_sk7^x#K~^#JhH+_{RmGY~wlX6}#|C7KrxW~?i~PjQ-(i;zKhr8$xh zZiXIyp9bEnV~g(r?;Ap6y@Rn{N}Nf$dL84vH#FWOfo)=q-4FWu8t)>;`+3Iu0I^4n z_e0FL62>4r-h%?;-77TSUtzp;r<2Be2>px$*En+X0Xz?mStB;2cySNoE&Xr`JlI2D z_vW!T03Y@;-YxL-Q)mv4cO7p*31O-3?EB(PjcXZRWln*7oG7^z|%f_vu>%&7p1Q z<#w4jR^ZcL3;i3Re@Te`3g{Pq$QNu@Y_~Kt$4YsBA+WVZU%-=`-JG$ejkbUT~eCa~)$p!C&XmvF+58 z{a8kcbN{IRmVKqYTjh6V;;Y?Y@;ft4erG;<#hT!a#lUUYqw&zh3$vQ2$!$ z+dcW$0`*^_{(kC5SmT2AYpLJCzSulutW7r@-$Uv7M%)%gGr{zJzW^KTR-mAK8=~F2nE8-0x&vDq`+y z-R)c9S zAb2ci++StfwVz&$O%cX}97Ti2$KYY}?q-4qa-Ez79^JrWJ9rd;$3$Y^JHcZodn~)} z0uN|=9y|`oPX(_{@Jjfd0e;$NUKhgeGxUNt5Bs_iY^e40QAVGlIdeSo1bnS5euW%o zty6cfmwRUxb}w`Ai*j}^fZxHKUG3w3;yBHF!DVhpmOcQNymND#{}-O+@ccQ?ES~%L z{bioZC`&29`+_xwE0{yo*mvtsCpL+W;JwSfUt#At_-Meeer!8BXanC-Y(T##-`wh= z3Vd0si`H@P{rXtOQ|DcaK040XCBIpD6z#y3J{m}A4e2Ar;I;_Yluq(;&gJ(UO*xK& zO;>ox_yF@(jStUv;EBnrtasY#>OERCZqj+&zg=YghqtkP6nEMk@y2KkHc~6&Z|(Ds z@LTrK=0ShoCBaxByRMBjB^b92ryQJXcW?0ayISF)?uu_6auAmEqHy~SxM{B-n>o|r z^V#C2IFoQZu_xcDp&zeBH{FYFdK=xe8{IS={Wv>PIFo(dF>|7QRvw5JY~2D+A0)TC zUo1WbIE$T(elw@i$9npxN;qwHENvh1S7$Jmb9h!AX8g;hwonwm4U$fe>1Z>2 z(xH+3mC_>%GrP^aF3+s9i|w3If3gosfnN&za^O#7Ol3QXmP=2`F4X%}oPc>@>y}Vg z^UK^f&-}{BLAITYt&HmgttU$!%5K&=b`|TX?g)Q1W7bTqKTjYpn;mBiu^V?vrjHMD zKp(EfM{Aa)IZi(({oKPN{QJOP`uJ62-+)7;Coy)`^lHVC6laB&0lw_x_pOrO=bX&= zfRA)WAHTh&sqA94g$~AdL-xZzSDrx&`KA`HR6X=&TzbLhpT)JB_T;H1AC`Q;hYuJ> z#oQP9<9WDxt9UOu_dS$OkM>6=DQ4wFW-52stYgc({ptDGu;xzok_h=3(@oy%6zZGU z1avDlF_keODO`sQsrGCGXEPk|oI4RXAbsqtj&g7fCiFQvx>u@y|-q}`i$;6HdLyE6vuvGjeE zbK&7$cz8C?4|!JcRE)nkI1j-j0(Tz!;nZ zzmzj`F8q?MrMw>bOj`f9@OuUC@nct6KXx#D(U|??^8<6l*J0u-d~1owK6jEMsJoLn zwVOFLF$;c1J-u;0^vjP{+qY?Jc8DCa?L)bf5kdvrv>%q{_5Q3kKxlkp0XzlzkI!5`j2_@M*SN;v94JjW%xYG z4Dl$=+O!!Ql~+WJVwK4yDe(G_&_D55<0IBFM(_FkAJT85H$L-`0rhM9#5Y)Fe1mR` z3-nY1FAltR>=F5$UjgPaVD5$%YyT8?i|*PAoZ@b=U0cyF#b?HL4S^o#g(&*Z(`iO0 zof+MA4fUKCB5A)niAY=VcxTt0v<=ob{DH@^tr}@p1D+e+7uA#Mw`p_ji(C zm{VKm=76hk8~~0#2gf~@-^;xHgAJa~vG^mNS2(e)v$CBD9lh`e(E%SZo|0YaD0Z5h z%vevs*BKIt&b*LyYZ~iA0rtc~?1{IrCwB8&VWgM&2JEJ2@0A}$yKT)?{3g=P5A|cH+~Ijr7>s0x!is@$Sy#feDHSw#U-uGQ;{!MJx$2_Aq#M-J;Hf7BCx$vD&)jeOAT%1C|R}PDwE$j7QD1?q~DE91oa2}H)CGy`$X78lFjvuiN3Ls-l&8(T2C`sPak7F zUFxr=Upv|AHh&!=mNS*MQzH>~DDf?QOI;H&IZsKxX-rg}VRzFi@%wMsGY{n$AAZcXt_`9YGoJK^DHRo?#Rzj(@4PT42W zrSGQ63v=f}`{l?)F>CQk&6R&=@0umK_ic@2zwAQdN~=sR9P4%}7fyUT0lU(#C*Dcd zC6rqm@9B=(;n~tBnl%QUhc1*|BHC=5$LxG)^y4m)A0Mw$@H*`Xc<~X;e~uUQrf}o@ zxSrs~7#e?HHu^P*PV_c^BhMDMTg5NNUG|c}33)EXFFy*LtWH=A4n~jp_(vGCGW1l8 zG4t$^=t}GncNzJ2lPSfgI=i;4efZ}eGnN--=FU_MUH(NqJS%O@b#31@^sRLPTiWEw z?qO{Z{!bm_#Q`;!STj<%iud?F_&+}XIa_Y+c8~w3`TTEXjSutxT%Z5?-LBDba9`Rh zCyg%QLY>q)t~!6{<@-nI!L&KT-?hm3m<8t9dO8D%ajJ|w#{&TsM~pTLI8MJJY_gA5+?y}4SBo)8|g!umE;u!@Q%PEji3Brl!hZdu!eY`mn zp=cBEWqYOUeDIN-FMDsmaoL4d&y;36rIlaJT2@ zp55cqU461QZu(|#B;!^BPnA1*s_q)>vmW=#JrsTg#hBkuNa$;Al{C$NlZ*FT+#dl(cO^O-T@VEAFH72FVoaOrs;N20>(~2!v+&g~SSyU0iz3zmA->iNN?m7=d z->v5J9o5wOqudK44lx_@@X00DH>?-raxMpbZwL45h(*3tdz!lg+_m?2Nu|CUy=k${ zy}Fecsgaqehx?iV>@Shm+sfYu(Bpcy4*px*E02KtGvHoJf2FP5l|_GHne8b0Vwqh| z|3{M9(j&<1H2R)Zd6K)0zDwYt!G$vfKmM*i7dw2NK;GSS=1wzt!P-}|-zw{jfd{gj zRHhb|w9LmYJk?&@|^(>*zk@!&T%YGyv z`@cI34r9S#P+0DR`_gj#AoRY~+3@bZmo; zYoTL7?O@hPFGkP`U*Mhc*;^R14}IP(;hp7OBX}Qf&hGn3 zXVGQx+-9vIm-56HDVo5undjGeUdi)fo|Qbm!n1(qc%Fa5UKq#o&pglPIg97HJa6I| zw7)b4TAS};Z7$34ba@Nw+Bwkr5wu4fL5<;0!QR7%{DoazO=Vy z*R}tsAI=9=Kc^n1pEtYc=cxZnKR!Lj9;Tn)chOJhSf8G1&%Q0yT8v#`Y*%=7s}tQC zfrqji9QfGH#wMsQ{>n#}ylp{F((+t=8$q^{;bGwK59m`qy2eZLp}tChy^h%OYH|X* z`u&Z={J#7!zqcOd_doi-+wrsZY$-Tk50T5A$@fH_y^OE3$n2pLt9tK&>}J`okz8~U zv{)IrWnX&S1RegAm5C|v4Lfa-?6iq3iYa+<&UV&^+xh=ecv{m6ET1pme%nO@==sinT752;rY(4 z1pe`d#9XAO1w*z{2K+L5wa%lp`n2?z%N@Ko@fLWhSj+Iwh;7jC!@Zqdim#{oh1Oud zoSRkT&{q9id6lY{hUuqlc zqt=@n(V5yuxHgl$2YmGriTc$e7#CnJK7}zk5j^F~kHj~41{!BKTrqk!_VFJ09Hh0* z&q337U)q1|McW7S@bhV3pGAxXc{TML{W(d#SuJz2jQ->=C|71aI=Y;8CA3i-TIW&D zq0b-<^T{=n-Tx?YK5P5`o;LbcO1A%8VtW<9tN`ZSz{9RJxmU!b7N02p26);Z>yzo6 z)(P(q^l?nACfG;yAZNlf`j`cul>4XH`u*@pG3k5ZQ$2h-g+5N955pV!ur~it`nbm8 z?904t)bMw4??kQqqa=6B_A2*ZvALR9X^2x$B+x_rH{3ItMc~^teHVU|- zfI9-XCXW!c8+_Av@_w4bq9e7=qP(#P%e-Qc(Vn6{O~ zqix$v+CIwJu(~^p{7QaiwG2cpG>S(=4*>h<{BE)NRN9>`vXc zsN4E?uWmQ$PJy?=@jHIq-Qc9XNsCh-+N>#~%~IA}3mbaA7QpE%e%pPtT@q*;qivne zT8Exp-F#j^e^mf4(U3*G<9r_)`f;qp}Hx0eH#8s-SyyO_`%q81J*2POg!ts zdWZKXL8BQ*#-izh(mQxJ9Y_UF1gVx#UNAva`Ny_U{(6SG&mU)h;0Sgx}bcTBJRx3+Kj@ ze4CSenDy7eR=bz~%SPAy)SjQUF%q2rr{C<~qWK1JS_f^#ii0!975_}(@(BBrtl`2X zs3#N)Giylv;2OdlP0rQ&5!e3NO=kaW0Kdgs;>pXwHQevl={J=h=l82R1>NBt?-^Q*vDub$Hva9vOVGz4=-!0AwE?@P78}2`rng%&AhEh|&1ZASjcu9=Pilst zi{pva-*&T`$r))fIp-&vy}72HoOAK^spvp{Z*GXW?~dVoUjDykeau~R7H4+y|Gw23 z?t7KM;QvlbhTD3M;Y(AMlj$zKz#&KXM~koZ@tn~bA)a&7V&RIP&K_=mS8?+@!1v{g z(82KJW8Q0>FzaZ9b8WsxECSdIYBSw8j{>iNAEq^N4|U%DhL6|MOm|Ihd157tM~a-lkc|P z=HtViFH7%Yj~n)7dsxf(|MK>3?sC`Un{$?Kf&1EQv$xtbZf=45`a}4s)R|S< z-F@R%-~ivOZz_9gw|Fv_wGBS#yRzqqLulXn`KXip%cCYYzG=+-?(X|fB8S)nHWt+Z zuVfc3IUb$>b0cjP^E5UOzrV7;=Sif8yW)2~PilL(E1&gwvZROmW~r5(p6=U!uyWDU z{WI}QBRlNNus_q(86E4c{a^pRa}@fWI4pb5OO|6Nw>$3A*PUcWJmS9m7B)I^vwXFa z%qfYwudQ*Cc`Z@*^$*A+aANKo|8SDs6EXL#_3Q~b8SXn9Ie$5k;r=C$vzFR3+_fM3 z{IBC~rGb8bt$jFi&B{ZOyA-|{{wIpumxo}Nz^mZgxAT3&zYomW%^KRkT&k)W;l@Xz zBgqrE4*6ETK(I|vPspCOI_xfD5{p7P=x_OO8-ZH~+!`P5Wx%!H458DS!rvXtMTg~Q z#FH}}=QQO}4U0I>W}*A1)n74MI!^Y0Y<}!Sd9Qs>F!`B|3KeXaUopVe+9d-9zMQoVo9>wtZE^`+3XVs2y z6Q^=^kk6|tpu?j3wYidb+)cUUd)=(==-(U z82YZ+#HIXw(cRgcjXA{I7o9#Fe=PIhzNp2Cxa=y$W!HX*^$wgL^l_>&veE0QyTB*7 zc6Goj`AwzF$$1Iy`&iEGFu5}&HRSVP_i8U3TVm0Sc(HpMbY`L>BCI>wXB`e*niE6K z^I(iXa`CG($O%VIe!=rip0Z=Tm`C)f8$*9zANqT0=OA+KVbHleHaJ$Vk}@EYUrp}(il%HJ8l zex32Rdm*QN%ZnwOd>qEKg*|99_8q?ejvskFFn8jY>Kg|e^EB%%vK3rcejDZ6E7lMj z?`922{wOET8IiBC)^!GWo!V7PIL+7?QsaUq=weWZoJQgt5TljmdAB!pF z{}zwF77uu%_=v^hG4SXO9(%##Iq+B$jq=^LV{*cRc*O8Ee+d7Q;9<@SfL@1sHlFPO zS9n-G5$C<-)w%#b_I*1PZ!e;W8fP4|NqN}HS{l^@l^1W z-m`pY!9MN-ANC=q`;gCXp##QLXS$^$#4le?TgP;{hcmxt`W}w^;897;QpU z+IcVEO0p8%d;Bf9F(*>F3dX-?&9FGe;E`D$=8iV|If^|6$Ech<{_7;;jFHYx=tV#8 zAS)mG^3aMrXpD&Kn{#Sf7?+p)cXI=>a*xj=eRmS%QJj4lv%d^KjJ?2}TIdOrlNQ8d zK5K$(cxxAD0Y~=x!#>Rk{uUmufkzH9>(KYD{<~VSZOcsUS#I2 zb*H5E@`8Aj<6GSb9(Hf9H?V&YWn4o0duzd?lXXOM`hd@mbpd`{a2Pz+f=BV`xy_r< zkH_q?gqWHYl zVF!92?jkm?d{?_?+zyZ1W1PXp{KmdBel6pdX7}wLlb%19Q=M3SIyh)fKAdJE^xH z{xwo>9rbFdhm18<#gBC-Qf~_Nen`E^>bF06n|{9++J5VgbuXme1=Jfyz4NKJt%Nue z^~^mO)awPj8M52vn0kAA#*-z~)4e2$?UK9I)HimVs~oOe>h-2x4)q>` z*NSSO3<_>okUSM*cRyocH_j1;? zu#7wWv-XPgfr+zVa~AtLMs|J-{j-c%LLGN9o`Y<>l;QkN`(T&AKjlJnpj)0L2j|(U zW7rSZyox+^)(JVyhwOLy>(?J|>MS}JSv-&So1Ltcx#S#eAr`uk^+dUng7+r=z2yWPN8-ygf2_(-)=naZ;_ z_C5PKd)UK~Z?FVZ(G4_0qgyONKbcRzql9UY4q|J>&Tlnw$c*T z67b*qYwo9EJ=wd1J5soZhwq7#`6n{3=V&itOP*)Q3a4?2s614A)- z+2f}GN3t$B$U0{*jxw^|cm#f1TjWJx)xevTRxa`7^gXSeZxzg?b-*?@Kld9?D)DH2 zlztv)10AJrDh5E8=G@iv zxe3~ypwFE8Ox8*6g!vC>yN$jp=v#Z1hm0e1nSSXftzY^x{nFoK=#AwyBaQr?^aW#b zFMV~VudSAkAv*7}bRMQZ^wzEfcI0EwEMG!)mFd5IgsZ=yeN|5FNJD$U7vM4#T(*wl z+iuYv9#8NXOJ6O>?m)jU{FYUlxQAKx`o7~ra_f(y=$l8qD(;n*t+Wc9wVdDqhWc` zo)}}*w7hkgk(Eb*{YC4+Kc;sU2^RAeJEy1n9OuQ#UlFYLz_V}lNhT-nXJ0_yC%{oo z-4acK@P&+xwe-Gmg;jhSUBF zKDU>fem^<(i^jLi^t;io*VXtg|8M$Dl$w55e^I}Q64UQ%N9gy7|Ek|&)9*81)NjcN zrr)QI(C^*BetkW-j(Hk9I|BQBLX30JChirJQp!j&rz`8}%-8zj-O=yfeq!(b+S= zD`sxo*&x<#9di}TeP3!+>^xqeL zY_xbZrrSqb(1WtOQfn2y7`or^>Q0Uqih+;0BcQ?8*;yg1>>$&Akdr!B*=go)^Z`$FFa`_aWHt=eWc2Dr@ zcC}9Z8oW~b=r*5DGKIY=J6qrRS=oD%IJEpt{i(%rmuK6Hx}Z-S z#Qb%9x9baI%c+PzDdEQh-PN@2P6ga^-_u=)I3GdG9t%p@1~d*w!Q@N0;}B~NHv-47o* zf^S^f+Qa2(?tF<5Bhy}#?h(kuU!Dj2C_c0DsIu^ziweo*gAeN%13TsudS(~C4DIqW zZvkbn(--T}{`K;o()$tB{U&>o6Ph_~tuJy z!*x9WN?m$<2cUu(WC0?`w`89FIT5>*+;a22#DYE+tvTM$a_U(G@sh$sB%EdS9 z(=yNh7jD`=jB5PRW85V-IwR^lvsC&Z5piq5yM~zJVt8U@L1!l~rT$#rJ;J*L^Uki{ z&CsTGU;6$wioX^$RkcJ@upajLD}PWj9f!ZtOEL7Y?1D1%lg=`BdYk(X%o#}4{ASKu zMP@2__YK}jN85f=-!lZ(F?(-U9cx)Fd@OC@`(wWEP`r$IWm8?Ew_6S`AAy${=z{+6 zvIHJ}G>Um$bAtO=92Ski8`aVCGHWihvTsY>Eck8LM)7#(DSX=vkEQqQ ze)V}h4u02X*R3gxt>HPmFCVBgEi>Io*aXrmCZ>}ZV`4gjvAgf#<2pBdud`@1eQvko zYS&BF$kcjCA7=dpc9%MfZ2O~+ zRDXf>xq@75yFRDZ3V(g}=G-anv7x@dLEql`96MxvzL+!dG{?j1vw`J&$;@AiUnb{7 zA8vgG73ES&Ek*0|gB0z#|AE3>EBt`6ld_+Z&Hj5&$^eR4x8Z3sbGR8D zHG4SwzE+ncPBOSCA1KIIi`#LG+Y)3swHGQK!1zu9 z*7g?0|26cQzVW&Xd@5Kwhm7&;GsByjVFq4n2%g1f{|%i*Z-b9wAt{}Ex|d)47vO3? zJEeb1PBgF<0ISQGk8i6y4NPxbhM4+usjs!G(XL(K9b8LZ)mVGKh>F-J($ls=bq$_U>Tlvdkt{U9qB?eX> zANRH3-ihoz1h2-#db%Yi(l+MXgZOolf5GA`_b%sIm6gGgVpG>qJ>eLlaTU5OV8?ut z!~DrTne~Xi3|=kx)%5krzq;;cuZ=9hAthcm{f^Tg&(vl|p|Fz4Q(FXVU2hLSC1*O$4|7-wvq)%2(HcFI}X zb*@g8#-9FyF^B7cowkm!&u08Q{5`u~ZmIo(btKWpy(>i9GSLRjv4nR|Y8m#I>6<;Q z|K*H4=~3A(AHmCo;4VMUlfmBZI_g;7-pINCJD{_jbuH}Y^=D16YslsNe=?t;!2^YvoZ(hX89^CMsia&& zxq@;%<;RpcltmOPTd6f^NI<@7dKtRLhWKRZy!m?8BxERUO(M@SwI;P5W!jH8O#7>8 zf5;rVC@_c6b>eGrsQtGXC)pTv$n_q^t3KMxoVC23x>eNGUFGZZ7(3}be$)36H(A}& z-rc~=6HMw!1~&*s0{tl68yH9M_VrbPY4h1X56syl*wO_)?EeLhx#L=Ls^5TR@z}xt zmthZ?m_hErHr!uf?xmX7{orrH@gj?3OE=TsI{MSRjRyKty-NA({NBhM{D{BjI=v6U z-LbgGi9tZqTfowN2W5o3cr1k%zO1r8MhpTtGk_yqYQKqZN0;i} zvBrQs8^lj{dKf(7#2RQno%V(Y=rE55g(-gif_I8t)=77Efzz`VRxA1kShdvOO#NtR z%$Be|>MZp87&H02%-vPSo(#@it#!aqKVJn-kT;eGcU9h?@(MAp? zwDFyHm$Jg0J#&)6g(9s%jcHS2G--i>Wa_Vz!INh@OcX`OY4CN4Vr%+ z(?;JPH}adoH$aE&=O^^@K5a{xi_B^13&w_+4ejryz2>>y?`mP5cP0Cqu`>f}6#0_a zc@?QOYEf1ER0HoO;04FT;;``APA^8qyt$8gvy=9_hk5Z^gHM8UNxkl%v6@Ju44(c0=!%z4oe<|-ZcN@W>4!N3i66>DjNe#Xyu+9nL za4R@yeQj(gaKrOS_pa+a-l&~Rw3qz+(&ATwKgw?>0aL%%@$FW4jPK&iZL^*RWJGmm zS{U*{fl&+$>AMDK2+p^9TQ5G;)ay+>Gp|DH(#^J>{7~TKQ_tu#>FB_mn990r^|NOa z9F#Z9%kl8ij2p2{!P>tc83pH9B-ahEueQxf?$nW=YU5j`y@PK``^~hM90p@sMyDaS zLEO%@G_>PK((VJ=?W5mijE%8(0yNuxOY``CnSOWXlb--QC>gHcpHp`d$Jhg?o#9_Aa|B$ zpJQ+5jqvUYGjY#q&Sx0pkjLgE*Ktn6dVCD+C!I|!Q+uiSFRM&UpBU9f_In>z8*RUT#ofhh>r_Setl+O`yZ{hAQ(NmX*wrPDh&7RX?>4T;e zeb9O~^!&&4;p?7u82V0wzWv}6Bfn4ULK*)zat&^Lr)};EisMtsKQ!|~{xI*#1dsa0 z#-+_%*0zo4npWzHuJd_s>X#hr?Md@nZ+`ojHYWBsJ}=I&ZJc9LZF2Zc z--p-n-Gy{r12*|y+9+NqJe~tbp9jRfBi^mI2*VD83zoaHN1SH9w&&h$An z9QqBOd>^Rys<)LohBjj1ABi?6mPVT$vy&OKl%K2dk?bLJ+Ap_$?vuoYuVg%J{u%Sv z<6}#q+ZMtlA6#~WLtQlDrr96RXXXFP$p5(EfqXbWKF+zy-d-8|0LtgBrr#Q3#KtzoPj-1GpCD$ILwsE4giOJ<!Ydu+a& z-zfO(R*b zd-*YF?Lq&+JVVnzJXUfDeywufawt0Yv?ry`$#*rc?Eb<}xy!sR zk(2h@Z1#NW5*cRx*?JQg;|tM4TcKI)ZzXR{c@cGqSlg-CpGJ1tkMd-PHSlt1-lsjb;2_a^)~S!5GO4_JyXA($#04oNzP2p2ID2(yv+W-sp}NDr+}l;=d4MJKh;OOyLL{=KD9V~ z)50(5?hd4l^n3?x$XQNCVg+szx=Qky?}0YsXk+lV`v}5=xnbfzfq7BEHwH*{L=gXrpl~$5&F^vC@gS z(iMt3sZAbjWY4!~onRd5(MQHlKp&;%ehI!Tb>)Aq3gKzzdCt_%qKlCSoeLI}2gOP? zuHJdw2j{?D%tMd<4EImK)VaoutV`PWpT|5i`~)wZpQ^F1fkwfiO;eTpS>7!WKX_;M zVrajN{Z{2Rt!K=Gva5Mn0d6J_){Zk{Yxav6Yw18cH>YTB!YhA&eNk#Hwtb_2?hEl? z#WkKk+Q?d{y?nFgf`@#lm*sQte@F5Fe|1mN@CZ5V6y+5(C5(+GTygSyqot?a@E$rf$&&e{ch3svax0N<0} z*V1N_WGhhjL3m?qq5AB$t-PCv+*vr!^G^GvOT`}_w(R0xF)m%%)TS@_sr29h`XoAh>+Vqsc*b??|(=FfiVcE*{#nMK;0DLoOoH2zwjk?->JfMeyZ{bbW$3;lIv zH@8gboTEF=mdb_?&@c@ejzPx07uIX)hrXpFwSIa0JITEh_*=obE|SxxZ_yjTQ#!2$ zIgw792Cq1yG}!_FG;eFsS=y6KNQd*@%Jw6BeLWhK>vCVNWlw`=S31hWW4L=2cz|0f zekuBtKheS*YiEAw{>Ww64#wv~->oZ;Cm+IJmCq^tv;(@ra;$S3dQnDEzD>E2atp;9 z&tbsz;G9R_+koE~A(jHI^MGgH*)h~vJZt!UA9HkV9(!!en+KKe&N%j~mQEp;gmIMp z6dj8!!sBI(_ax~Ga5H_jv#$%@f<1&j$@NIlD?K6KTQZ*s?HbcqBBxC{Qu{C)Xk+vZ z?JZ83%$+yDX&X4*gDh_cC%#AZ^j;-;51j7TxPjAOzQOzirw6ES_6RLbar}56r_3YZ z)IJ&A0#0@H$O$+#6wn_y8952y)Q%jOTsI3JKi~3l`yS#G;&Vezo7O?a&-VeNRlWu= z+UVc-N{u;fI@3(?R<(7cX9In_N*{`Wo$X|{$=CK|Xi%yj%OBl$ZS_`g@6fA{&ksz& ze-*qmr^}>2=vVuPo5lY~Mw`j6frpj`3wtE~w^^qSvpyUD7=Gg)r>)7J9F)6H(PvQJ zH^5)*lXOHf+q8E%k-MYXkqM3ehr}?oFD*VvzNAxkNOuFDm>PGG5mT#VoKrl<|EHZB z>SHB+c>R}n_B3_wq>l0-6qDDQR-edfv-3`Rcp>kNZk0Voe~t8K;%7qxa*cnl{)F%J zP@fBJpUw%XKBrR0vkBPWrtkI0lKhk!$pLVzO)v_*nezXjJ81tLk-sI!xnB?AG0XC| z{!sqj@qgs+m{1=#T3Xu=^7ka_r12NqAjscKdH>(=_qb4>m)br9{Ov^@!(Z&vBk}h` zWcZ8hkPD9eB0J<5w{v&8ET0TcUQ95nEfr&zEHl@J!fP9okR77f^+M)wS9XZ}%M&Qd z2|kx{8AUn4Gbj&H?A#`%cc@KLcIQH{H{%{j9yn+T3W~AvVdb-M&o{$6f^I zmw@5L^qGIOjRx!ts}Ft#K4xx}^f7G~(2o$Pq#NW<1nb>_k0*bqoPIT@D-+$Y0lj`L z{?9=3A^iLbJhD0^&R#fp-a;Qiz4hGHj5V+i?os5WU_VUVFfGDcXD@raI@-XzntB?O zh7jK00&m%kvBqdylJ{mk0B_-8@#Y-X)c(X~#w8b7QryvlPdt#iUj@GOyZ!#QmHbH) ze@bMw>8wbzHxz>VBJl&|FPVH3*3k!$u{FdO*Rsc`?}{IkO^ZHUaxVDT{#w{ur@vF^ zuPdAF6nM2AI_71jk54K5SWuDMJdmgT-cx%15POZ-!g0Vh_F6r1!dle;jzN2EGi&I7 zVy}&6yboEwn2*K}!H%$gNG|7w9?^EgC+hq(T_#S3PWeS8vfZ#vY&Up4 zguDUy@g|Q1TEn&*akRq0luIbOJN5y}Ba{V{L*$e(NXe<=?a|BkZwuj-4_>-kyBa%B zx#jW+WXmLE>w*(!etS7%%suva7io{Tej0WZb=u|2QOB-LdGOEdi-G%Q&1YnRJi;au zFFDJLmmq_D8_#zKv=crHLilXDir6rC^k5wQ+-=S@Aa{E>aRg*)9yl1E)o(95=$9cF zYk*nu&} zUfzM)45VM_sNfws%E@2WkkzKR#(MNk820_Zet2+hb6@EVYlkv-Q+dUVwT+XU50BDh z^qiE8E>b)vD>P1V#>vZt%xg3IYw90-g7(=Jp6^cX2;ctfB3B35h$ZsdpjrUZhT%J(tK$v**_HK4i}|h3sYcb^Un3 z;%^uFyn;Ka197FMP+W<#Xwsy3*-=nAc^L3n=o*ucpW+59su!P<)A;1uy5~J0ZO6T%3Jnr|b!IrI$}}3H21$ zoR3bl-(H00j_gRyTYbx+Z!v3#?_LGo{vKD8+2bNdKzm#UcEZb>I5UL9P4GtcY(wV3 z`6>DMHMUFYI{;rN=y%04s65!5{A}7$Zv?!iRl=1`0{gj6(|4Y&LjQ^ta zByaUN%3#V#6eA<;SgZr?L)(kE>+n+o^?`#I_cjXBh zSPro#V9g5Av>cjbs~z+W4)uo?eB#SbJ2@M`_%SfF7rl&e-z1q$9NMPEwrL$?+FVB) z&%Yslr1=7_VHz$(HauL(@t~ht+Uy2?T|;)8Vva%oz|#FQ+RU)35g6%H&_6_lS{r zI)5-R5@bU;R{HkyYGNjvEIuuK0{}jQ!KW)4f-oI(T{U`P?>Z zZ(4qx3cvI%=rZP__8Zs35Btvc{~)q{JN#0vh|a0@zk}o)Uh>MYBYocuUGC*UwC_yU z1IGmULLb2xzVaWudBPo1yqhQe!x|+%+x}$-&!+#qjMsDG6XP`p`jtDfAK#9H-jaWy zo%G(ib7^bG%i;Te;JgSvU5(d^bv9QBzMumeh}nkw-p<~w*;}!;gYPU&Yk_Ozz>j&{4?NA6M(8s!j)sgj!3*xYys*=6Q{u%q zZl{gb@pAgte26%Qwt1R1^4}*pd2Nm0X!<0tBgo%oa53`%{%OsS9f%(H>XMV8x>M;3 zzNY0EOOJFg2etPY%{)kB3;VsPxCm>CS!Y9IN}fm2-v@YiHC@44-oklAb?kLl(YJi2 zKVcVn^Q4zM9vag8-jKa){oXC?zlC!iw4WfIK7w)%MfS`0%>TXl&G&lVI>Nk9&2#5y zcLekX*RmE0%37T!Z%Y``FiCWe)k@n0dY-GO9Z)z5#9a8#6;&Nl&*o z{d6UpcJ1s{*I6WV}bd(*RM0YnMgzJ~VRbyguuvqWP7#sP}arr}xnT0(O9*+mM z?)kb0KA3aeDzF1B?AC7X_8sYb7zAwZ8!h6Lz+Mk*`G(;*@P)ws7O*uZp|wfhfK|cc zgL1{0@FCbefvvsuj)wd;YhTG{l${#HI{}X`fX6zAD9s*$$CjRyZ9>lei}Z6O9{+J- zXVK}%Vru{G3+(X=0`~Y-?5&6F@usShZ1>?1ZSPOS_kosTzDTi4)GRkG9G0TN=RE^7wZ4whXLxFW0`0a0bWu4F#T$CL7U*Y1`b0 z|80C8=8^U#Z9c9UE8nKi0FHEXFdx^%j_9 zi+59=q`XFXm(otzOZkjq`uBa%7s0{AucF;Nn>66#DF4CaJ2Z4}lYWo-YiUrz_ER_3nAav-!{qLTWON*|Wcqcy?*eLQqq$dy&0*|KN{)3rkPP9$A0A0x2c{yzb2XV9W{48X}qtE+}Ah|7IXVP|V6q_+5lP6dih~s}UHrr^E zvNLHDVZS-t2E2{5FkMM^gko05$=PxcUbZ4ZD`P}Ww}`0?9@ZeILWHUhkp?Xwb` zOsp0g-^6OsDdKA)WPj?r$5cG=zr^SJA$)#g@j*|deV+ zbS3jK7(e#pr@#A^5I%QWd>W4O@L|1_ZgPD4a5!_v@F;QA5pn8|taj;7Fh`ZAc{YAv zS9sZR8yv!GB6ul3;A!-na-yd}&n$f7dxm-Q!M4*lD$d-_m=%R!d<_`hH&NZaeXgSp zj{SIeZDPsw0`!n+U?K~N`Ef{}`J#{Ymn2(V| ztvq$URWPx*V(NH*AKj+d+_C(9*zx-UKK)~Bx_tMAM(MEfNRKwrS{0yC`46)57G!$y zpzGkFi3hPS=jVc&IU^p*j&8@7SssG#0ADuX^TWl=?EWM11%9T<4}On-c9x;x!BC&8>C>#s4M(@xZyaP7n*FuF z_ZW%`69z+{*;uvKcye#vNuM19n9T=Kdsug1O7PdMy+YZ z+%N5rzppq-gZ4kk-M9I+sy7WdI#aPcflN?e{-|u_L{AUS>-eAAlb_G~jp*^E@J#V- z$+_Cwe8X1j$6NgA&+M0jdq-+~%G`_TkGns~KknJ4Zz9&`26ByndnbE^%0-*s(94Ti zYrMfr@-E$22wloWE06VRQ%-XfU1|5W_1@z1ON&qSVZN7=e8b~3{RGb8@1+dC+l$>Y z@b1dbEMt5m^HFw!?m09vMQmj=ddu7U=+&lJoZ%nu4gYv=V@5Yve64?a82z5Y zcc>?K2EUpU+<$(YJ|9O~xr-JaQSQF}-}W1l_rHbu?PL3GIC8%uZNEp9m*d@+fp2pD zBJd13&=}vwSSZ(`G19wjJ2Eg2y`s29t70Gl890_cQug)W=I_@3T`Ii^MJFRQu!Oz-w4d~XY_A&02;3&K5 zRO)FzsfF(e^o`G0bPE311pBQ|kmr4&ow|$dJZz0!!BvVz_k2=SbB22{Fp=R^#wOr< zsrA6snzVuO6Q7r8tqP3c_o3(Y|Btvg0k5jM{{GKRNJt1gj!W z6{ptzObjYk99nVuX=}pZ2$s{vp{;Eb5C;TGsaQKo#92X&E!MVHVpK#BG=gxg)%Ww= z=d63rJzTUt@Bjb2d7ks^n|;q+d(C_8wWspp##b22I{!F3``px_U7&~GPlKlTeyHx? zGMHx!kM^X6Ybu~^oIf(8&BoQX2P>KAxBg<}I)nFbVDD2C=cir;Zxq{aF*;U{@xK<6 zpZ)%f|JhlVevfm>N@F~<_nNq0=senZ6S#Ho!_7$#gb(R94)qK6(8iIpaS^{gTKFLc zHhggJ)kt6ZCEauXw~TQAJ6SRg>(~^?aumOlEDetu@c175{Z+_c#jHA0ZyGqc^)~-> z@2~6`>eX)FZwbCH3cttKa~DEF>!?@iUWES%;np%AT)~`Ip#MGnsy>eH6?OH){ObLk zA7)+daQ~Qc=4E(yWBqXd*n#ZVUb}86`$A78tI>Lgo_tg8-9>~R?%2$#C)IeVEBJiHtWo}H)4bG`d|s6|+CP1|%P*|hIcv0k<_s@&E%g)f$M|Po z?&;pr6&3Yk{HmEDZr)fwc@1}AU<=1w?=kdA_{Y|BKTLhXKfc6EbtTt!!W=Kvtv=5` z@n)R^mhYcD&r6lE-eu|nFV)-Y+xCc0gvA(lEd8zK4Eb^zU(4CV-{z(t(&dFl`v`2O4WU+txA9cS+ z7yr!FUaD_>7ys-h1i!0a^^D+m^{Zdd9UdkAF)x94eTjeUU%;Dna>xG-yz9I9C;St< zz3%>r8^D|V_Q`L7x7Wj;`Yw3a_wdi?3Et$B&)Ndqdi3N2;Cg%c)!V_lelLI0F7PIY z|MgG7yMAx~I4{BZk^A_QJ0(&j^~@&}B~snJQvalqL~5V{E`-X}qYtruEFp%NJi)7wlWD!@pdh zGcvh@PG@AUrX8Iz{S0ly&%eC6U*vq|NIUpw?s*UVsM@HBwZU1(?v7r&%Utj~Cm83^ zR+DR|AiW1xbX-b1+hhJ#d(Y&@le9AsT11D|M7q6-z)}o3SiU9Jw&=SE`rd;+-FaJ{ z@Z9>y5e1^Jc!~KTwR=jGzBR%5o@zt%DF&_~_B_cIQ2EuJHF2j_`V3dE&;Et;r)_L;Po*u9sw_nhksiv{JJfP_G3f9?<3<& zg#Skq1C$eE=ae(=X@9cX3*;Q!VJJDr(xW>y&MopjYyjVATTQgZ|4ZJ3M-!2Ek~qY0?R?T_+=rUT(xI%l3!M8S z1I@)7?(={rol?F?F}&NShkS2TJ?|?PDrODGv&3iaokns~wEF|2IppgA;+gZ1LZesJMuW%t0}4)o=xl&_lJtO@m6@xAed zwv8`eH@*N@e9?Nz2KbT;`J!CJgUHD7MejgYGjxrQ^M(5W;(X}^Uv&S8TQjfU0e_g_ z!Yj=wiog1f_22>h5xo+uUD)thA^jTT%MYgMhHsy*@%%2+KP&s6P_NFRd?QXb?ThXK z;4GUqx{HJdJlOyqqFa8Ywi}KIM7gB6^WUEi!)kTY>Ido!j46NY01)c5E-& z=Awf$ZEm2Aa@tUSVRXm?-FKZwopKGxo%oe8L|&jz*8a1!uX!iMoN7}xq8#dKe5>U8 z*sel%_d`~@m6>+kJ?6BbIX9zM^p{YlIf8uJwYJvL)+NYQIb>_gowJW$R$KSdmh4{V zpfrGk-dRHqT>WUY{W|8QYSG0CHk?uRD8{i|b5XJFpE0@w*lrq<_kF zJVD$whZtlIbh|bd1%5PtP~@w!9(LcUg!m17XXfD5?EV>CO)q3O z!$Mq5H?$wNYYf*vgX?ABs{EMoEA79a>8y}n>i^mj0l%)!!LI?_7i;{=r6y-FH)nnH#y53CK0QMDl;o06 z>F&JIn$7_s&c++lW${M(Y5Mdl@Rn>GU%>m-ZwB_OwRlf653mv4+B78_cijzJgZ{n; z?&1e>XU%>$U-DlH?j_(}0`7(2UJUN<(q01j{&VNnX3J`~l@T zl-E;g&t^Z?<%*tiY)s<=?K6!2e@E>9^JD+lhW`&JK`$JP{3V~T-a&9bpG|)CAmpWZ zhJMxc=bVdBDqA4m=3)(O!{w~{CR5#2AFd5(L9g}w@yK(-aL=8A@SWa4o=o-Xk97A~ zeb`3~(0haF%h2%`_r^C42;tvLAK4upJ{#EVO_yAHqr18X&A}mF9uFK3opv#22wO2} zQsW5eepqK?o2StGr_lSSj|=U$J&fbI3v)Vpzll2yiW$#fR|_WB_V&A=!w;eJUD5fj z=(2|{E4P)0J}Z97-;42ZFWSj3S|Yo8_ha-L+tZ$_W#Uf+2kRIA0uGI{y8Cw=mF+{S ziS4cehpanY2lRG#y8aFv`hvr2g`VaDQh)8PHhVi;dY(3w!`3{D)*n7TNNcwWef+{o z<@nzrAH8vayKn8~_YVqi+B%BdDtPv(`|K{pw*F_-BXeKllehLOZu}Q|`6lHbDC2r| zBs!wFr9XMTfoa|8wB#1*ZJb=oc|W5$@8@CWs)(Pn#y|1#kj5snIAcUPJLS3(Q?vEs z$I$2c@#;WUYgn^%8GIU5U*Br?yKl(vku^?naj0M&!Fiv+Z3<(b`WUPM*uRrIb}qSl z$Xl|sF_8Gt1Rr+7hhI>>8S=yE{4(69#oGHyxML?#+)s_c`fqUmZixG3A@1q%o8ook z@9Y{meoZzOiPLrNPD8I`s*mcif92yJC`P}f&**sq`;okop$!iMH+S9%@73m^hrDw< z>%im_c2M^#>{xs6enX%1k->mI<)D>+eifV8iB0T^+XS+{7Fp|#;fmRIS5Adr0gQ#% zL>@NLAGqbvGafuQ2gAVD{n~aew;LlF>a7OjN9Y1j?JUIyc*B#BPoz8a8%DG6k!ozY^^0`r6dJ34L zDL6L^oWSdZ*!Zvx+xQOcY-W6@JDZcVqg=`v1){G@R(r4R8|1M5O8FXmO!Eyq+Gxk= zSrPj^jc@Qp<3YibkN-i)H=WI;b6Pa!=00AhlbRQ-;8ESf;O%@}jE~OOA!p-ff8(dg z4_*il^$p6++xWCb?MC$8jZce{sc(jO$_{Qx?>Q-U=^M1%k`4N-l zk=FjCfVPj$+?}@eNSvsca2zq4a!u@QcI~97(_LFyr&mm!!T!3z7H!DzpTJJjb`4_| z@DV@P=V&vZ+@R665%`0FuXt!g*ybknDb#758*^4!ak|>=f~|ajtrSt}tg1rFRg|45 z@1)G5yq?ne1)D#{H{{ae<-%KjiuTiXg+F>g_2{?uwr-kbb7_Gd6W61AesSB~y3jpu4VDhHlAkBs3~Mo)FTlG0Q&GX%9m_b>?SJgXZnP)SheC2D;OL z?cX3Au}{TSXW=8X-~Vj%i63(=9d-{*kFeJ?uFvfedog{M9+_^v4ITyHA%Bm}I{rKV zkKP(iQ^4sRaMD^2!>NUs=9?i-nvcE}op<}N(GRUrmpr%q#A?Kx832*2gVp346jPA7uX4sg<5d&8+2pEyQ1!5gb{zLWP3$|0lKoilhC zZ?t}fGnyP8#v7gc&_{TnAJ)F)hcTF9)f)N+8~_Pq#vFrz z%?d_g4jkJfV=v>C#^g3mH(qJ3UcSL#pA787`vzmL36zRe$5B2(Ifk-{aunsYl!s8B zPWk!lpkEdLbQV~D^b37TB}QlFJv1)e^-dsfpn-S#x|42Ks1?A(bXjgdbWbd!@sdYj8E4~FW>y_!4 zReSwPT-(I1=qB{~id~6AR!0ASzfZuobpK3S!Xe%-{#1BG`bDQ}_>)G}=JN`!`5Ak=A*4&h~|QrL$6zBD#Up2kZuq4BsaZY=T6CXfyuCF&GVNLZTI;G< zui)%XIW*<4wT8BcI@!O`^K;tVL|fXMC-{jKnK>@$=BcKed?$TTOx}!+9F&9Z>aH0) zESAuE#E~H$mN(Hn2W$4T@c4<*K0V-TSq}L5jF*kC=3lgqZ%hc^@+LZ4p*M9#W0S!S z{eqVRw&GiZtv+-p{EFseHdEJCIs$Cv91ZsUz&1S_mP5~S`WtYL`sj(#EU7+tKOXIMo5XWA z&!s$hcL)C9(bEIHlf4;jAF=;3>JJ9c561n0V&=X%{DI~d+xfk8S-vF^>hiy0FcmAh zF^1QW9%HC~e%! &4EInjhlo;=vH^GjX`A>$!%0<80veWjyD}rhr?Zel5RGmhUpS zSBG$Q_Ge27cV!$d{oVP%y#ToPp&L!;h33N_=p?wzgCl42iN@R75U$ptRbWT5xqISp z(Zw0Soe$jkjDhMC!QA+5jt?bSaK+ns{9e4ZxKS`~iosOhaV0Px0p=sKz%|cf{~l+S z6bjc~Suh*Qg1+MhO7(N!r+kX?I?Cmg*HS80yqZ$`o}zv|J{LDg^eTRY-oa@-?CkVV z`{0DqpOuY(f9ZK7^xyJj@_l=EMDpZe3^F^M&-oaC&>NZS9Eg2@ zX=7T0-4)p5!E2Xv9y}AkR)3cab3*_Au&{AAe3|1BzUIfYcAzYRZ%<%4n(ql{UN?1j zn)Ay87&Z=2pBD93Wd@@ufbpjsFcxtxl<=@|lGf0#2aNVU0SudeRDM%2weh$T7%qk|9)pkNTqVDSIe45;zc0Mf zeIhW`CmPIy46n-ryspfF*CP6N!BE`L4IR)t9J$*xjIl8o({jM5W)HGp*u09?4rqSa z@Ho<7FdmeCpOyngJ99RIVf;~F+dTqflEFA7fH5%#4CYcC42#W8pAC-_fT4L@H&&4z z_sOh{5s#10!Q(}YzlE3CopS8a{`e$djsRxb?hekjyU{sduHh_f!8Cn}>-DKdD{#fH z&N*nU3&#(}uee@cV=(Xu@~a=87W9M8<|YMWrUqbtK)qrx(I3r`4Zz0=M;o7LE}6bI zEz>0MhxHEfxm$9En``5fgy%HL4-r@V)JLO*}ODHwJnN z)qGB_In-6LHqQ*(bh-x~TWPx`K|G#=&g#hc-{x+$=bre^#sB7Gw2w`FRW$xjw@Yj< zS|`NXwHRL{0+tQf&#&qtt(8WoNl}ZofIf7>j&v`uB+dPZsM?ClO zJi_x7&)<2r@_feAT`>|eRc=ms#>dr$`byQockK~tL#O^oeJ+1iePH0v%my_FUK;Ud zw=?!>1g^`i0W1Tc=z0b_O;^BAAv z@yes(6Evjx1gt2ZPJvHx-p6C0cx?R#!;3gd{27n~uXqe3pQXHj@%V9rF*AU%cMcfw z7$~lz&jLg3gMXj{r5by)hBu7E`{tlc`P3Tvapl)LM|9NidI6Yr){oOG;+N>WWTzZ3 z2ZS-vo?_}3jn*jvt*@S%L*HXDP+Z^F8w}_Z%}?ck5s!h?AG$ne7?=OYV1zzn6)@61 z1An?vJ_Go_qCS_;h{r(c|DtmrPXd3_K0yq$ky0_x+mwod+9`EsOB`3gupuFH?R(tn(t}+mvf5*HNa=jbqM2`ryW@#5v}J z|5voK=EJQKhJLqRwuJs)e54(&% zVm*uYWDZM@iGy{c%p;Ue;5nH`K3*}@N}hLk^6}^8Jcsdoljka)Kk(>&%Xxmxvx4U-o`3TEhi4z|%|3|d7@qTZ=J8Y@Yw<(p zTgT&__Ion)+nmfs=D02IXmc{}!UN~C1~Y!-zP59Yhkjt@ji-MG{{EpZMPs)$Kgqzh zwVApfZdlkqEB~jpnVW&F^=`)7I)j}Ab`iXnOzCgk*#PtfZv7!`tFMZ#Pc7RT%-u(E zsJkPBgT)`ZPi<6)gT)`)!9o3^)`Km~3&shC&$kVqo&l|Gr|h0DZuc|oSl)CO?bv!p z%bTWX$BpGfKHg}sMJsyx9I)Lw0P*&Ea&FRDc<_Yk;eq~7ufY@#_+69-|I*pI*2gk; zp}huc=4Eg*9%vl{@ra8pjRzaSjWIwo9havx4>&6Y7ThBqPX&*S98EhtXCDye_N}=uVkm z=Eh|Az8}t~h!33DExT?;-=tHMsf)K?ePyP7TeBRMulbQZ$=BAhn9fGmv+SM2US@wc)1J*E z?1WyM1GRaCUC^sJP>qfHEA9>HJ_fqeImwXjXijnmdv|5aI&UD%WE zGib)9Dp+&apLoLgv~aC$^$gC>!=~z3Yx@>PY0Y~rI&kaByZhGaX_+=n{<;sy=EhC_ zy6?v3#!VJqGyBGt)t7t^_~O0B(Y4H(2^XFF9>qm-Pc7K|g*k9pbZ!P0vxTT`m@SxY z$oAYC@sJ07WE04IPd0Hu4xX?1R;EqsN86#_=AVpy-9dyNr1jA88=4g-neIp9=F>tw z)OYfA^7{$;*P-H3L^jHGR3V!Ix%hEL1~<$7=pLfs;8D)H1siv60XOAF?-KW(e~_bWZE{p*g@MimuP&^9Y)GsM*U!EtlcdqWz(!!QE|;X)W`kN?2|I> zT7MdqhxMoJw5xpi9^0kQS*Lc%$0>jH8~T6U1!eMRMs`o>d-T=nOh&7t_!1|WjDDX3 z-!;c&@YTG;K*d}U8QGXJE+efi(RkNvDc^X;`UctYFQYi1KV~;S$$>-Nqzn$`H==f9 zej{o()^6u$yYQqz?ZOkuXdHOBy$a~C*3V5qW^S(ncK0*R(T?h|JC}{`zncTU0Y_)> zvlt@k*DQue`?Z)|e|lWTxBVp6uGaB1U_YnjYWMI=yRsFn`_cW#wie9RvTQ|{G%pa< zrO(wS^hh_Zr_H#Y=8w<7Hou|!y+#8^wrTdU1K7Q&+l}AIRB|39e&Y`;7E*gPIohj^ z?0d6yZ7JHD5VmLYS-I?@2pQWtZoyY0v;uEnp|`?HO`KOdc#-51s!>`k3XU)cCK z^Dy*kHOTtn}~9^HRU1FD#=kysMDA*Sc`u8Zl<-807J|_wt+ch5g}o9`8@A zuk`za=Q#Sz(e#<+^qCXbd#-(~>I=QiyZ43Fl^On;&gi~m%RidVXdQiFguk1So7uDa zq_rnTYHG^k&^%~Ve>X6Gd4))?%WIbc_lCp6f~6^{k?s2`Wj^r0@^ukHZ$1o(t=5BgR7 zPIO-Q`<%%wxtWZe&rV?fIdD*J&~T8xXrEj(wpRb5ePI?`NBQ@m(KsaNs}9cre^F%3 z<$vQ}jDNcfcIX2J0$Vh>xCvblZRdt(k4MMb?R#bDk$=&?sQHFyok!zcwsS@!4@C>**%zZ`8(x$a(sWITtc~?@;1u9 zQ0iRfR?5>TU!qiQa2;iD$`>gALk{pc%67_UC?BVMit-nfPf&iJ@^Q-lpcI{(h|zYC?BBw z1?7E|Gb!(-JcDu}UD|`4F8*;~UO{YkU(uN8sZV zLR^5YIW(=8YU#%OKlNJAR2$0&*BzU&bsPIzUt{BbTl?tp!T3RN@K;ySr^5^JES?YE zi@Yznw$h0_XYpLg^FyBB^Q`CDhrI6yp2<8H@?6jJBcA(t{>1YNkBjp}LwNps)aTBw z%HV9Vb#$+*#n!gh)#gAJfwLQr19uDO=(#>iZ6M=a@FoGT?t@Re`NJbK?b*0XGP5|( z;!5SP(&L|yPxp#XY9q`W-<|{h?87qfEsl)N8Cx7_dq0exhoZ2N_0^KS{A$>q&HaBj zN1KbrX4<&s%i-A` z5TkK9ZAEQJ@ox?B*G6Jr&2!zn_4AjCDu(*X)o&Vn?8;)|S#olmQPs=uLR_o)V(o#K z+)oQ-?(A88I^TVVy12aaM`UodJZE&xuH`vx&2E%8P2fA0wmuH!kbpPp54HDJarL3J z7tdE$56!fvIT*$0+E-w9Xlv_~KO=T$UsiBVrSYhlHV>pt-4&%Xh}@hgw5e^I6V*L= zOW8X(k1@sk*qB1+J!lQ)g3noPL|zL=xE0g)Kk;_J=u+VVFRU)$L!*47-_a&|=<(xrPQM{JEc z+n;|Y^>KZw?wgUX&ADmKn$5|W|4{Bnb23qVO1B&4Abt>Q*ZkHsx!R4y!sgqfe#`uO zF2ALA%?CG!=XOVZ@PNHDG+CS-^;tHKkNd27Q9dHO$vN=O?~#FR{EF&?@ym3=Wc1?* z&NFl19NlwdW4Gv9CmXxjS|@}1vlz|?TUe}Len|YIh z7_=}4>@|@%*T!wpwNf^2v$ax&_tR0l(b;Xs2RiHGmeBtV%f+Y2em&!p*1Xt!fbmJ^ zQ)@mTs;`&Q=GRJs{d)UTwi2`KOZhv>K9rgx?@f6#Whv!llzUU2LD`dXEM<4fGRhLl z6!B{pN}cymMEMA1A?4kaohTLm=22cm=~13Q`B~TE#!AXhDfg!QgmOFa>@LbDDf`9Z z%1t`&n7KpkCwB7``0gaRNyP;V#WP~9?fCASi0K}{hw41MV)LP4Y`2CzO6r$3<3F|M zg52+dc`c>Ba=^>*pWX1E-RPS-(s8>um2JIh;6^V?oRm_ zzw7qxBLiET|0J|%uhbe!?X{1_#jBu4|3~9u&KnQbQQH1U;?*|jbZfex+tw3YAbKO` zR@gq@8r8D~K{_4Z=S$z~?#4ZeayrjFJUTP#pFABr={>*bOMK7o1@J&Ii}blIk#u{| z=Z5EpNBzy3ii~~PI81kIS#Hn9VH%q$x94<{91Q#T{lpY}H*Mz)3G$L7pe633XGhKn zvVKT={>B5VoZO-H!5Vw_rOx))6&dXPf!&R~d#Eq2J@iLDQS;e7RZst{|8>5q_DAX+ z<^8m-xXI23fcAKNP#5VxELPK5$~K>EvD!v(bMx7>kq0l+^VuOE{(Zt{Wp@{Z>-)pD zEswJhy>{o^fKN2us-_RoIX78n+>krG5gtU(xZ&(tcgD>I&Q({O^TFHUI9_~*H(KZ2 z0#56W+nx8(9E#1U=#FEX&$c-gtz$^fXNNSs15J+C;(sywUx6<^YyI|m=DS=RCR!iJ zj>Db-zuoxEULMPPSRAH#NsIGM2Xx-Bi^FJRBC>P2#SotjhEFBqP^cbW7*cH*xF*vmALgO zAx)bMws;Ip-;UCBO-8n7=4dlN(wErSCMsJS+vJk1+P$qy(3jjoslDGfQEI)_T*^Br zXHzPN(m<&`ulzUJNfnU*meHGZjcGct8wfFJC^xE9ax_A2W(ldFk=DCw+ zDbF8ybjS2V_=1b+<7UMAxB=n*n6312I@7NQecZOHqkYQMZ|LLpp^sxdR!ZZp68gAi z@c5WBoSps)KlI1##YBf*0Kd5XwMW*~+c-PA7t_|KSw2GJxbyO`KWMg?=Q-A?-HU9r zW~u?dE56Lt`55r*W8QljpP=!P=DYRXd*K<=(Y~fGvKQ9!iqSRVmRF3f5qCZSTT*UB z=j<&92dx`wfd^`by^ewZ2Zx!+N$Zbm(Gh+3Yz`cvF|f^LMb~;;3~Xz?f?RlqDUUt#t+e$*2WJO)4H_}ArIDTy`b8~ri8~S zIpEiI&iFeUXGh0HHqN$jk;%B-V8cJbo&ap<%-Tn1`|eF=Y^-iDy6enV;fKEzj3GJj zYsX&AA6pz8)dP!zO%DwAYvA|o;vir5ElTZ2Je%@K$}=e+qCA~aG4N@WoHtr_DrFVr z$&`aBqyDN&{%Uq6K5gqt+=eW9CzUAA&Y$o7R@m=i8;W0TU;YPQ&-Q6`&=x5R_ zhk;XiU%thU=ny=2`vLOFc~&vE|0d_1ucsa7kJLUmYHxtfM|w&1@<;sNM4Y4;!PXxu z-gN8wWh?wn=e{e})SaQXW3O)g9rcPGZT;OHoYC*r-^I>BnvJiHt-o6^A;0iT*WW$S zUf9U__)B!x##{IXI}d5rAnpPP&j?drtiIP`zh_VWtgOALxbdx+ypG0iX7#DeVg z+jeHw{q2RN)(^S&ZqEJQ&v{S!5RK=xXG7x{`@MW@0{?39oP6S3c(j=HRQFwu-$Opm z$E^wbBKl>w7n=M{`W&~0&byuC)~VRbS|??=>&%3Ep?zD3M;yPaa^Xiz^nZn4qRUsp z@A@ymPj>_E#=rkt{2EHW5`I%7_@&PqLypR+o4?MJ-CzspF*|ZSlDiCKW145!*o6nX za&r&Zo8}#M9K&z$5jG#8v1SGG-$uR8-b?E=v8eJhI`_qN`Ye2x;|qF{b)MIZAU67! zVAHnk9abBCg--+rH~#@%uf*`s9=r>>ruk|YCLoeL}9*WQY^KL+YI*$tu zyHpp!!JQ`t4l83gxO^FHE&VTWxCtE6@t6D^JXKuxdf2|k=1<_C-1=Cum8_CkJ2d*#lqlrU&x5O0Z+{`L*EzY~f+@ zxmfQ;^u*+IzVL|ZNe(<7{vtf!(bNzR$>@A|^marxwdm-SSlcGAugBXCb=34iaZN7$ zlw7V3<)U2dTLnCkHru)}o{Y6=^LInPq|M(%^}y^?_CTBa3TC7omj|XFD~+|~>;*n_ z&(W6A_F}GfBv;z;_R!8Jld@%K?QEw$ONQ{#+F6yWon)Xt?+Bj86Vesp2PYTB%Bqjh z>Ffv{`FpH==WEdAzr@?mp+h?NIPLc$_EjJ`;`1~=+KDG^U-bV``+8$z;0K&tq1Upf zY21zE@RV&)r}_Q{eBTP;8L>H?QQQKaON1x1YHm}xnYcf!Cr)(wW^s?nUt>IM`KN*# z^Ur?`@pAqdnP>TD&TXBq-$d-rcy^O;0k1vbatF9rfA8W2@YnpW?F+NM*>5ARF#jF$ z)s1bz_foZu92IZ9jg1iVIKC+lW%pNzA2*8znH$$AycjxhKKSfz;i1r@;%&PfvBc;5^81j3l~G3we)&(dBEZvf%z1Ny-?qhm+s>Xomk+70 zclnT-g!oJjB>LMh2htk*?HbNAxB^*C<+n3gyI7N_-|mz3+cDU!_6SHPZGV7tvi+TG zowR*@zq2;#0@|bxb+j>!e2w-B)SwSK<7T?khy1LzJ}LjHM~EMwoa>WXg!U#lF+8J z_oe`wIf|82$-Tgpbt}k9kjL z8{Gw+J7*o@|CV~?aqb4^M+?2wLf+ZHJ4tXm9o$X>FO#S7^?+kOE31O;Ht0T@@`VUL z#ltAQ1IW2Zf2yIk8kkkUOahbf;>t-8T8|28b-y*ALH<~JZaG`oWP;xdpGS=s^plcb z9lX$aQ1hB~=FF8V?Mx{A=gQmR#VmNCoR4&P3NWhBn;pETbL;QKCf3iY^tGl|vKRn< zza8YQ*xA3_-<3x!M4ice(&*31@}T)`X!a;|w!vqeiW{G%>=zjyADr*?{G>;}T_2zi zpX7Uf)j)4Sg~uA`gON4;=(JtL-7`4HfVSPa=QGh6^yP)>&RJ(_FJjyrvW=}eteWrIUIJ$EWkuf^&s}E=e-_0?6CxYKZ@T&&D zY2Y^({1#DScQ5H)g?GU(5C1S4{Lt+sw^6U0ZOxVJV{&a|w~HMGd#kR|c}|>nK)X@? zI5{uMdN8hv~;xwx)jgZ zoSx%r`1=9ak8Dr#yXL#K=Y+k>X`3F4-9>G#8aq-xOKYu^2i97f4SAmWjSsvH37`8D zvV6R7Fuzb`d`KSU-PL}b*8OKu+SY)l<~H7e zH?h0iR_ZRdkHi~nSG=*jU-b90k*#8>8!ebfWPNHyhvdDf1IWRatpE`X%Rsw~)8fJwvP| zS+Fdzudg*F%bA1e&Kyj4cvg%rFJum;3wt^^$Hm3+4(IwK{e1q9^1cq5*OE4?T*X7gH*)ZGJ@d9nDXEkME-XMc>!rFDmdCvj2AYj;^L{xAm}W zKQM4&Xa}={{v;o|C9la9iL7(hiG5a1DezJ!(w}IJjr!ar2`}}lTJnvXgG+^0a-7U;6r;a2F<+~It_yPdYyRgCgqY{7ouq3(T3^RRq^ z&l;dC9u627`q1-&JKW5NYHasDI?knJFSBq0UB7Z=IcIH-LmrB0M^e{7TNTjN|CylQ z#iQN>-xj}`{M1guSa>4Wih)Z_rrbOpkBTF;ZD4|zI@%Z9`K*)d$|7{BJySi(ws<@3>dvy&@ZiB{yU8Pb?p4atuR7wPtKb0_K@;Cx zx$;%?bv62muS`9KzWxon)IOpV-{}n8-tbdn{?62Cee^|9_)SOnC&u6pAXcvfejTzk z`PHDK@@E%8R}He&cvk0dY2E&N(A0%`%g>z3x{=L^AdcNc`B(h^M#@!`Z&MO`m9`nO(%1?pw8s!_5uTp9c&tEAQQ@%oZGv&*a-=nlRL3Swr{~$4G zf*en6zPHNq4<4~iHTtHz3w4M4+&pj9jeLHZXKuvlDzifzLPaxmjZrei!ZQ<|D&pRim&&{2)F_kzg3QDCjDq5{b)V9 z_eS_#3*Y7Oo#OGQ27Tt{#T^8RDI@8qug zrXqYAJ)S-UJ~6k>o!vt@=hgZ8mBfN8KQ9dBkGv)SvzZs4kU!9u&v_&Ku7&SR{$Jk% zpVl3B9th_eFZ*umeA+x8|6@6`CJ%n% zzaGKI#LwEk;s82oKIURoi?3K!VAf1 z3UZoJ>M>gq)U8{%jBOx&_%tho3;NojsO&AJR8Y zl|Pa_dVGFbI?CrJbopIA_XCeAKD&Jz^5wj1V?yy&{f=x{e9bkEUIa|VK-M>INYH1% z*LMoUSME29==99}qdHywf2Gs@9(dIkUe&^*f54-2DgQ`m_Rl!StxJ+GFJ?W}KFD%$yx1WPv>Gq8G=C>|g7TB}&y8)a3aj4(oZ4J73rTE4=9NiV> zV!7&I96{U=tc!`{5VS8R%B!`T=C`f|emDHZ4T(SxZ~p>4Jez!!;%4W+YxeUuki_-uN3*dBQM_>nuyy1-Md{Vbwf5$a*qxRd$4 z=>2+U@{Svi5+~J>L#vDB&;~r&@u<`THKiF7)xIY-%p5CdxwWxeU#}Mp$=r0>uhcbqIkMAc} z9pw*WEdEe_a6jU3#^ja#X17+BdZ|m;zqYLTKz~FZ`r16k@5v1vBlqXtR;{gU%kvK^ z_fn(!&21eu&`Zta-Ny4O{Lw>*=@a#>y^zzGN>69KELgv=*dKc^=Q;Gdsde0FFEwI3 zaTED~zQCJsgmT~B0x#L!FHbU#n?&qRA2a9E$*=sfr}yDx_SDVkJFTH}z&FJDh<}>Cs4Dd%L$vBKXVTj(vm)_pGc*{c_PcC2EF}M5sj^4@aMe0F6deGWs9hX(E?dUOb3-vuV zPsX=Dyl#H$)Gf<8N`Li2N8^^w)R%6q#U>}AUvo$Pu(g1`_x$dwI|>|51)CFtGC1ub zRwWm}yb!s7naTz1j?o9VP?wwr=R>>L9jg?w7%JEx0n~ zUXU4c?~d#CZnw8S{KB%1?GLT(*gju8Ds}!zyjXnu{MN-YmUk3@t8}Pk|7=`82flDM zer#YowRa9&S0SHO$mfpkYdcO~t~PpYuI1ik@nhV)d97D>Z|W$k5BSl{*wy6!bKp0C zzsB(ujk5jS@xKpQUNCZL$5TsR=y>Pit-vnaJej*;gl`4DGf5j0m(OeMKW}NrdB`*` zxuK(U$gS_(C=+P*W?qA$0rV@Z!X8T zzY%`d!gqOmCp*~DKZv16Qir~#W9Ze1e!+c35gT|0TRm>;LmfpUU+9=VL%Lh!_(-L_vg0`K~C>>UDq*Wo@80HxeEAGf!_-q z@3k5|%pF(673|{8 zRrmtOgDtnU-Zt`A9bK2d&~Y*TQZafhx?{NioAcMxcJwSV&0+JCk@aoxU^upParbo{ z!>4R@a4OKLDd4~Ch54=Xk@K?m*LKWbO8fNFqU|KcKR;YHuk|u)poeTA(PMK1;{$8^ zpR|1kd|QQlANfS*UGHuKai19ff5>M=ZmfDB<WT8D#bLd|z_vLc;%!g}V)Unw0Mq-_J`R&cnQBR)1=ESl4 z6mxYeF0SqCcjY^yPk2cG?f*A-eqJW}wO(K{7;8&_=_}TF7{aj(` zS+sR`sJ}Koa4`>X&xKzezQXA;xF{d+#^_)y<#Gbl71Pcz#=Ivm=DndC<5KjnlDhXV znb$gE>9UUbYoF}s);;hE&G>|o1)P2G;@sBDwk+#-asIlFUzKcgexU{X7*)(2b=}$5 zk1tf8P(dBIq&A>~=eoON@x^?WJ?PAT^;fbR`~OG0^FbnePTlQo!w=~_@l(9i`XilN z_tIg(x--p{e+^jh?wlK4XwMarBI$5pJ8h$bk@a% zh2-?YH5I+lW$hJI?xGAmc5+89+$(a|x4836x*|Nc9${-ZGX6+8?`XbT_g)<@7|bI^ z$4hU08u+6(DdTycFO=)}|2J~ogzweZ`itbc|9>mjIe}ci`6Y5)0>7P)$|2XS{~yYg z^N;R&oBP8|t}B^ObnVuCb-7*|%5_FmuHpFbXvJyhW`FeC~uJGdK-4y6+3k~Jign4opr-bFTqaNVyDZnQ}yc=*zi{M>)2@z?9}>n z;HBhW>+!Em{Pqgux|~PzGOG(SeTe!LjR&kx(f`)Z<)j0>{C`PD6*OG`73mN!)Ia?+ zBKwrBp@_&n*mrqldf%ni18QADeE;RPe+M>gd@}g6BJlUip>H$R}=OTz@QhvEQFF5DxH< z1Fr{(CyI$DIPIoPLM(5(_HokMge_$2sbYdimwQMBncV z)=S6+H_$gH>1Ue2;{;+6^)H+oN?+xr_WMm|7l+hfCm!!I$D=+hbuRUX(Ld`q#=|3? zFD$js;@>6ka}E3)4u6L6m_D46m(9yT@cV7>JdhmJ<9)oBnR{PZPF}2yGo|wrof~K5 zgDW`N*`C60CU^wCsW4b8#~4cdow&NdoxgK3JicP<=PRyQc%Xk8Jl+nTrO6E)Q{izh zc)x1mf&S?spPB1iu%2`1m3vRFE_k`D{?67iem@?1`|w+x+t`=i4FFH>B28(H2Irup z27qrqG8#}yNgiroAI7BQpazjIEg=7NU^#2L$~jMHAoFblz0{B)+=noPyjCS~NTrt= zMts$UeADpJ>=h^9RLR^y2|1?`N8roIH;qg(=bQ9W2TdXdnM4ljIPHh#tkEg#jhN!4 z#+<@f>=Z9Gb}DBkOeJr17UyN2<)y}-1K#I=cMW*gfZsImn?^aEaysP<${CcGQ(g|< zGr@Z%cwYnF*MK*bh)hG5Z(yu@I?@)$35DWBIh4E9GJ@1?Hb^A&kR{84>b1H%wksiJB1t^cMy`JlRFiLdhju0@wB=4-tkJU`V-P2>GJ^+WxEKI{MZyx1G&54yuk zUC8H+^~3zZKMCT_^R|Xc|DXrSYx21< zZ-hU3nU}hX&+BK6@W=kzOI^d~KKUd4@vFR4ZB623&zsv?4nF<;B>M=F{T<|eJ0bI* zBvS_#A?Kg7kGBNbHWMfJM5c?eyHaHNAZt1LAj4(J)TsT@y;@H_k~pC@_;`ThUorRw-xSAUQ{pamUctn?0Rg|z;8$nRM13=YHo#2ylG zsBB?R88{3&JLG%fV1MMdL%z>C*dO&|$oITM{4vjld}qDyxV2vDcfj2MT&+Fn|0J~G zy9PcBZN$X~u7x)I%Y<6;%ivO!IMg5VvdR2Vf7oAXn|{vLOdRww@j?PU{VVZ(0pFb; z@-%OhKlZhdr?W@-<6mc7N(|jb46Qq@2E2wnLC>Jqu_NdyzbKTcH`*WE#+WSWy=?2` zD%+T6qm5ygn2wG1N4{-3HpU;d$#iUtKjwYYv9bQR4~@@b{Rul*^V{ORoL3*5Nj&gv z=%xJwH$gA$4|yM1!p~tJB1>dixg(jXM5Yzr1vmU$cl?~rAowA6u&pA`ok8$pK3}mg z;p+^7120OZ{@Mv20}SUQ`zQR~z+s*Bf}IOJzYJJ+^SMv8=l4NJoc!C5_WPnI72lP9 zk%vQ9mBD8d)A6}zAU*?|?mC2gJ@0g{G+pK#goDY;tIg5q)~U(Vt~`9%_z-qJ zu#fOkj|*!y&>%Saem$dA#87)pT88?@Uw6QGDqK-?_5ySoaYZYz)RiA z=gEnDe^>=`3FxNIWY8LOtyj36cPp=CT@deFF)QC6HNnkkFIe?vzCUIRYt^c}mv#Qh zUFeU~fklJ;yFF~~T5N*fcr~5;a%{)><<*`1{wYs;sTV9RFYpKbhqX<7eyYB}KQNI9 zaB3^?hZH0NoN5dGVa17*n@9d ziK^7(B6PE$Ds@5${aA5T>cpP(U)`!wCzs+6_Nq!v?L&Xtt15NI{`9kbt5Ro`!`B0< zQpth%_KK=h^$>V4s46w7l04}5f&G1Sz8pJj2=%O`*dI1G)UApxe&sEp{Wo{X zzkgSM)FGk$FYM}%85HVP{}O-P(9jkZmG~2i@#*M#MR_;BqMMhhMus|HM{%#~SL(aD zxOc!_=7+lbgL^4n&tBJVahb;3)~AxYnp%#|YJ8@(zt%t3us>wyuA)ZPb*KC1-F}C@ z<@((w`yH{m_FuXD8~&N!yBwVQ@>}T3le9U_wVS`Bp14%&G?i1)T=s#~r}GEk@)uxg z4RgQ9dJ*jD*v~z=Wcgs)iFO+ zLky}rw6rd}FJqnwi}v#=QwtdjZ0;X5Eq6e3v$hXp=nnf}w5u`IM<8wAqC=yU=DQ+SI!GXq!hz+mycd zU~YQ0=l_^CHFu};OVs~5ys(KjWIhi*YOV8?eAYTEeJ6g|en;)aZvoc|aP3c@Df_st zF362)|79Jx)-m53xetjsvHjWexQF|Y(241*v+hHp|2*Ie??W;=IvagSbRfdhZ-w+3 zUDD+v3{}`pQf?zdGI}fY&0)v{%AP(UjbZ=uLL)`f8j=(-&&Jd@2|TL zWqY!_T43!5t-2%RZD@7-sG&nLG++EI@*CRR(;o(3ocuyvt7bk^`)9YHYdTNN?crz` z=wFh^?BTeyfLwMl{Vsi@_SVX-7q@EOg*Xa&wB}!HU=!eCcZ|6lcZh@Ok@6t!J@ArW zP0~j^4qg+{tLmO1UhRPmXm6?JkKX>;Y&UOIhz&edGsw+p-H#1)#s+S}26Wcn+u$=7 zJJ34dxx^W>i80*Sf5`qi;Rzmj58!*jH_?s!|LC1}=`87Cy^_rDWpJ{*2tIC!?BNF1 zhAFRElgRiE2Mapgy=ey|Q-1=Mt3w7l3#_d#Hdlttt?~RvM(-^9?BgQ0xAarW`;e{c zU#o-lJ=V`CM$mq5<%I_Fm`%@fju;i|} zw8SYv-&>vt&U`l5W6*c!yYbULLRO!f{*mcex=z&_`hr-ivNGx*1plUkiE^v zMBCbnce45!bSkRfb>cJfEPzi=zriUnDWl(lu2FZ5cMO zJZ1xR^rvnOA2y(~PU(jhG%l=kdvsQzYg#L`qX2l=z*c7iJ)8}^^>Q%BCL7dRaE%`( z2v2ZR|F?;{3UthT%Ax4P{~}NA4~_EiztMvk5j{xr2^!lvd+B(kn7Awtp2#nj2@iN8 z+%#uY0nK|`9k^|#uC_RXTUT&9jW#|2H-m3@4P`z-vVN1;M!a-B2Y5!;r=xb3DK3!B ztL=Us|RtH49N;EvohPu$sm(7%><9G~EcJ1+(QV0b(QUEOIn zy&u-vMK?vS@n;ijH{x;PZv_|mOAq9qn$g>p)V%{fS~ncTKb>9tLvG#0KExE*WN?11 z))c$nBfkXrFXFf4b5mXUyji>kw*0%TNp-dq^6RLV>C4piz+f+k(eoqdarOMJ1-x!I z94mRYD1U6SNGd#*=@HN%w%@` zA0jx(KWcnp_&&^cpKdR5XT@gO0XSs&FU{qqc@vzWBEIzG*^fs$oySwc6P4#Z;?gdcTGGxds~^%J!mk{eX9$ zf-d$TWaSN{&!&sT+)3qhL;4-^<#J%M-!^qYn$|++2SulBw~R-=P-`>HACBPjg*+GV zjOLlZa}>|9Jg4xS&g1&s70?6zM$hTscs{aF%sfpk_5pta?suqneh#@M4kl;K|Mju=eq-(PU6gN~t$lc>@kPG$062L`_9`R0 z7W!=C@u!D`Je!dXXnFWRdR_b+c8lJPIvqt}9e`8##$ zBRi+h7!LZ^&d8c^jXR4-b~K3RARg&aQ6lgoW*!S8~JbO;#_IWey%V%rfK@g`DIQwKDfU`^U&j<7W7@os;j^;Uz=R}@w@O+Dh z@qg(>JeTq~-9e8UcrF)x(j{n6PO=T%GyYx#zPIvDT5p%;*4qNpTkO3d^82&-z4oDK z?VhtcbZ-pbYY$4)zwcNV+Feuj?~fNBh1zN%tK0y6wV7i=@VDj5c&dOUNoB2FkbF~3EOyJSIyAIYh zVN6FXf2Z-5-@EZ%WNh<8Yn$&X`2B6Xt1;1i_$Al3gzZ}2vV{4O$&8&(0IvG>>lTH% zO79_)i&>KtW< zJMlp+vCDLDQBL+wK7TB`3UL|Fd%@jR-V*ge+Uu$D<7)aM`7nc-^mZRV4uGG|MnhN` z8}*j#0+#k!3YN#`_*?~XQdV9tI)0FBtY6hR4Zng<+u+kjQj!yc!B~|Fg*qL+zvCcsZM;8*chc`8*KO1rT-SG^S0=xAV=&%| zylZ{u8`NpeWg2rTd!lm(bUqg9NYj6jV{rIjKeC6XBW)^PPVhV)sdKR~w*03^T|4j8 zV#`LyBQZKw+Pe$zp}gA+5AEHDV(;G1yIM#5ChuroPq=Bkul!(rm_ykFecDG`j~vSr znOvBogLmUOo*&VMWbMAk)~b-ne8UNOxg0=5mN)Xg=1kIKCEl^Vl4Xp-nK@u$z41M~)LV>^2d!aE%P(fN zYE26<+lr0J&i?)A`od1EOCitOM2`1f^1Irv9PQik))tn^W{s{2XgJg8nwA+8eZ%UY z!<{b-4aWZyjQ^7Y`5zm3*U2>^tE9af>i7}7E8qST-eKWNT2`5u*IS|(^^MTxR)eej zkG0*D!(TaChGh2({iE$h@Y&z$r)9t2+v+b5>i3S&6pvTC@~-^wN65srjc#lHvVh-6 zFV@4;v@hnnj4vh*ej(Gxxp)Wav|R?mkw1g?DZKOZ3Ta+xh)bUApXraNHl_^`yb%fBC(ZNc(>VX5oiLjmHr8 zbfVPR8F`dPPq-{0{;Cf^_b-51Rt{R~{%`E9QGqmS9Y+7IO5Sw0V)SDa?_JsZoz&J+*P|2%xF>D^^k2VX7s_#LZ5&hqU# zo7?oF4tyR0ANDY(^V7S{*R%gJK2AK{`6_H2K%tr_aExcr`*Y%qvPBV@g#Qe9;<-LMfX*+akUrjG)S~Y85|H?cs^$2lgZ{o_U3R%b5g*9*8IiH7E z=~`l?Hu{gSzgbYhIRNT!#&%}CCH+h}{mgjgO*iEC&FVkC$9n6iyq*~m`VsK8zTaqU z84>!kP_}=vcj<5A`LRdrU3_13OumBpxV#@SIKYj^2KVxQuc&?yKN&thR~s>Z*_U_I z{Sfdn{ZQt2V`4NLyjy_x^0p#(H{y$w=VNbcDThVujyQUW>|HuC342@dq3*{mLWV`neck=IwpPCwebqXK0(4Y+?|ZOrUh7wykf;2Gcxt$v2X0Hi zB|RVW75v$0{Pt)3R{rs;_|;?h-Td%(@p<{Ck7Iri9czOpX+LPW6?kRi-9t>y_#^g~ zrmBd0E2&egc3~`U1;1P_RO?}st2&*hj^`4d@9|8J=tKgW-4{3-!#%|3FPkG;#U4PX z^TZgnz%d>dL+?y}zo)UM#ng&96;sE@o-Y4P|G%>`w4wdOSc^P}wedk^XhVFbwzu%E z(Lwy7{y8%Cd@1MHlX;`q*mJ?U=0X4U*mEX4xB^;Tu1GNfWA`!mGs_jt(7s9P zbyt{T@iyWfqv5d_4Sz6tE0HVjRsq-Eec0Z`4@7yr-0Eir^-Bx}?Zsp9MZCLtYcOxL ziSj!+^!SV7ihuGOTSpMr{|A{T(!9gt%XBu%{&4CaE=XhY(56Ofa_l-{)PRDdv8we z_s-|Ncz>|a5^RDrGu&l4VZ#+2$Xm)%@URtv|fc|nieBVS2lfDP5dDK_B$LY=Y zGwW*O`2BA#{P0&6AIKiRGJX|fzY>1G{{sBJ@&5;Y&Evlkem{!fm!2;{ju~8Y4>XeZ+fQPzE)@L5=WI< zowXYopLe6()4!zMO)+{s;EB$;*tVmaw&aID85Z(^|7|VJ4y)sP<#Zb&ZEqd6vurGF zZ!)>h4%hX->o$Cs@tg6()aZQo24HT(k7nH&0}ouDAk2;FJiK3$`%|1!ALjm&%ze7K z9q?2Bs)h08THyy?TBoy%x&)8;=cmB0JNW4?gDn62C31PxXr7jl%WteMBA4Y>N83&x zBD}euwzqBhVtpt^E_t+}KH_Hv3;1rm7k$m0RtNmu^8dhp75LHhUh-E_Js%pA`z(V; z8!pD7jqh6>Z8+UW-;94((Z-)?BfZYw29FN1I@)x$5}|1b zZC*~B>2Z$nEoK)N(N9P1VqakDjvvjTNT=`I@%ddkZ}~p-D!pC+A7ybh{o4}Gq;Tg= z%1$<5CpJDeJ4x|--IJFud_z0YTK)?9E|bBhLz({r-`BsQoopQ%^PBKslhwg1=QrWi zTUH0JoSp2QY5R5B9z@&DZ&nBSE!S@oYlt`T{{3psYDxR`7(a*NXH1Sy)8-cFoP+$* zYp{@MbRI=9-5X*4eRU$U&erjXcbzOEHoX#DKiOQ=$T@w^pJ?2^IzMvXRLm}J(Ry)c z(AcpS+7}uhu4j%EStP*CWbiX!w*y;yc+&L6;Kl9v_6R&1v)p2JwCU_QqL;I1<2l+$ z+jErP;F*ix`^EVUPHDfMW4%)+Vtb8ywZ=&~IIX{sUobjr!6C0cyY3v-q1Vy(&Qx7! zlT)Ednrd~=h*x;$-YTwdvy})jG^nb3zk9itdcKDBX9K;|YU&*A%}4obr-igv9PPh2-Ooe7~jMOD(Dm?x2|lZ=S{`FN8PG)H8n#Z`M>g{;rtZobNw3 z$MJW?yoyf#3pcY*v4(pR*z2sb;bAV`fJ$k;LcGn&3pKdf-3;k#BHd;IT&)?(tykc2%XMb&zm+HaZn|;{p zthMfc#cp=c{;Q4TY-sL@&^<6_YCpg7ZevuZx?H_I2K<)3vI@eC>yK@^2gC&K!Ml zJU$aYs(tYv<9EiElh-XrxA4OgkZC)8!2sk@fGrP#zs|Pm$M}QcSuy@_D131`ofzW} z1K$%pZ2SoJvC#Iq2KI#~p=bYO>WYE1F)7rsg+2Vy$8jboxUTBo!yhxn+1iTr3%mPc zPvNd7>UZ|$=o~b4xHwto*2R%NqinW z-DFha51!#{a79sbSAWRmp}Z=(`a@@87o*9AK!4>mp}g4FI^ueV|B7|Z#s0{8_7N9> z`y8{6Vt@3_Ug}KvJq}%|;k)t$oP|J}gBsbZO8wxwz0^e|@a7)&%Juj9&;$RE4Z=wa#rlqT^)w^y_A4_OI39JF?D> zsTu3`(B4P>Kxe*P&`J0TF6V=iH&861xJ2U#k2t*_bEO{Zin~&$JLoQfFSnB)J&E(> zf5>OeLA237?gNgR+i2jk!vSCH#?q|Gm;bVR+q*$S6#w4*?hSrdPM`l|9x)Q_xZke{ zey=l%FXZ`&*>J#1TZ2n$&&pRKd%%s$q1Q|};wX0>`1*C78YnBGcJFOeCi@|dtG9*UeY=!aueSGJ5)iB{98*tQ+^>! zE>Zi_oeW2F)?`b}2G;Pu@M(uW?bGiBuZ4>{JMIf)d@6M4-a>cR1NN53@6MGy!qaL# zPvgi&fqXjb_gxN5D-LsM>VJz?vzjuSX1 zw`(#u2i0S5;s2rSO~9+HuKoY_oXlZV5(9R~Ny0oiFk3Ar30eiU-dk$5^e5AQhy z_5PpdpXYg>o%0TRueJ8tYp=ET+G`W1Rxq6B?~(^?1bNWzAP?F@Socy|>yl(o??5AMPdVf>ZnBGj!y(7WtC(oP zSeK4Fne*q~;LM7auxCT)Su4-NJQJ@D%I`fFe#7u1MVZuD&82Z;`XSrdvIJb#&_{9P zmgby2T%1WT^$~Ko=Tq-2U0KeQ`P^G0*$FO^sRuHcU%2-c=N6Q6FDR?X(PU)kNBAR^ z!>|ZH@R7wsT*}0g$nn9*@xkz{ayf8E&Vvvyo!HZvm7rzEC4uThtg$8wZKy&fp7@qHk z7stYj%i+b1@S^hSixPw+v0Xy!omUI2J&YRdbp1$l0dz zmRK*Tdm~(QLVV#}`ONKeIcEwTbO`-gK!0|^Pa*m;INr8#Pw{8-!1Y1+s2cnh!DCT) z%*X(KD>vwNdsYa)(S4_g?=<$QZ?@q*elLO!HNZTd`ow=F{C^2J2XW|v-);hj9h^h- z9ymxp#@-;0PNDl6ef&5)R{+ob5k2)4bkr8~Z=Dk--h_tu@KWIq*1Zjw&AbbJj#9Vg zUG|vNP1{!JYVNJ4Zil)%vY`d^>3}}UyP4tf{U_GFj{cRtQyojwd7>xg%d29nd>j4W zp2yV%-0%Q0nX{n-GWq>?J^#-^O3s%o+E4iuZ;4996fBWDal=hhOe}9$r4|NYNjuH#x7R&F?4F7aL>h>o`e$->1Ho|4V&7d@rA* zzIoKQF;HLny2j}~J?!`l!;_2qI9oKQNUw>o$327p?Yy-<|M9YnBgfEZTNzh>=H8H6#$X@sY?Dsp$8_k>37>|jOaIsKe-M{ieoI%Vh#t>3 z`yg#eUy!|ZK0F$YDnIjW&5Gqfj;7#|uAfBdFYOupGG%go)1UWQZ*M$I4mzW^F~@gg z6f_RJ{dk^ca|U-{ENFe+=mW9goX=3uc<{I0{6d>a820}5xIP=AueGK{PHu8Z`sYdz zE6_nbOF3I&t7I6mc|P>KfcHi$U$OI{i#PY&fn3f(E=vdKpl`<^moMb`UgYv92qPT&RwYIcX~fa_gzUoON|4~kD?9sM1iHf;el=b9Aa~MzyrInL*&xO+8xAQ=`5@Ph1eoB_(tHl zm5dqf(Yyy4|4Cyf9oKd5cz)mpN}cCz<$>CkT$DdmJYe+4mebwn75E3Xd%UDI@gP6d zvvzzB^%#Gu&$sY%@>~$ZkK~22cn^8{IR6>>M86oEYdzWuXOqu@xhI(iyNoyEO(;FqnObI<`jG>0HRz5K*{FFJJr>vhP2eT?Bz`SwksXp z;O4(yMm;g!mp-O*V8>Bsy1jiaa2}yg&Y?VEy^lW8T&28}>w%>c`4Hq6$tKnRHhO3l z^FjfX3Gao}{PC#ZphRl?{U4@KW1zsOMx?<;+m79Ae zUHo#-y_-CFT7!;wAGlk28say)ae?fqJCWzP$n%Gh=Q_tj=Ql{dy^D4lk>~p!-PF^# za!1eTi}&|T_htPu+F8EoxUAQl8|D4coPY6&^4K3&+x&4Q`(1iys24f=TgDW8mEs$y zqMv2I&!OBXIaqsqU0r;xan=AI8W?~{bAotN=etTi8rcTVKV0YKHXh|akKmVsuNCV< z?)_+Ua4cLxpBgvLp>B;2oAzD__P7sQQ07W*R57kfn9tsWhG#%S#V19eV}$w3>SVhZ zGty^vF=p&|8DjDA$B$%QALwc1hR?TxQF2!F^Yx9XilHqo~vv<@}@Q7r>^x2>$8f(G+2=ZVT^@;~~G4GcGFS=4)b)>&rM*R;W+cP5_Jws_Hf=o}( zkAJfduNkMz-I~wgQ|+a0mJbvjGx^8LfUz1F=K*64?~DX415d3t?loq=E!ep(L?^cA zc}C%b>GDr-2G;pJduKdnm+jcpGyIiTIKK=(13E$+nVha4Z$&>Y`5ZjX*hPOSn8~+& z`mfyCJ$_@)tR1iPjCtjNIZxnv#_v(&^Hk*X{mAE|?hy9{<5hg8^9?$o;pMz{g!7?_TD-Hl;JXMmU2K4}r4*SlN3sW>PhgImy0pKuWhs53 z@i4rvm!neX<0z7vs{>ue-!*k)|bNhMO|0ueR`aS|Ly*C&bp2UV7Li^L%V=H=>0DlR; zP0TUAqcZ;2JU`E#+v&@G<5v?7=&m)$*^$V>V&E*{|AA@ey|nOs^!FdHwmJ7VPStw$ zIClj(+WPbCEx$h%=cV}~xDKH+k-x}Tv-*i-{Q=G%vGTK!?`3CWV;?>GkD0F(V^_Zj z55LL12)1LqUww}Q&rQ#8%z3HU7i|^MGVI#ac6QN@k>`Oq(!ASIdcwQtp(niidCsE{ zOmTFWTQXB~|A&B4bKAdc``F8ENB`(do0;oRCDNfYF5; z`2MSm$DeIRCLy1H#&pbUM`ZMhEcE2S@9>c@&)bB2VSJd8qF_J9AcU>KSq4%RM7jc2ZpDtC17olc zeEFfX?Y=sG#m;*;TW>(jI|rvXoHYLi`*&7vcp=xSfXC37d2KlJ+U?A1!#B})%)KSR zV$Sm0#Ch9eH}#Ccj(L>%L~wTS412I(#3p=Kn>O~`G4_?75!fY~n_Ho=@PCAPF0aMI zyEhnv@RjujA9Q~aT3fo`!2kPcS9DKrS3Wc0V%mNA_MLZSA73}qoGCjho#tb}Q@Awv zG~WcCE5LIccy4<69Yb^BV$KuHK7Q^{Z@5@`Yc7d#X-v%nC!+_UJ8GS~lksU}O-sbZ zFWy#-52*TYK^-W5xf+_9uU8`;XCnSLccCt6y#VM$eA-ck%tTm4JI>hVg~9Rdn=s zOD{BQ@NG+?1Kgn(Y!k=Rw!CwoJN63Z z4&L8Ueu_K(Dkt$6|KGay6n6qNBCe)wOZZfG67(aMrtQe$Q(f&*C8nxvTE-xETFi$b zHpnf-e_{HiV~|^h4+EcL+xl36J8YhbpJ{uyrNA8l%~>048&y*1j=I*wIJMnSQ)uFf zSeI?v)LH0`!|y>HUE6!*r@3d$H?cBptDZj1ojBCQy0pEqxX7J6(!}$$4bB+sUO9#H zHmbkqMrt`zp&-8Vuh3C8Mny-+?Sc=qc5d|c`k`(mcv!uC26$Wnj!|GL9qZF9HrO3W zJr~t;&LZE+e`fa2w2pMggq+0CEGIEM&q<8z#~gd6Pq)^=?!*SCU3+?y>vpAM&AQ!^ zY~nNWId7o9lbATsr(4+&ckx=*r+nD5;L-K<Hcf*x0C69Gv#-Nd%6GH@@EG+qx1~c^2}LD_5NI8$C%~{o5S9;L7nzlC3V?)q{GTq z+{;)tu@UGnE!4GN^`*tPs6F|3(`hi!A4_TSBe7=hF|!xTL9fi{$2vT54_Y4`O6<$k z)U}niB(n^B(9pv7Ip9lg!@`SPNIbOX*y{bj9nXp;YSFVZGQ4`_w~d0wnxUTEel2Z; zc*l%o&Jecsm;YyWfo(rd`#P)QtspG)pMCde{}W*mp4yLQ@b&FRVB2FZzg`>5H`%BQcoYa#pIA5WO9=YN#$F4Y4cnH+)xDGx)_HRyYy&Ar)PUYJf`_jncBpsUHB`CHM3ckS;hp-Csdr-Q3_ z$k4t1?Bx4h|B>yjrKqp{I_fQb{omqS(e;8)pl^kxFa0dIEPdmazTiI`+8UcK;?Y)q zG-8LEa-nUWPumEzJ+l|ue(pdjZHxGA_F2PAo5620>!7be+aOIZhHhWw5=}4R(r@BD zna4RVnrkc<@~{Bki`k!CL0Qga%P9XVFP!o;p2u}A*O#~^b4}x#$~DFR&HP~Mm_T_p zmu&qrxs<1GJQwy!!5@KDeOQhz=#8(eB+V~7(kPm&}5!kE$8M+6wkfJd@v4R(Zh_d(*dVu8BIUube; zZVk!_EWz)e;CtnMk3qj`pMFOF1(rJ*i=tJO zaxAj#8v5uh(T@L<{0LuBpSuRyUCVR%E0Xg8bE2i~>RxCYgkuwQNQYw$ZN>e$pd1+F z)7xX)urN3o$u@pM8_Io}(!T*1ZtDdGBma-<%ZaDnIgy{>qsNCMXM}r0Fa2X^Q6Eae zan)yN=h^?S?cm$DG_ClQcBEebTU$x&%Wh;W^XPJKzi`}1&3k{-zo*&_Cw#Z0_wQn9 z-_7P+;Z+sI?!En^zApP^cMH0i(Sz4caGyX&^Yq|}?o$ITY!lrEs|UACbl0H=8(lmy z$=!fnOU!%QyYWfxLlIw}BX<4~^jh|lwB1lX*?knfb~*nqC$CBk{7Zat+j91M7~Qzx zT-Vc`&-LsN_KFa9+orf%V;9w*qrEF_+au?=#G#UNVVcVxl(to+(_GVT{Z!ZJ`6W|b z(_X_A*XY?LQ(RBypX}zI5#QPGEpP8gA$tW1(VZv3r-kUIliJ?Ya#egF5t`>aGye)dJ%Z*%(JNxe2CyWZ79Aa@GKpPuLc}T>A&z;O4cjG=+PsI zozF!-9yyf~y*C3LcVv|R(Qh+n@c)JUe<9_?lowN8MtK=+<1Z?lO-U?3;T4ouQC>wE zql~c@KaVq3uI2Z9e$S`GUM#%DN#rkJ&%yWk{Ud(=h%!zYcM^S;@c*6sf2Wh^zuZam zt7E^#Dkm}Me%5b)$+LQ%)r0GU;QAoAJ`Ao8gXc!@+z6gc;Mv4^GLN$kH`eEg`tw}I znP(eu9^1Oi6Loe+f6!ODhLs~%49Hn!{JGVh?+;zoj|X1ZESn}uox9QfWizD51Yh<) z$IrL7^`+NUg^jd}7&)zLbWsob7cmN+PtJ}>!E>HpS8yFtvfk9U&V#LzIsIztdk34w z&;M5UZv6z4|LtMy?p*9{#YflYVlVb}OpXfWfqNj5LyivC$;&v~k@FnqqX(@(FW>wj zb0~R*jv&iB!%-7=dg>`B(qkcQDu(cP!~@ocokRk^;8WScp)loq?Y=$^`IK+?dR!O& z1jUy}a^-KxXnfwkA9fT=X>|1Wo%%9&M8tf0)~8l?flJC-{9$x! z#zc@_T1UJV*!M!OWUhd!i6`uJcd#{c`U#)hl=zK5|243V=cPZah)EBx@Vh|J?JPF#H`N@Y@FeuhiLqI6qxR=|HYj^ER|_BUPY3t}*SfFg`$@pIg}BuE zFM6=`2R7S}ozz_d?IfEjq1`J#X6dz&f2i=I@QM)JduEw5xhS$-qKH=Mjqk#arV0>o`|nD0nRC>r4@^ zYYoWmhwyCJEaMl@+OPQd6fWieFXd8ha@m=(IlsasTlP|}8gLWu?WW)C*?#I<#V#oa zgyCy{zA9r4RpUoKzI?`y@$pri>QW|ir@bEQvBT#w&kLUz^7~u7V}3&;{r(2Ot^Cj69ogNP*h$)x zHlN=S$^5|HGU!pHbG(M}JV+1C>!L?W&b*S-PMR~Xitnwi6@?bN{`>g6o{raeA1^Bp zHP3hYW2XcdS)VpOp@uA@yRD(Py!cqd_KIjyxvyA!E>@6Z*CwU%T=!?CchbNlpJUrWG$M3QWj6KC1 zzx0aKeifgaxG(tpIr!X*RsDjixG$Rv@dfz21v)(|{npf-ovix>>b?Q^#pl;i{;3zb z{SM!T_}N?II?t^DhD`Xw(@!%SH~Y`i`@aMp{tw2d@>y)lLwA5?X6*$$Hl*Rv1s>A- zbvETl@L=7$Zd9nm9R(hZj8~maIT}2Mg2!<1&>W`ziGh#uE!h6A51p7(VFGw5HaMLh z;wOPS$cL54(7C{6*F=UMJl3?t8Ey7nz71Si^~ZY72QJp}>b6HlxEBDQ)@`&_C)?*c z@VWd>4;Mte^(FMN(kngxO&s_`A>M;7t%J$S&3pS9yBqOGufS)zB8`XE!9yAoo$!$M z@`h-$q<*AJnaq711{US;P^@wdbz8c8m3~%iud%Cv;m~!dd{pbp2dx#!wmyxz-;tlnz(D-&xeN()ArJAV%eafg=z0ec-XAZK|?clmyC7CKtr3~ZY(q$4h=^^!>v9K z*VBgbq1*O5dg0;4(9g!Vr}Oa+;0@AM_Dd%+SYy4G_*QIa?SpPxBKd)zA;{m7AL6N$ zd7)gqO7!MrQ-m(4VZ8)UA)5WA?(Vm#jvH zEu}x>^y6as(4!OkUi|v9p;NjXd+<$fzvNoVU(tR&<*k&zru-_U#$Eb&oZ;WEK#pk+ zjQYQ=+|&CSpR%{LH$=Aa1K@1dXZWT?_rTl2b*BB^x5MxQw59j~jxx^q&iGgv^a`FWhh107^%?S>}9k}|-vv)mb)`e$V5&nd=^|)m(eH-$0q5WTM3F$@&@BOI&~FcN^F9 zTz}>F2VBqc|3_ROa%FQ3=4#$9Jl9#lwhzZ~F3>o>+sgRRyx#zy>-o0R$gRxxk1?-7_e2BrNFRXLh++5YY^F|I z-zM%Gp7&+MwsSoBeH0m?bHt~y$7fpEC}WFtA|qsn89l)%bwlvI&aFm>n)AQp8~=zl zNQRa;VSFKS=7KD6UZ5y}u@_rDf zt_dDa2f(QxIE@FV9VMg47sb9La2fzk#+F@M>J9=Y*}<9MBDf15&lX>^9^k>em33Re z&=5|A`RZO^uz1gg#+oy$s3VAH)8CHwgX~V}bq)SIk3cKwZ=KTnppEDyIbiFY&im3| z$|Y0%=jU)weZRryos>BxK;LtEgH`RqKclEaXWmxjAFp>P_e{T@di-8V0G7}5ob{Hb z9ms;G(M9DCE1|t0u1^JU9mxCQ#YwbDzObe@p60u6da(|Mmwnm}gqK-&YMQnU9rs(r zp$jgb9=7k-QE#xXD~Ec0-9=w(FVZmjdVOS+i|kIkOkgDTO`GtSZN@+Qs>U4tvg-cY=R==Cg9lFY z{EwoAawCWQzG+8yw0-$9da3&IO8SzxjV1?~8)nYby1#g>gl9oozF2tT_!tIUIxn(8 zV~Ktwe%a&&ysM_4Yv{Ai(*ZKr4{<`y9S69p>U}bgOLombiwxcUy+Kvg0+5GZ@Dog2P&5&Nm;+US;?g-qv`!1$ZQP zP3|W83mfU^W^!V@)sH>w_~_pvHYkL>c0bR8`#GK>2Ddn4NOuYQ|7xJk;?2uWj`?(H}bz?ZdMXI_A2*|4P#FOJpUTsEJ6;p!keu;S07p)_~HK^E3*IJ9{9hO z|Lu4>6}lT;A)t3zp0VFvr}uq6!p>TKl>Q3WI&N>W<$7oq+OJlD-WKi1dk~AXe{qyz0-bw zD}D1W-v`gLn1MbM?5_-X?`rxhWlc3YqSrOm2k9@Zr`r0*(O<7p|NGF~!uMJ5$^fob zi&w3uPj==wMu%4a{*(4`_VM;*pAWxFCz~4zwadniY5wP(YYWJ|%KgRMx97A6ZMVy9 z{~^QdK9J5qv_ZXE12D2aKHQzyjE;dmtGd=8d&;Rl4168z=?Kzk9duHzH`$lU^OlFK z8&x&drSFnHt$pyd{4y`qgxb5|?+!z+oW@RgcNh66wD-p5s+Z3)4h>iXHGCqx2LZEu z!5PR4&ljB0IMm{iMyGjBxV@ZrchTpcgI-2o(VR*9c03)!4m)P?2S?fFmgnvw--+yY z`s)N+UGZsJ4?#!c%rvJU$~A*a>mXHpV{w?1kbWF;gZFmuj_k-i&{=Y>9=e6-!~a3= zkY9f$GD~@;7U>zhyPr9HIdk|5=J3tPTo zpGmf*=o#Tsj+FwgFK`ucRX8565+}OK@Jh9(m(?<7nK%j7pA{#8KG>WeVvRpb@-8(d zqJr2t!|%WjOz!j8g4l@d!Fy}yXWD8E|Gscr{Ce)H-Mka0e3er3gvF1#G*_O~ zo)`ZFVb|J96@0!M*oPvQz}xH{9fmB5QkUkpzcppA%8ihxSN#xxBS!mLTQTkXazZj9 z6JFbmtjvJE+J7qj_Ms%tdgo;igq}mWhH(w&n#?8n@Exv3uKTdB@8#Oh{~vQr=KrsA zE#O+j1;5qhVzY#?SsJOo92ueY$(8U!5WjWjdgJ&2_{n}$uJS@~{0RAc8aUdqCb~8N zH~JF30&*(&rRv{zx39PUWf#*7+oLh2Uq^b9Guhl~a5f zLp_o)iVMPrm(YGd+3LZ19;6=T?ga9(y#_c{pX^Qp*E*jMCwhIUxllgb5!7kcfU1h! zk<@F~fJRZb;tEQUTM^AMw6_)=zJvNT2g={{YkmiDu0G4lrz1MrJeIPlmS*vd)*J(S z4mShqLBYx#)9UxjKJ-B8I&bjoPhrkMC?mgg##ndA1avfHLJ9IkI*e%(UXor@JI?dr z32)_PN#?YPM~olO>Vvm~&uVaqgUe!UhFbKQ8tRH`egn4=gNP-9CbHo&PJy<}4^AG> zz%|0NAfD?++1!c?O>V`Gkf%rNGk6Y2!Siu&IShYe2a^MDxI2YCK1b$$(LH)iDjwU0 zduNq0AQBzm5%JC{tt-I~Q^LKq=(S<=+EQTDS)~)1YjuX4=n?@&jlr`SgVHmMe+l?w zf*;(*>OOS@`5>drY%b858hPdJNfK`u@O~seQ0+h?n$ z&WLBE=+j+;JX%YiR?L*Ki6dn$Wx~cN=2DN=U^3}1(fV6y{Z-3ahIE&1=&X1L^(lTo z!!O~q{<_4;OliNG{r>tkB~FAr`1sgT;zZPbKfnDirL~{o$E{fT*hTy3?92)13Tf@9 z&<&kZZQGoY`X>GTdhmUV{!jT1TVCIZ-eK^4oA!)vf%ar82KiHRbP4iP{!8gG74dL; z4fn)j=c5Ow)a%EuDUV_<^}b8J>W4klt3C+UYjT1!AI-Ya=R02}uk-C$on5Z^2b~!I zWwG&J+Ox~$!xTOHK+ip!Q^#I4^RsX}3=GQcw-*?&9TNM1AwLa zDcdM-qg33^0?LOeze{;Py;DQ}`&KsleXit>8O%P6mOTX!r__j>BKaj0E&|F=akCfCpKgCOVM8V13B13nFf}gs zv)H{iqLXAmy99k<^}WyX9XwR<;ZFa%TF+jV924)CfLn&_WnZ>l%Xu!=KH3A#bFrf#W?;X4=oB2&*hm9|T|1D3b@1F(tD%xyC|1>d-v?bq!p8dgp z_U}CVkl$+;XOchHTUQGDFZSX4#}DoGpN~s|@gJjJi}%&w{S|1fSdpY%3Z7akwRC>O z`XQiwx-G{XVD@HeKi~|muW$+Oa(M9_=tArU{^s-C^w^DU_c9c zsWk}2o0&KWXkf?0_cmo0+(bJEfr%I!&RQX61v{k`x?ba-mn7f%8#SrEG@Xg4c2i<0 zYbT!&OR0S=r_ru_51oN_ucTepY3nM$se(0#D(1PFw0DU2%$g85OYi>;^fYv)&!DT@ zNBrf4OE&-#e>wGOCv<#Twa-8&O;HzoaAw2N{brTAa+C+K?|PhDnQ_~Z7o$S3*p zUZGAS*8+0Hj`?65NH*`vMla#QwlQ}3>6DCDkC%L$G@r?*@-Dm*v=uwKmjz8&|K@C* z^W3@g%MtMG1mB?V>+gq8^m7Mk_6MFnMjf}Z{xz5NuZ7gxz! zD8s%FP1Ey+rQ83t)Gb~0lk9(6XJTV^K{a)n_(osuN#+S&<)O@k2D=%bnp1`+?fq=y zqf(qZda&7ddjaLQxxUABCs#AqM_hfFr#{d1C9ZFB{gUe;u8MemyXw?h#rsE6b+ocC z`C}E@C`MZPI5I2Ig?^L)eXJ~zOs{nE+Jo!$cct0mwNp>D{iL(*&T?ow)%IIOJjE*d zeldMN8Q3&l1m8`EQ{h`T$%D`8w4bD#E~ZX1cIW&3zs|FREB!U_lr@o#FPwZ$g#NgE zW2zq6b*2Z$Ug)I!pP!`5T3X+nrf1iV_v+YB9m>J_NxG=weH!3L(PTtgJsD%YdJa*~ zAnNI+&m>#-Lu<*^V4qE-p2Ljc3MaF@#;5V$te$S^gUv1;mfs_Ro;{5^;eon}$QNB? z#c}(Zx;2lDLw;Jn$7N}LkBif6)-r5&#Sy&?tnxp^sZVzAD(W(8XMuTmIIzA0|KCMF zj;a~vj%HuW%&ITCGq3jhlQARRpc4CB@xR^RwI5qF83SAuIUxr4x;!UwO+P1b{V7hO z3f;@t{m^tg{VRXKhrlAaQ=gB#hJGV;pL&h_@aa=q?DHVBQ7(RL!MYOi)5s=l!1oZs z_YeXf<;L8#IHO&8XO1FA2Q$aWcHH)8Dlcs#m!IY-$qcRM%BQQkwBDwAg8e7opYk@m zW$i5|x4o5nqTSv^>R8!^jjnq4QSYaXW$8GUPpd3HRQvQLkDqe<+w-qlLZ0pUj2XxM zQ|#~AY4&%SzgGPbv`U^wQCf1sc@$cIRP2mk_+dJI$k8V}I>AGJy-ynR#1ORy`)b`l z?^`?8neXbh<0qm_$ql6TGyL|ymDYYG=Ys_4_(@}3<4U>5YW%UvdXcdO&KQc`QZm6+ zOvHjPb{K2M@cwLvcjxpRTdg_!tq+c^zKZ{q3t$R*$e-DhW_@}Q@r3Ww8ec}0xkX%{8PU3=W5&c2Z0HjKk*(g%gzse zU-znKudk$3uFd6?I>Y8}O4;joQm&-Do$`m2ODMIUWHF`og2XA6@8c(wXH))&l04f* z|3;Zf`F+ZFu(NNYe3fzmrQ-L$OIc5O3*~akn<#%kIiKHU0!GH@}?8&!G932vv)W4ZkPYmx67^m z^;z`PZ=j2mK?~`r(s|{ln1MdG7=13pZ~2hkIElUg4*mntFWBC0d=XLBKNa(-b=ZbR z$?nuVNypz0HO{cI!sl)2g_`#?Hw}YF(XTjzHQGEJK8vGI%5S{9mpXfP^sX1qzy=8N za@S|5e*yL9MI1MR{IGhWbgegOLu*52=z*2&Yce*qlhH1DS*bXNTF(!$8~Z`Ao=#e}_w-2gUZelZUY^Bu4cARv-{<-vR|EBHZh0Qrr1<a*NGhsn*r{5ypC_f6zcOFm~q_QwYZ+#%$t@rffxWuxt)J*`hwIQ`nEGnYyh z+xc%&-y^G~id{Jo_M`|Lbxl87RFF)JlgqQxbDb%lBzF);E^k=F+vDHGyid-M_m^XHFUID!_e*`cTRZuG{dva9y*)WU zYCaVj&qdBbm*hEfCZ_~Ex|BNC1N&O|(D-xk*FH3sTz1^g4UKRgKGR9u&Hpp2M!2ji zD{l!fjBqz1BUkeOj*^k?W^}2a@&B!BN4k$qbQ1US|CaD5cgs}P75V>2c&huvxlW=y zs`IRFYnFW>+$C=t7zc)?@u}|GsFN_X?3n64IKxTY&bQk+i*G}L4^P!O?!y<7N996d zQ7?89D|o)C^Bi~6WlrKA{(rCPOYU!GI|M@rlW=lgBfm$(~l@!Kvbbst{f)1sl&ZT!BI7z;iJz(?!3 z^m{XF--(Ss@@Y|8<~|npX|Z;w%i(WcyYW$O{hjPJp)a0Vj!s5QL_;0ADD&95Rf^9I zyBqFDUyFy`hkl8F%*k*csb_5?p5Z?FAZtdfH*NYn`AUe1`OQdlXeY~k{9*iA@htau z8=b^pC)<6piF)JNZo}im_z|nR_DOsT@f`QT|5W|C?uHg8ksHr-AAW}Yx=xFr$O)a*>Q!}}*|=f8Ss$IOScDf*Q8 zdPPM%Zt~S@9GP`d>Iu>COIF z=;iH?_0B|?3C$E!_L8C5@%^xBw=eDQM{cqX(B{;K-Bag$OkAncs6Be{NK)tN2o=Ba zOJLpu%s;1mld?FV?^#$Q;69yPX^;B0R8VJ<-L83oK4~k7gIzsMQeqD-_Z~}FWQQHAnL>G%s z6?iaLc)6AtGkO+mH#0f!Wg0&qc9ikk_M_C?r#(JPSH9uE89qaDPEL{X&`q<9DfpyIQ z?|oMI3w`*90e=~7hPmX6w(wU0r@apWlkhhHr^T!L`qZ{3gUegsvJAS~Z?%q*4zps> zcY$9Q_{B2ADfkI~+dtQf&w$I~ZTrVO_kA+Rr!A4_{X1hnZs^f-2fHTy{iK|z_vFMP zzI~Cp$1!#kXMU*}!(RUncq|o8)uG1-eb|{ItzmXEQOl=u}n?JVLyL z_U(E$LPnCuMnSV`F6{%$9IA7FC%8-hjxP!xlP{`+K2V+!tq+*-R^QKkVJdlO%1hnI zbrp%3zxDRX$u|PL=Ioaa>=E&=8GEsQ`ZI70t}Jz(8!8ebeK<;eIHJztuKi{ET=Ce#yKfo^$&q@%$cm%8m=-*@fO`aeY1aNYUkd`w=vH z0va7zn@bFkC-bl6Tlo;|xAq$c`Z(a^&~G97O**uAu7iH7q~D-xvfrMCUhCN-P=9Sj z;xE)E`8?96m&2Joz4e>U?2^py1}2lgt~`gc#k_v2{DgjM0hiL3a#vOR@?HI_m;%W_ z+3}aB--p+A->(1Ic}#sDgV!_g8{n%h&^Vss-#g#GM|@rLA}6a`W8&M)|9bBsN;8+P z^X4?^0Ny!j3zFxkm1H@I(mW?IqMvA-dZyZ;7gN`7x`>&uuw?q}O1BoR1>e;HSk(3! z@)O}dpRI2kY{x8kSNl_Pp!Zh)n}_{xv`%%*zqil7r`Xszq1^6e!2K@c=N))gdWw7% zPhkfdUSOQar)+uQF=(o~IQFd9?-g<0#M3#R-xr=8T%GMIwo|!-#?t?HLW`~BB_eii_99^G zz|S}r8e9)db9|g<`8eaFY}R}xdR~G}u71RhZr(~>dd*q;fc*!+jWU|}elM_UkFn}( z0e|^PI-#5Jy_vRTCq@k&26%a;pr_{V)3Q975)MU;PoNW85ZmL?Awb)!(&&&u8!>cB z8%tFU9jaS$I0xI$-QJPqDke*G*at6({%4P1tI*fHJ_>p3Cisni0BqCBLY!rCTeIRQCqs{t zTBp5(Gae)8z!QLT67WsSWsRraY2THxz{G^%b1`cZMcl9L&)Q&LCuxIfE|P32hQ`;^ zAD(Q|e&#~>a&RLt)~k*DhOX9bJrf*{(zdtnS??7!5*Oj|uP^WIyTdGv{j>PCL1XEm z+v~}-0Nm0=Ujx3^fm>tdd0=b-_I<#vbrA7SAD%0g&BUwl93OVGd@!~R;qdntyt66) zm-2VCSsc(mMMvr0qi9=rM!_?~m#N}Q`7VvV4L=2Sp%A&rO2|zX`8;a?^!bhIbLvmV zzd(EK=T@CD>JC$?C@vpZ58*C4Zsz;J1Ub)+pD6 zo$dzpZD72s&U9Vm$I!z2wy^POpI-8(6=#Hd{a$oc9Tuh=&G*Omt*DJF;St3NSwEQN zzdY!pJ`-(ZhYW>&;*lE4GS;5NM=ijtJYJEkKz~uE=Iru3Ow!{TxUVt(cmF&^!KS#I zjx^YkF*d+v`HJ``qvJ^juc02v{Tg^f_5D{b@ZSgQeYoJ+WLyY+ZRDnf{{`UQ3jFoZ z@iE}P+J|3!GSP>>lks5quG-TPy1*xfysIM0Nq7=;J^>!g9pJ^ zJgC0e^=)q~mjnNYz^=7*e90-WZ{wNP@NcNnnY0U=wT7=Tw}N_Z1jd!rc@uEnT;;SY z&fyTxySa~^KpVu8z(c@hd>xkN={)ip^i0RA7QA+GzlO3+^!DYH^l!@}dEm5&evAU6 z^kl_FC@$w3`at?t3>mLHlv;Bdo_)m3SwVi${8R;QhUUmA=A6Vb`eY1!qP5d;^hpQu zK{~!*nNC~v@Jt!>E1_6(9zHI&7{9ZDc^~)xnNmDn+{^s5mwFUK8=@YE`YfIP zo^_;X2H(lo9{esD&&0f-`7Hz3=K=fM!84E}1Kg#+zJawC?H|4!_?7oXz5x@%;r9jk zG>XR1hV&OJKP*k}qF&+I!q}4TC0s>Y6T}8`rKYJ9q4FyMX zwbiYcFZ*Tm%@(J94{1^<2%n09F+7h3a z;LF~HK524HqgR!IOC;{Ji-(fuGsRCoAqFD^j+Q?)=lznl)Tin6Ra&kk z&+IWsk88da7~$8V?@(%tTDpi&dh?^8Hy1GO&AA#{%Vm6R8A`vL&$YqHe5obVaV5Xv zjN2eB)Mrtyd#*|KZ*@T5;Co}KQ@T=&@Av08Th5^^<;J;`>(x-dmynmASpWCZ>X$Fj z^92*4p9b;JSt`T0)?lx{^U#`~ zt9R>!bSG}It#ZLMx$SYMp<9t8ho(_*` z4wpYtc(W$joK0VlL*nS3zt4Ov?}Hz|Hag2`f62*TMn05jmxTJhv^C^>@B-iLaH7** zO)PrtP$>LjEbRH|Hoz;keSB1PCCCBQS$Y++0l(oq{Dwngf-Bm5?!6x?PhZ`;ywkzD zknT<4UL*Hrc20An_nLDA>TY1&ZPqaIuX2A=!$|j%QGTp+Xq5Zav&?x~b*tu%a%Ye8 z_t!l=%DsG=IZvx@aM@`0ib=*NU+2U}yV3KA@uQxKj?r#Kxv^90mPE(6GtNimbANmN z825q){5ar}vF?Qz`7kt$b!Yv`_ zO+*_kY~$S7S6kS|xtITwg>Afh#n+8*s;(qH-YsA6!{(gfR+RX##m{hOJi;DLX!Dip ze7Hhqx)*Np;i@^)o%LG_*IDkxH#$1|tZqlmS?;AHW+()%+&be@j&uzcQEA6S~L) za1GDi;@wu};;L+(bM2bv>7#MRr~O8Hmw{`5XG3fLxsh+TvOa>InS76P1d=vYF#n3y z1h5lNs3W~jBbNegbUmB9>Uqr@=v%V;E#8mFC&+oo4ZxUQ2Xe~T=D|Gr_*!R6#*)W$ z%Y*dW66D3=i|IG|&ggx9n?K1oQZ$nHikTxypq+i*;o~KmSo(v@#sv7+&J)nd)K@Ql zNSpHwe^4LqdiIa(0G~dZ-z;55K^MDD6{oK@a><^o^l8;W-Ie4zvTIisNAZE|&EW5J zo)nKM=2GJTe2o8Cc1}DLO+c5`vU7@^e%;H`_)GcYgY_0ehd)t|>Q}oK57W=c9O<&Q zZw2pi^g#7(j4N1A1UQ8I1>6@cTb$`{s6S$iW#-(bl9obqe)IG9B-d=w8;jg$_^t1< z;cKHyMouN3kbPMGefd#Jz)AMno8YBqw%slFzze3`aN|y%nRYq`y1xmw5jn+u)UV6z zbMos_zLa2HYpJW4el#$Hr|7FSs&&Awv*=?{&OCum)?P)gPs&W?;uuPwt^r>Me8aZXL|#!hv0My!0Yx$xkRXFucrj9pV-wJ(=|*;|Y9d^KaB@tBb3ukqwep79IR_ql@{2pf8WG`Iw~ z6)!rA^1msOkD__=4*nNkS$r&AAAydt-)$Y@wR8FQZ)xub<;f%Tg`I;O=rNWn2!A!d zMGs4hET0xt&_aA=+tN4}e=7&GNS1}zn|sb^2YBe$caIX8P%T75K709J{Movy&LDlSL@*`Y#Qmx zP1|FqxLRirUwxN0zP&irX1F1oYBP+Y{+q(lY3u`SK9tpe*@FCV`R-`Mi#AHwSbVv3YE;X`;- zdZLwe>a!eZDVdQ=J$tCHBO|A=iN2G}ib5C7arg0C>xsJ8L7xQqqm21TZJa?Il=5I` zzYK9H3Hi#kHW+Lxg13+u?L-ORugR(J>qbWUFgX3((y=}a#A6IS z(}$s@pF4aadDZFfQ5UkV0xjgL-47k*ryY+zbrW)F%nW4H3}RK@&t7HPEbZ^Me3`Yk z3!;gpe`K#p;yhKnlFG~Vjx$+2QYAiTo)UlQ9hIV=c}_e_%pV8lx&L1BIp^HoaFXwB zzp0I+P7U91-{?%p$ApvXw0}gu26;`sAmjf;o@>9F;?eJ*&*Jn|(AOz=-hVo9{#vc4 z&uje2zaSr{a@|SBN*^+9bopbAacSZXbG*1i?f+rCC*+H3q@8Z~`ce3Sd8+N*jso`~ z_@N#?(Awt1^r?wU4Ct6UfFtQQ+vcsi2@dH_Cf^=&^ls+rMbHAe&aR?gMe`efnY~K> z4beRapX9iihk#FKV|N3eork2ujLpN34UFUZ5yK7~<4+-mo%#HXLczwmLJ@S{=F#~f zV3Qm_RvBvl#|WO60T(vnF6_hUz|#UeMu!5Pi-1RdOV-K_O!|L+8EXQ0#71Dh#L0`& z5JIod!cWAvJf9s$7WKt1vx3~Evfc2@a6S^guLCP~p0RvW&pqTNy}2*BKtlt%%aKt( z19z=O)+7I7VfGzoQ#ZdQD}TrDKP{ef^yoikzE<4F`CuQs@Fw@3UcO@Iu5lZC7L!*r z9OWD)*7ZU>gBH!*T;e5@TL^mZ#}58F@S_X&`iwZQf)&7E@S#n`evx1F=po==l<&3q zNAA5&n;+8Vy|h_Kn`^>_$J?at^fsqbFY@VVCH|>J_^(D&xAqf13mt|*ho#WrYUm)p zTDf5N;X^*PIq+C|eM2n{y|kqmL-Re)PWC+xz5?VE=gkkq2ZT%@&$`1|^*^2M`DrHt z8+?cTKK+fp_!atKZw!VmA?_Pkh#Lsf^dNkoTtY^k)=zg|{L^uJi}|3LB-Vy+u+h!` z?}-QH7p2d=dHo#Z9(8|?{Ib9H&b5w0hr`8D^71&7wU#AW#JMWX8WW1)5sy_tM>94U z-^R!9=NH;T+=2Y}Mt3F#ee^K$$uNdL1kOiK1s}$-Xw;W+EM4Gc#)0wzyhS@L)Om#Q za*Y3DY4vvv@aD*a)Gxmo`45`jqy9tGuN*>0slR}4l{bnxx>@Vqs{b3*uexi%;UjQY zJch;*Z8q!w4(=6$PXwHeO%eaH+euxe_;Mtp=!@oOcYnMZ912vAW8bSM_X6)#1m61( z-h-xXCGd^b#_x`Kx{_#Z<}KiLMtQWpB0%f6q4j!by;XDtPK_PW8u`+^h`vgvb)~=F z{~olEzF=&NUFWz9hJ!z}cn7#%2d+YB@jKS0PV;F|04;R3#4*|tJw$7*_lq9r9L@TF zFZ7sBo031Q#W!~#&u%4mgZ?-22R`Wp-k@BprLV4K9^8vuRGvcZ<>?nf2J&tHEaZ2_ zPnxy1Ju5Wer9Q|=ljjQ=>70U2R!AQxm*EKDstlPqDAwx9?SG}j9xS?wvWD`Tl;5T- zmfmjX6=1ICEE}tTmm}wZOZn{33lpm&u2&j7w-{NI@dlkBNmf$5LHw19nHjE%(W$iju$s&`O|-vBvK z=fozsEx+={a=M7wb69mF}pqb0_qc?i$oTIpoRM2S+Gn zPkl(Kc!Wcg&FUNQ>Lh+xe*9==XqnYpje{;aXh@y3d1 zVra{JExEF-;Ka53Z}Yy^@y)ystXjw4i=4A-`8R~Ud3hMLS3G#Ie>2zvsQ%TO);RhK z8zV8Eev+MW2Jfq$VBc1`U$Bw#S(i?!d$z%hYwMjUG0 z5yoQ2_-Nt>%DW-{RG)M(_RlmjC2=eF#Y1Jx-;1DEjIk!Us_}(yu4zf6(3L*1M&mGz z7iyW?731{|^QmlT#dsOnQgxd9Jn%dN9P&k~AJTcd8s65oqSK3fN3N2l8(It9m;CP} zbKYT%U3D88tn>On@kN#f$~QKSZ~H@o9h@0Bo^OAHj2Qq8&YWn^Y;%Cpc zUSRwT2Y7EiW5fCy4kF`j0w&FSHv^Zkw~=4)qZxc( z)xnx9xHsG18arR0orAQ~5ppJn|6cyHIn)!Up84>M-qkzGMYhK0BYV%&2MP?1TIW61 z+w++Byg1+oId1QJ<1)vNOWM;o4cgt(6NA51j{`n}$--LCck)e5_wkoMQTtRhzlh(b zW2wdXRO_G`mA%ko(J+~?%IG>5g%y}*q; znkJoRMOL3>TgQbyIGD5M=aM%a_%(v`6CA z;s?Dr_1@O|jen2*Ywz-2z5m{5@TJ{kKSo2vZy32i{E_mA+~>cic`Eo`3-8^w)$_9i z`3ITKI_^1c>Ch;81!FB*RN;%Q`q-8UEyX{?g} zl`&#%({%b=PWy-Gt6=+j=ajnKRW8rwQeQ@K%}$*cZscl5kvjujKdO>#F=7rGZ~rjy*qsB;Vd zZ<#yU-IAOKCc95y>*Y_{rb6*?v{R{Czv!~OnC ^8<0`nI`=iUD%;;)&8&v75W(4TkW=eVPGeY`rI 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

Vs_Y_%zOd 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

@ybv{Si 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

+w!Ea7KSC3%wzJq$_@V!MtseQ+X#wjG_%^?D0;t z2YP($*xGpwU-L8ju!di7*S4$ytasAphK4SF_L+<++2n$GjUTmvKGsdv<`nkvb4C#F zD!6Bx&H&9W#*aoX+VM`iG1!0JS=89iZ$FN6hzjoA)&ZI4eTz6|CTFP7W~WK`GQ2Z$ z$3VX`vL0HnXj>QLoL8o~Gy8OT=j5r(n~xpaa+q^#^RMH4se=2rbw#$n1+S6O0e&}R z&`1n7($Mfx*WkuOQKkFXWVG4e_ zEqf6*gfm{6t2+2?Dxu9|uV+=mM>&hJCA`}=GQ`(ep~R>Y**_XAX6&eVC3I`XCR zsH1T!(A_@1iwn82_w{dDUCzk%-}*1B%N5!FJKe1=du{x>7raE>3;1)rytOOJI{8)m zOA_Bi7mcqsr;Tss2-wa(1I-z`TPAR>X1`a=oO8>f$vOUjt)`!Ed9^ObKjTf)&$rC% zp6d^O$Mo|p>*wbBL;q&+*pcfGZ?t%nxAjNv(zteK&2;E7wgvv~XcwFd+2a-bOAncC zEl%{x^b&pEaadRK zC9#)7#+oyAw{&f4>yOyO+!7vp#qIpq0b^$vm)rT>KP0X^moe1NNqg@JeEWU}6uTpr z{KMje?8zeFyK@5XCw?M-Xux<&_vrTi;BJ=g7ux$n`&zn3ckqXwW$CW(;Ez1b^1ryF zUsz&oNo_~JsAnMKu+Qu9=lp;I{P1FY46P@0XS~@#{KSkkjQ#RKD;PJ;yqY<<<|(~+ z?=E;4#CMoWw+VcDY)VQjxdLBWw#S@%LA|#4EfdI*YfIhDvZb5{(+(bJ%sdxaJ@bno z2KO|j&W3XMjk5EE?zCH~aoyop9^j{OUHJ9H7ZZMQ;Gf648+q;qej)P-&H0sUYUpzH zEPh(MYfHU$;CBP~DZcP$^_RlVCiWrx^1#p0sqyYEaQqN>^C;8Db+sYB?cqFr;Z7dx zqz2}By}?KEsawn*h@9j(BZ~8%$uow>oxL;xo!yInptzOJUmC#KMT;g6^zX|eR~293 zDdGpOHjX4O+e`d-u02bKb`=-V{M4N@>gM0;|I(5_1U|HY$EDbvkAeLOus;Fza9|&v zGSEMgjn572-vWDN{ZR7syu`Gx0Q;A~cIOS10$c0)CD^hC;6F+pg#0qjF4)rSoy|NP zT_omsF>rS>ztFrkjI+ac4KU5QP2hO}FvSB0bDo9yG%ybq4q`8H0Q2kr1m+{atfo$R z>jLHotT;KJ>D z;HCXY3z?rt-*j%D?k$#&SppBsz;&qQ-J9UHe##K?zysdxoAc%J7!Qtusl81)lfuv# zf=iyLk@KH`JE3qG`SbzYH~$IT!N3*Iu7rLzcd?IxxlP$%;|p$}?&o-Bea=$qt$;`W zB^k+n!TTum&E_-xf0FX66JbXI>DTU&!1-y!gMSKR(z$ zd`Bw%H+~uYjeV2!fBQ@DeigjGl>XXYN%}{937kIw=k%{azwOtuLz)XK2gB(?E^^gc zY>+FRxw^_5wOx89-E#d@JXBoO*bnS(@^|dV(VvC#J#0JDWprzp(Jf@?=7we;A+TfU z-;3?N^)a;zE{fldWgHMrKdK1keYy`^Yor@$m1BcH&6$AOJD5Z6PEOrvzSc@t;d|!B z8a~>@*jJBl0nEfp_%wTgHxWBfSIb&H_0FJPC+Z!nJJlaVy}rC(Bwt8=5bqBG51r}v zMRX4{c!ucCDA=ypo#wIz=cqle1ba0NoL5wZ&L}_^pP+T6c$Fee4Y8ugaBHE{oQMUgurnGKspSHcuq89+N{KwEcc8wuXA=oix^KSOh9C(mN!Y3Q+jgY#=#emL=%N*9kY_N%y8GLJnQ zJ^T^6p!|V5DP^y2r+k3Y`8ViZ^6b!D>{tT$A@U=L$Fg6tpY)ZQpSU%M`oMRqrk_nmH~Nxy;?4(;Axp(&1|d%qdqM88lHiOP z<#^;GPbVAo!Sw!A0FC=-_cY44Dc!n(!0?ImvKjEAMm7!T27?Lqa>V=va*NB-Q+${ZIx9*!OxJ>?9y;xDmHJ&;LQ zm*ePiI=^23&mez!E9LK?Jzf4=Z2rIWEL}HOiN974U*x-7Y^IGed4`}C^Vrzao#9OPy6I!(`3S%0h6jJ2$XA{*HlV<#DNv$=OuZIsb> zcB4018#QA%esEY%yj-2%#9AFVgPZX?bw0>4@E8pq#TJil;Bh~^&>6c1A9PjsU2B|B zzN*Fq*=PAxPN!C}r*RtN>`NWIbt}mEdS3kk{hG)eU@~+||J7H@=qnfSePKs$cv*z? zD)OLo2HCqE*bfVRM%Su?zEO{@H|Nw%)){`mIdyr|Z9&Hxv46_Vlbw_8R^DQFbR!>| zp*7~6&^{MF$>&haw+b3PX!IhpHh3~g^RCC+c*EZ1JNlhU5C1n~SDELZACH@H>m_inD+}^F6!+`J_ZW0& zpN9IQ=55Qs-@u1=6M(-u(;Id*G8Qkx{8CKR^iBBX?h=>={*&RA)^j!9^|$cLL-6kf zei?9OYb(YaU2-y?-(_947M-n!m*SzDqs->r-@wbm?!ZUgfKR$1-ouw&RzKMPAJ)%ChZG}LJlM^JroYvazZpCa zfRo#AWAdA&|I7!l70EVNkyms=o7BD1W$^ikd_&&d2kdfmKEv>u{nfP77kUIwu>{Qn z4lp;Y%EdRL&Nqc`e>2zJ@@h$e{~EEHgS}bn<(=BB0N0OsZ;0M2@)G8(=g|fJTic5h zhsnQI{@5MJkHx=40=;D+HxbMQPUg%UX#X01JG3)DGxwyrd>HN9*;&Lqr#HTL|KddD z_7=0Z_$0dyaO1s=}Q+f?ugg2JIk@L^RTh=@e?%Wa!%fn-G86( zdhUlmd7V2Nw{G^@E}Ri59(iG;{btt1YhKIhu<%$Ux^DuwD#!G?_N=%1XZnxRw(wjB zyv6V>eiHkr!S95$dvoN6N;jY5y{@GNemD3ZgDw|m81}PFvmT)R*IDpL^Ng_F4S$9o zDgR5?U+IAM1~@&&C!Hi7;8#@^R&_RW*cr2exrfFS121Hgw6CWbdFy^zt(z~1>D-(i ze!okD91Y@5_?DbqE?%OK1Cdoq90HvQpNGA0drN*h_@up9&X3UesJVh{dUx~|ovQSz z$jgSe%(<2*#`^*|o8M#n4la%d*!v_L@!rw702|u94|xg1lt(W{?)YV6=(CR@`!eW^ z1203og@04<;ZK~3&V$3f%6(iq%D>@1 z@!R1t9X)vgnnuSun)A1J{v^=np5P!@&i+*4OS}ji`FN6JfyGs}O1fQzAEYuJ{sLs0 z@%NGkjZLSm8PG0X8W|V2_oofPFDUNrS6w$caiQ%?ebUfBJ$-7lLy zI#F!voRL!me@3Ha{rj2hv0UL;s! zn24|IV%qoe+Ye|*GEvM@HbOA(OoJI^zxb`dT+Eu8JEK5-`tA&9&L&PiI>_l*!n|)W zFux1T5%d$1(#<^*idkx3M^YDQNBzdpz#S1O{MCIP;;;P4UHAx!AIpcl$MSd&_MlgU zaX>iB4r2QzIv7os4~%TR|U&kM8eByq~ALW{T0=~+}b@;{{42LiM&Fq1z z2yzN^{zeNhhEOL4+yNEd)+yjS7kssztb2|g0$=S7eHeVh`dNy8mVu9Wmj&;%N0fPY zB0XpDcT0k^gPx;Qy!_XcuTrj~e1@`y@|TorDdUt+QBJ1}_Yc`itBQKtb{``52AeL1>%gOgKrfOiFW zUkBbf^e=aI_yOd!8u_+GE*>)R=wmv2RrBJUG(5vLM>JjuzRKynoKkm;JG{g3gH^Pt zGbgLzuWZ8O;3wS=>}IaN>&L-Z(3k%KKgq*bq+q+|W0HZ+7I5}8&KPkH?P)%Ky!Pl1 zro9U8TTvXXmPh?nu*RpsQX74MrC5s53-na}lK3q9JRTl%c6f4MNtF6i!C&VJk0o#H zZoVrP-#}R)pA=m;{LI2Pa5NUT@t=go3KO%EO;SR}vn5j{5!r!Aqla6E>jS!mK3*W9S5~ zbiWGu;m?>hSR-01zqz&$9`L^CRbEvd&qEpH?mL=mqyEibKyw8&3*TPw@Nw4N+!~hV z*oDxuhjvHtxsLv4aIeZp^5Q$-{wr{}0UXM}!SQHHm`>~!^!XR_?lbW1Ptp@hFMTNJ z@3b$y8k6M>6OEdeCHZ9QkD`9Kzf}<9DWmUbf2Z=`qV$cSz)`Nleq^5yJ(r^s-GHkx zBL+|YQ)iaKBaLA%@Gd%F^`5)ZzkomIz#k77jBR@){m$ z_3Pbuq6rQs04h=!;ncGWt-D9VNcy=r;IQ2eK(e-o`(|&h8=}DgTIkp2`ie zzP|j>X7&zijh(TlQn||aAfvhXyzrR4#6!%S=>A)nA3~FK^kU+_()WSjgAbUfij3MW zTRRB-KFGRR6Z@YHhUMXC`wpB=17r|MWQTuL2M0egpN4%|mZw@0j;Y z5>FNH7d(fYfJQo$;{Lz;DGzGSV2IE*terH)lZ>i3+bMcGRr+;S0c**LKFzkjw{u#hN zp5Hf`K6o#%ll%AU1A8fbNQqTp>;GLau@{1Wg@v#Frm;EjZ?PxX8O4AZ<9LC z{VGX*PdapL3Fn_1T^6oRhyTDkYA3134QYBjAh0*Lq@54-WqNFM*zRqpMkeLxaCw#X z!3XoAGW0kLy`3gqw(9~~-$9X2AUom9(1wXR= z@w8`oq8PLpd&D#Kq5ber_xLF;QJc-YSoK|B0@ts939f^|^&!i*TGoD3`V#%8zw1l% zt3G@-`a}+f&e?{3Gp`I{M#VL|`lG8u@L7wy`x|pg@QJLy&=mMk)vT!*pZWBPZMy%9 z{Kv`(jfKAa=3n98w!^=b@9gEW4${F(WSoe<(gnGg7+HqdPt)x@Xe%=N+-h_ty8FAj_&22hbdi*mrUsFu9+Z2gKpY z9C$Jpp3K%*g^ipJj}GH`a*TCQCmV|-JGnb6+> zVq`P#d|THgU%Qn4avSV9>{{24z-PPYa{xRRY2eHq)*Z~5JK%nNZGXQnf8Pe~!{A=~ zzwkq=ilQTY-AARf8p2)qK!c<#;z#I!Jh#P)`)*3kbo?V+eg|C1pSy%sIhc6+DV?f& z6DNWT`N_(!3+I1ya|mcxhTL7t9NfLqO~AK@G4}wQ&H->V(s*MS$E_PVJE3u8Qyt&F zfj_0S3!OWzac`bY90}dXm2hu*j-Q^6Jz(8Sd#{ZgmG^=k*pxty%0pI;9zc%XK{qw< zy$5oHE<54gQ5S1I_-<=KK_W3rZZ-Ynp01vXOu4d7#7Zt-t zCD6d-;}s9cN4gfCRu1J_cLqGP(po{H&WVT1z~9uvcer`wnNJlbu`erXV)qDk*!U#$ zBe>mj_2BNmfVnMRFShzfH2myFyLMZGoEiSFv~pj`ccWj(0ZG3AbJhCtbBum@T>1rF zEB(^8e;-^aKPp}_zEky>4r_Y9V|?Yh#mCMs60EWd6^h9sXSc;d}{gNOJ$DZ zBU;HnE2W)%Ikp!$R4rk13OtLyaV@{4vELz$TvPg4=#Q@Gj|BfIX^7SB`|zKfe%Jcg z{o!crX>`ubA@(Y#Mq`Khzs|<8XUgRGOQ;7rg1!>%Z{u#JW6LM_$N8-<@9KVQ`~qWh zV!(%gyT*%j_I>DK>Q4kCe|I$%?p)8E)Tp@gdk?km9f9@+{+VHO_MyQ!d+A1j za~1@?mVbHx|5Se3LHtvb@54Vm#8?zg$L7Bk_^15MoeQmey7Y1g`s6~NeCSh#th6N1 zr!3p*y9LyDZ-+iEk8>{XZ@}-k3)~e#pF#Zp9&pFr?2o2k^DY1<`=HN-&}TpNu{rjT zZ`OKhLOy$9)*K3j{r8~HoN$^yw>P+;p7aRxISPGrmfuq7b8LBk|AjE~fIfYo&x@(r zXXsUpFYD{SltHa(H*(ND>AyERAy8EWifktz7~CU zL!aH?J28GZ1RSTHgg&ZiZ{_(c=(CnRPtTu??(asu82EW4gE|8E?x+Jio5& zA9|}bdjx%Juam}V4srI~m39n$kJoXp@_S$AH@<9`p9_9+;Xj=jEgd$WIc{T)wal@s zI?bQO-*g6v=5-D8TF<;TFfW}mq&Q6Xf9u>d;n=_(Im@5*KY)83aR1>!?#;u7yhQs~ zaz!uDK0&*d_C8w0HL8J}1h31sSpPDm?wWh8{r}MDSItdX zj1E7+2Q}w#N#9d{$Qd$zHMpA%j#R@gJL>Qt{HS(DKKNNjJNl{4#%eE<(?NNQiC@6S zMBbYOT=8~Wxog?{`P7vC{JWOF+jzEbAgAy_+x(WmFYr+X{PA8_&TdM_-ww_&Qk?4g zn>pX}uTy{U&h7Bk_}U46gt>)yPkxf&CC>Zb1TKs}PM`7i&-oxvfrBC7Kzo_m{9oSx zznN#z|KoWM|5x*j6!=U3#XNt+JU@OQVV>YlxN>vF4onZjXQoDwePOxK^bg;+G&`B> zrt|C|crx$T*h27IBYliKKdpD@`zGkJ8aw+m`uN?D)h&iD%RDHbh#~913e>8l`LZ;nV@^6j58;q^*hChMV z;aPQ<@+YnCJJl}$FDB**`1PCE7^6>u@$=ha;Px}MOzays#%;_`xt4jf%Gn_6Mt@mb z5EuVaSM~(*n$8(C6Vk~I(f0)Q31pDJ*a?ifQ(pJ82tMg_>F{0XBF_2AOb17Ud2cXv zJYV%JIxX`xe2}3$FF5VJAW8W7$>?PAErBi~=as2Ar<$0EvjaZTy8iM@t>16YN6YcI zU8Fu#*O$!uDRtAyFB{yH1-h2FxeVIqu8rH!v&6&l6=E~dt;(I;i4M}fg@w%7)ZF7+ z>W-)FaXL}(uIITGJfpLQ9DIrea>1uLih zjVtV)Z1pvS&qzKxNA)T`;<@jW0}>8A^O zYSvfee}E&iuPz=p#n4)3bh~><8p6aa@XWiZ9?$n~JAcjaEWbPbsPC_phy00#e(qiu z(U0?|!5uhI3~gxqRnOeWGez{Fd~XsmQ-<$qd;{iac%QuQHOOr|@BjSG)}_Js`ex{+ zdo1GTREBJ7jnTy((Gcfw0Q(ih8}VnEY7WqJ)1+ZMpvQN-H&-azI zzoN~-F1GDUkROBn*F6f#&uEQd2XZkVT_k(edtduHSPJJDHQ_%mB_Gnn9CeS!VEv!@ ztDaIdm}cIb=P)o~-rr7`_pJ%@Ze-rK8Ct5|%HAX21U+@m>MrQ18qx{yQ4_MHdvYTc zVRN6R_8rvx^NXdY+Xd!t_G~WkhV~q|^+7{3bdagV0rqQveHXDpu&pPTJV6V_9bgz7ia(o%lQuWNY^2||av=qP2tX)jOXNOkE;hJ1(-lcyeqv#g1 z-%NRlncSIP#MyLFVCxacVS(Ue{AzE)R{0$}t|ezfKS$x?M(m_L!!XCsn@nr~-I|G` z)b|$X6VKx<*c;V2xcY{MkZ2x_{RJM^dBM5Rx+$q!n=JnI%H+%lKCY8Z@%}%6w;bJG zz}#O2u6+F9VLWp&|Bo17uRFe8*S0>S-{WDZ2i7}=iTjDw0tI>hpr&>Fz`-!!_H!rZI(pxw4uFkAH zn$8FKKHyF)YumEh>i(yJzn}1Vl+SVStNfJCplyJ@W}KE_O@bUn8F($jzPR=I0-n7Z zSl1&Xs$1R#f8UKPw&mlqqOmSrZH{RsxywW3EiVSXhd66#4mk(Lj=Q`-AJ=fY3JBEIa;1`Uh58>z#XQjpC zs3o|sTxX&d^L&)&kD^~MH_ua_JizKz@mYuWx>;FrXYFl6mWnuQ51kyVM3%~;89r+@ zX20r#@Ww23i_X0)Mv+iC70+tK)X+(obSp{-pRAOfNLjk zsjekOGJ6uZ&UI(U268JqX=3jZ&mYJ*ioN$S&OZ9x&N$kGdN02z7pD6P7cq|ZOsotg zZF((y@-c=n#vX{`FPx}zK-FqLd zdz3n^_`J7U`})(z?e=qGTV6W3O~yJQTdebEQrng(yW?!(2IBSj@4x4}@_g~XZREGf z*aG?QQ#iv=zPXi4tMBsBw?>B|ThgK3k)cDSIsP;7&9lf>uSnA;&!SJ~LXYRt@ngDT zAA68P&9XT~jb-c!dO~X`Z!unkF&vD0`92j~wAFDG+x46Nz$DvrHLdmpl7p?!!%iu` zBpK{SZ3$=OZB)JY?81(EF9}*(nCG{{T$6hO%+2xG}cHtz~C2ju(gj@ALiOy{YETj2vTkEdI^8 zg5loV1IOWMlWEV^U47KJz#zgm@|R- zePC_?=C=(U@Ll5Q@H%jvj1J$5ql4nDNx-%edfeH`TdSOQyj@W}jI%3RE4~gHzXln9 zg6FP7#>sVWG`VhU*lg^{RP4#S1;mL>)QrOO(|LXg_GB&g}!(`IHX$G4BQXP5f~k@1>P;z6E2e_9q0MlhN&piSDDXyXi}@qjVc_ z^+v_jD@&3LmR`iKfe^5 zE2ou9pC+FZ^ivG(wP!EF@6Gu6n}T?<0$)LS0rGD3?u_^9u*J)5;N=)~JxzQ+@VLzj zXx#|j!wyX7;E&{!>zN4;#rrXWbE4rr{Fnd^=}5sa68~HAk8%{9`MwVtIat{1RR3~7 zqw0W0w*bo_Xw<~_KL@ak4q&O~?4Ni!sKo9lu8ogrWAuqb0_@oxVCnE)5TCd+;`iWF z4I(~ChsI`It2xEbU_LqnepCr%%?pPdt~(>Vt2`B%~3=DA86Pl5l9x#(^2j%29>8f!i5PIzQJJfi%Z z^a*kqyAFD&j!tXS5oq$g-v+*9al7re^-=cB-*WWHvV?kZM%vHAEXj0C>Mt`61|H&p?$N zV`qTT^dHcom>9##!>#qliBsew?+ANs_?CRj2PxqU0*@HMV^04FXt6Gi7QG!Upp|kF zE~oj}dg>IJr+Y{996*2NygMy`&+5BA=B!51H6FgC&Q5pSYGR<>z<0hEoI^u?M1G*) zn+1F>hM5rLPQ%eoWl{4|a*&}Y_{c`aB zFnhy~5&tV@)P3|@_|4(2A)v+W%yoPcXVnA4vVay9akO}rxypXJxte+mV0JX=#GLQC z+t$i0qe5^n9sZTrT*HY!y8@l^>pG{YVC0cuc&N6xcX- zmzL_DCjx5$^PB{n{mHMM3#k{W&8##+l5@Ipi);Ef4zver@v(1&=Dm1lAhrwZQG*717uY;CINA+~Ww2hpp!R z3-FwuZtmu(I>cG{GW)y#AA_f`H^+32k`$Q z_G#w5MvjpGFYvzY_j|+GV`>h+?e~A%$RPFX6a0ajf;m@EkFuvgf=WJrjn(qF)>DWca>EFZ5cgszaQaJJ-Zl1O67p zZvZFF=B%&SkR8$3Q{Zyg9`?tA%Ml02D}&2XAG78JF2@{+#-0b4<6_)33oav{k=F;8 zdF*3Y4letp6viGK2+q+afyN2Y0GEdGQ?-8=}<;?M+S)t&bfpmX( z-;lLM%Q=7i^pJc4=9%G-&JAfDf_Y~6V+%q$)1P|=IDdRtFi+Nwa?c9pS>4&sA03j< zw`RT9#qU2pWbt0!#UJpk0ESRke{f;Q-ZN0z)gLk`6no4IZ90IQC=WPdSYhlz@G|PG z!q{SDdd%p;*u&su-1x%SBj6?St-@G2c*!d)G&T1H>}g#HUiu9R#%=2A_rEA)?-eTT z<`29y7Gc?o55 zuW=wRrJ4TF!a!b{GyUO{0(qI4<&T^k$ji1YfAmFxycG5J$6gx9OKop|{ADI~Lte7| z+^bCfc}-b$wx9n46Nj%^;q~zgN{M00$)8^B#p=9}Klpm`XXUKt-=y_~us{4q*sJoe zKXRTITk9qHqi<*5PkE9*_7{PkNIK0QR}tum^3(jt!az@Wr~7&LxOt!M_Y1jspW*kv zKbUvv8U8>&n0NCTK4*`~_v>K8JpMU*V(e9!wO5rvOt_7BKMegEdy-ox&z=MgUnO2z z(3EWMVO31H_RiGBgZZ?b`w?&dzHWcuC>g#`e>L>gJHEe0n-?+uD*hP$mbIC-?a`TpZF$x9IXR2b;c(HkFy$VZos@3z#_jyYkfz7r8nOn|@zl+0hAG13WwFHx-z)zu?Bwj^{p>K@aOc%`@_}n`Z{nXN10tAC+zM zCh|)*EVO$!UZa&?(nzcNtaY?nn|FS1Tm29COlEG{FIP%i&S#*`pu=BCfey-7l;9hi zdA3;mY4%m)5GjNJja=5ci`9E zP`!F#m%%|A^B3*&7>}GqESC>{TFkSs5T6Y5w*h~=FMU7X&AD&j-kgs>jM6qI=&5?T zWx!reEVToA?O=YLiG||n+>&NJ%fWc>7+Ps&PWcZ^6 z{!pC1s3zQDFO<%!(b-WCzeS@A`;_ONS$ z?`Bbd!S5gRcPIr)4kY-<{ zu>t&+sC!($>+tb% zs|Wab=Tl<2^F93Wo927? z3a*uz*OM7zy^xOkq-2gqcA9Z$0#(m2^3x9l|)3V=CJ5b-iIiZdg zj>qD^r#t#JT79T|cs}yeNPVW+4~KqK{s)|G^qR7L)yqjvxBoV{rhb5jrta~>mcK6oCk1bs)zNkv=cn&RR z%o)DzKvTx}aB4@ImUXwV4Z`l+i`~(A^bx_<(cV;bus7I7+1&2X^iXMkzdJOgrpeIs zPUtrcUNmRJoEMQ#-)#dqH52fM?Sy$%~!7iVVcQz!&rAV-~!* zfb*NR=OBk1Ms9LoFN-Zs%K{(8-E(UA4Bhi7c@oi}5*jqaH+*6j0MCt_K{Wd;Y)Mz@ zfn(5+_C4U41Fz1V5{=DAZ^%A=3wZRNx6?2s9&Hjr_b zS7GfybtL3Vs}|rVE4Q)&-!FyrQsr0JQ*81;ZY|u&&9v&zvVTVZT04keFBlOw-md~0 zwf^SwrIPLVxwas$!l&$Qf5solxK4*PUBcQl{62{BuVtR*zIJep-SdUBA29C6apRbN zTkO1Qnb$1(-NAZl+kVSPSe;QBn{;&3* zgVW5jdAH4uHroAvJHW+6bj*3ou@h&%O~~{<4uKEyv$1VM;F%HRmw`jDtVX_1ryu37 zE0|k64I5jn&%6_zoC*#d{&o+I%4d&FW{h-jn8G~&4F61N&h|3``F$9;;>Xii{R4X4 z4ZY;|rFQZ%cjagenb;xU!qz;%!k2j8ll;RPKL6x1iT#S5!d~WSe6R_b=)cUgR4?-u zK27>am!VJRGoF0p4!R4usk^A7?kYYI+)Ik?dH~(!>g%e}U5A-_FXsL}GQJoYUoza* z!pDYi-W)vBoB217z&3${uEE@|VD2Ac*Cj6w2`7y6 zaxe~Zn0YI@aVzJse{hC$WA?t%PSlGIfcM~+b?}Sfg+NcXv{+tMiQYiZwQ-iMg?VdgzEEc!=d|J`8myOqCfg?0^>6Td+l>EMI& zk$dQ;|L^1f@o+c()y5v0>r23}hrXT!j_<--+rXpjW?8wnX&W##QM-5)KGQt*=Hn+< zP@|9o4C(w0zGw!Y2laRO@gUEitDBK-I$^BVX1XEv4!ba>KxmKOcJ`J1If72`;cDz=rsaaStw1O2Fmfw(l5 zj{iO=G}a%SMSt*KKi6NSrET#>i`U`6^)&s-S6NGc#9FcE>GK$UzCeE-cy0xrR&XkR zTt0IJV?nR_+V3SB`iYlw;L{AJvjYBUdCT>3zCejdOR*yn>D@^18L%`Fj&|7r$>G zLEq3W1)3T@Xbj-}v+YZF1$6>mbl%3a=F@!Xz9+F^>DVyoKiOew6=NybUilBz-?x0H zdy|bHT;1FMEx*O{SpEi!+o{yI=zay!r91dL1pW?#zmhQdj|~AmiUW9Fv-rD$cV6Hf zQ~%3*&!PXC#EXpA4Bk{%tGb9>^PB3;QtFCJK3}Rcb9bU|JMlNwv55brAIsr4*+b%& z*kF9p44#_-AFczpZ}R^;*gJER!*f8(+6If81FT)^yfb8f<2$9N`?PH}T*@P)gPV2q z{XOQd^>FdITGdKEOy8he>;Gt)c|9Bp1dEVmb2t1^FxO;=At@BU!X=5+I zL)q|9HvP)??FJ9^5)U!Y?!p&w!6D#mf-beI(Us_s!+bC8$r?U*D1jys<`Y5Ak|UnK zkpK6OKC=0mU(|f^GIuPj1E-w^utq^ly?bb(Ia?zG{3EBF?LXEZNG^9b_(vyacILMm z`RzJ#<@&7&7_{Hw7c(s{$ImHgjh)jW=G2`z&0*iCYLt61r&i{q8s$vpl;x4{-*&p6 z#oUg9pWe(*xu|UBsP*BZA0#iXrk2Bt_VzW_W@ss&xv4uo^&>&-6YyL9Dof8&Xj#LU z%{+rY5ZeY#mot{`9;juUkMRejmz8gtMP9cBoJdEH&an6Fd3;~)`Yy9_mGq?T`(CeN za~*waPt|?&p}fXU;3OW5{gr+X@|*Uk9-@y!$k@h|jy7I&YG$muA3`gh(|W6DXmA(I zqilth`)$aL^6$vQnxckWKaa7NgS#;NkjHpC$3jcyvn0h^+(@3TtUTS{HIjMJr);P6 z-ydr~UAh~d3o~vA{*>&r@ZR||K3}>Q{7mC_<&zF0^R2+Ec>Nk^J?Cus`dMbbe-7r4 zoa^+ew2pJxPrpleU-w-;Pwj~60h;g$-a=Q@gt245t{qXb{72@`UZ2UU1DX!)oi`d6Imn1Qq2}Va@Ca532il7Z73jm-s$g#wIhQMu zA=TY9GoSI`4yA1BOA5tXsa~upgAciwZRkU-G1RJlpWM$Z{C;ANSPS}4XFsJRqsPI4 z?4RzvmOgxhx$GQ(p5=G(W_p4?%wJ^jvlrcA?v923Z>;HO?v7mr|Le}WF7(@pK2zy4 zUHXuDzWH7BAu_!OevZH!GgevOQ8;KuMyHXN7wyfQYpq;Y-W}-PGpz2t6+N{TJtf_H zOu836CEeQx82Tg?_Hx`HF8oC9bdAZKg11y~{ts+gq4V=vEWC~LgSvif))VEnu3z<9dw{nI`?L>w zbcPBd}+0KfEYr+^-#pvOo)-5GO4FK?`=3+qXalNzi$ z@`(9*a{dnZls-8Ve{QUJQ=t^4iL!|oI7o29b{2!lq@uWQ^i)@sNXmU>>95ZxStaq%b6ZU>>rKBe)(G9 zR|Vr2-x}1TF}9Hl-gk0AJZWH;OsL+cxf{GepWAv`9@*C0Lms_M7dMr7-gMpNa4Ns; zpsfWC)&Dx3y~*u)493p?u^oFiWA8>Lck<2~&|puPaT!~4-^Uy+5$YR;`B)y9b~{vd9lO|E|pT)iT@m z<@OE9mPP1qIlNbdE{KvtNdivRn_|7;FZ5LG6#6yr1btNAV0p#uuX`O`==RsWfi4_W z^Ub#Xb@$#8#9)|RD1~d;rsHnu#u8gbV26r=>GAwS$-}uox{D1x!@*OcS{j( z=MisfZ~H9r;`3)C^YpbId~BGG9%6jmjrH`O+T-n(y3dz}>GM0xPk!$~WVI2UC>_y^ ztZGg18hAqRUy=Z4So4~|bHI_(Z1V#J^py!s7sJm>QYCljl5p0(b@09X=STW;*Hlun z?|lP+kuCQ=xkM~$$6dyK$$3Dz=9B_??Hsh0q`Vn9aLz^OK zBN{!%T(o|)5ZWvkZGiKGKUy9B1b<6IhkE1-u3-+_uvNw7&;^<_BNNj9p6CKUos=%3 zAN?(BYNty#=<*J-ruy4njCV)4dmCMrK$o@QWWV|x;7*`R@g?5$pO91RQ|tL3LKp3| z@RHDdwOU`CTQ42!xDRb*1M4@y z^Frq=ELd>zp_pD1br2s z7x*egs+qSn!n)t?K$yO$Rn0@ciFc*nenwvgjz-Jl`I9WKgvpod8Rc9W8Ao|^t=*0Q zU$3TIVaR5)$=59>fz+B>UH%1R_%QWZPjOOgRwae4|=kLW&4&$pPmv26^ zm@|CaWWnAET=uO%hD$>JHfk(2$C>ywMI|ZDrx#edKq60pW`fFb8Ur3MlshT z@XcuEs+`Lh>Ukp6@)VR%Lw3eO6C-!xon7VMJmIX?W5~xIa!OCq*K_o992t3$e%8{5 z_E^3|KhkB(sSB!(P%F|8TA{ac;UmRg-@6hWi;k1+wEjh=@u~JrVvfjI3w_)n`|a#d zK+oFImah)uFCNA($RvJVyzNxK6~0=_T(j^OkEB>XbbC6vW9GM`EBc{_XKE&zxaV~} zWA6mE4}j$ueu?!PqN?lf+xje_kt_!^*(dG^;JA%NV!7o)zVpo zH^Gm(!$PoNx2xjq_N9#-eU`GJL0v2`scw5e{X7Dn{{;q^n%@C$5z2|kPV_$p3orLE{4#iu5J-c5QizzzK^cYB3fEN`=S#MI{Q z0)`E$9p~LA;N8~)820ea8^EBL{{vtUF8&M*%JY4Y;JcI+SibIpY!3y;W597&aIhME z`ZW2l2Ih8(!$DGUg%R9%B%NKbs1}$EKHi~a*pv`{fCEE<&ZREfHi_loS zC_d=^(C16d@7$3neg1p>jk#kxHX7S;q4Esi13dia`POzk#ov@;FS&?${G#1K~z5BR*y z;!^ujN*U|CP{rl}jJ2QlhJs7Q-w|?3CFGRWyz-f`hl2UpV^)5$ke_DdY#3KI^RItT zh=;NNSJQ8I`hA9e4}oKH-?78cNIFz9w*aCX0msjW$p=E04*Hk9D5`tb-l?DP{;jiIB-k!ydf$E6prpqKE;3j9oHa2#Ek z1&?MyhZtk^g%0v5LZSmONGE0oe8#zu8_ila{zQHfI0QdM{Czw0D`$T45x2estjx#o zX#_r{k4{ccIr_1VE&5#>&~GPr#m_hNOGA#*kfU_uD1sb)8#>0%uab2iQ!|C_K7hZW zJ-Lc6?n1{JJ(mJMb&tk|rx0hR!&AU`Z&zw5vFjs|*Jr`WD#q#w9h-oC+pmKD1K5hu zbMkM@z3=!oHOyIcMY&OMl7yeb+?ta5)XAs3`{#lEZ4B%u_Fx|G_Qsy;48|2<@Q_Lz z0A8L#w-67-R-s!CfUg(OpD&p?#0Gfp!z^qqOhR&ZB*sb{g%Qv{|%o z(0;-G`VF)PXkVlKfVPo#J?%Q$-_yQK`%BtC(N3iO18pYlOSFGt-{lLmt7zBK{+jk# z+6A<~r@e*t8QQ6|t7(VQK1G{F`y}mN_F+CwtGg*y&@Q8`rTrOg4ed1AWwd9|K1$o2 z_P4a0+miij+81e;(k`Q2LR(Jz5bb1IpSFPZLE2B*&wM}aR@(b$H_+Zg`!wxcw7;fZ zNc&6LO4{paD`?NBy@NK7_7}8Y9RDKwXS5&D-cH+0dmHV;wDV}cOS=udlYa`nT$gCD zHzT>O7r%SRjn?ra_+@HO_FOv8xq8bcc+lKOk`R9t(|0m`E#%|QRy_Qoz0;W7r1I!h zX1xo!(4NsdLK*we$0iQDzdyB=A^iRE*j1-%TP#nP5v#fSr|0nZ=fc+|@O23}H&_4k z0x}X`|AgNZyNWS#kxS`()rOQZZ|Qtj2PHmvkxzUb)L_2vfOm7Kb8~oc^?lL-sx#OF z%wgs_1OE$LOh=!a^}r1Dgw~244|`*^9-qTHPzgEUoLuX(OV&TbCM)k!&hOH_u6{#! zH)rQ%pi_BnLjTW~dbHS{n9c|%2fao)=n~eRCHMCNXBoehk#j8}=c?btC;$AZtvwO^ zC!^z1_KYUd@!u2Zs532fM}a$o;_ScKm`yZn(~ZzjXOqncrMJ;=5j0!`4a=e7Q)^88omS$M8h`vRR(o@&`ExY@V;f;XG(>g&MwMu|N;M73K_@xE%yly4fELj6DU8qPYfY9n;# zg3io%lHax0{8?Wj&c_G;3ik0^|^Sw-3Z=}g175wrT4F;T}KN&C(J@=e^?X3?vMEg6 zXm{*dCFeahe3m_u`KT_dZND+TlXBD2Wje!EHJ)RUPvqIuuT^#Lm>1igkB`wO8vEnq zl*Ou_noIxM|0(;~oRnEt(AU-g5hR?>e8e=^4X)m!9`; zXAK-ae2`Z4>G#wA2km{dx5n}3VfayZ?xdiLsZnE{0)B&6wH~qoy)~eh_niFnZNyAv z*bS|7moUdO0^eTxPwT3)8k9c*SJcz*FSRW|K2phK*EwkM3N%54zq#ZlHnh@%phbuf6VUI5tGO^_CFw z!RJ}{p&CAjvn6ZdZOMLQ;St8}1Dy^6=ZEm5YNA~Y+VkMPgnlF|nb>jJ=!Sr=73Z!6 zhauqo2J?-FspWJVudN_Qd@g!ObrV6olBto{4PU15+mo#S4kB(EJWO^ITmjFG;I%XG zh({NJlPGl&>y}hrZVeJ#8gwK2e!G`(!QAU*A#EKb8D1u$cEp3&0ODy=URyq8^lZS**b6_ zo$2V>k^pBdHP@06)q752-sHrq)^oSVxy<=-V(?DnpUwl;>)_Y(neX+?donQI0PkwA z-gMxTE@?)m{%#5JGxU&Lb>*Wxxcsde=%h0bBgk12zM^QA%kRW{YrKXYCNFW{w2uBq zEivhBz;z7U>T;ymrFslzY#X*U7u#A0ys9NB1lA}pw($32V7vnOiok{P0W%n@8oqF` z^abB(Uu(|c-qtSI+7|k_gXhH0+j(ah|EJIC$`{4cv@xT7{c<<_yqocNFs~=U@k!P& z*Tk=3>O8b}GSP$ZwCaZ5!!~IDkz2D`D;BOWZkx_GQ|W`OR;%;x`~K z+7F+HP0k13{g4dV%(>4l}ixq$pOocDFsn0zmtGd3SRI|_Nx z`B>Wjbs6)!ka@{hy_~t}JV|mX9eBMm$A+_yVl_w zdnJ57&fd;l4V^5$;ny_I5)i(nPrnUbCBOLJu`+bc?B4Kg3c3uwaz5fu$sN?)W^2oz zpw)deD`{V#&57IhWN041ke}dNlUt018Pm~J^jkt7syT0?BXS@=Iu|~AD4?5kiu9g? zMemt$TI^g~n5*jO7hq>nurtc5vzI3J0OOTcdz*G)XH;{^IvwZe4)D{lGpeCE#QgSR z>n>ofvNikDt({2*pTf&=V7rOW9^g~FY51+!@;SQJ@;BejJ~d>z6c`fEzWDhkHn;ir z2Ri05%fO9d0T%}lH^me;Vb{^|?dSGt%nO0x2rx{cZQF;`X!rlfhiL{D`RNg4;!bR_ za+fBiM}B7g!TO;dystGn#oz;yZ4A!YCTjw?oGw7Q?}Fm3#~9-^=A!;mg11dmbpQF|>O;7px(9v2;Tex_=)WTRN8u=dH& zvHg4x(eeLd4AJq+=1{aM%Z8>`j+H@v*UOIC&d!rYX=K2?guvhpvU0F}OD1|r!{r^tQ2!Coi zat3TycEzvg!6y{jboh6bo3&4ZJb2aOnPYs~w)MFz@SvFD=={*8-q85id~Z`W^4bS` zaSZ;-#z)Fv{ZMnf^wMOr9vG|>Qs>vxS1j24ZD1FEu(PrYP2gR=jrO*@iLR0VCVdk# zvg_3WYo@;6WA5-J#=GCHQ>5{`p54oyvnj-C7pT@c#CpOXZJca;u1HUGLNxXfuq5)0 zc)k_BaXCB5Y#F?6_7D-r5sUjq{sX?5LaVcm4F5R!7rmK_sgZ(Smt=H|%S+(f540{y ztYm3r^;I#na&fM7(6!*ZM6$$ut^>z2gZ#}DepkJW;#_0@_?zaeIHUwQo3*!NoO>oX z`S*mJna+(Z=UJ`cZp%jpeb`>-a1`8`oJ1<|2fUS&lx^x946ON7x}~8re-s3UkDzN@85)dWd3G-+Ub)m6H_v8;$8P$H2cRqt5^O;yAqnU zJruW=T{=W_RtK@GL=$&%t_apdFvL>JBMR?2HcM}Tg zDafN%0Gq*Aps$O+;m$+1H3AR8lkbIy?T~5ttJ-I(|Eo5(CM9ZOz6R+}_Ve^*{13Z$ zV{?R&&ow){^q~Dqz z4EPTl(g7}N5nXPi`}}f~8#%%pwt$C(oCs%_w&z3?2g=va2CiekbsV@0FoR-8VpT4xFJRZK2J!ZYq_7~8ujQo>)nF4Sr zKSuhh0(?zk?(y?$iHna0GC$d#CZ1~o=Wg!-Ys+^3)-e1U{-%38E`o=Y+fuj)n#}w1A@=j0YJlY<=uD9K80qL-d$w0At7U z9;AJgc0cW1w0mi9q}@%cGe>vQ_NO)a7&x>aUT4c;Z(|YWt@FQh$87;H>+Fe^71kEZ z*Gt0ACEDWKbe?t4kLD)+N=NtM|BgxYf5YgD8Q804*)IB)J=D;{OPVmo#(N-C;8TOoqW{Nb<>EinXQS=2g+85)ac9@d#+1@e3HC+%X%(BGlTL^W9;DwB_RZGX ze#`Lp#f!DXS*i){$9&}{?Le=|Ptx7NI%iG%w~JaivuA~UX=d(mKGcK%`C0Zn#?f5^ z?*0CeG>6tX7URlqna(!H@dQ~4he@)pF1%{(W*6nzfsJ!r869j*Kw zzJ$%+6_8WJuVC$=-mF3JtnxM0RZTE*mf6=`bc}vVgl!xv4ibt^z?u^Cv z`E49@TT*oJTSoEAN~VBPf<4w9&Fq=0DHlmDW|>s8Rt{t zZwBA@+wb-6yKH49G|(9~J!uF<{ zAKN{reI3;Cz2uKt1arnoZaFbDYYX`W+H2FN17c~)UN~e&UkPMhy0I*MLLaxx!n*Vv+Q@e{Zk{;*x z-RS5vYJ7wTV&AGk+;<^dRD*{a=(-%5QomBA`jrbV!^Z~~sIggsi4i5Ievy>K9Z)X2Kp z;Se;P}w=3XiI zf9d!~2LDZK zGw9;)zU3Ce#?cw+UzUxseQi_LTM-LMJk4GOkRL>%BRZh9V!2uh0pf$>`y$isOFF-x70DhTZ|(@*{Xxebv_j ztK!%aV4WJk+QxIhIyv}_bu{+D4DchD;t%ng`0R$eKVQlouPUvNR04Ai{2{+nIf=g_ zSMn2{!XpthxoyC7b?akMwu-aYZmc`CpQWa*z4(w?@WP zt)G{I4E^f!r4FyVFTp|aLCP&E#h^Zpq4hCD@V2>kDAO|xFK`53|0lRXNi5AZC%p%__G zAFjqIOm z+jFS-8GIH8b_`h;J_q6(4umGx)5joi*^fH)c-kp8DB(HTGR15Ap_yV-;XASRM!Xge z|J~qNvB90Rt{$xo-@tz|xhV$^;@fz+`B{LQn!7$<>SQM$8Ihbj8R;n*VUEICSNK|T z6J`GMgL6mp+!FpTdBq1a>wRU^{Sb@9YIsiX&3iQ9IdE)zd*-h7zZmvP`*Tdq5o37t zp<3Ba$fRmmYOEQA-qyrck#Hd_3O) zr{v|0zHC8XiB5v^diICR4|!v#eXd&Jb@x?gA>JswJjK|(fq~q+yq6cs+1iZECf>!= z6W#f3`67I-;e&6Hc{iVj`8>vF4WIww^FE&>_Q3S!lgDQspF8>dj?dG4CNds;sB@%0 z@=8usUbX%%{vUsq+~#KkpQP5}I%%vo{YLQ_Iz;!qseTF{ziM@1o_|w_*cN@*4gd7! z6xj;&emee2S8C|k2X+YAJG>6P13hFzsGq4?Ta-@y8F)Ysd~w-V-<$k{r(3hH1m@$s z{~_mb=q~UGdPKZpe2Vg9=3sHUpT2~9(M7VX^*D#u>*;4Ax=6>bJoH=;A2qkIlj)c6s@+>FLdkBuY4cfx8VBkPX8D3zV?l*j_CfI6myQ} zLEwCl{tj`T>Y<>&SH1$y3G{Or{T!j6t-!UFJAXewKOLi=N9d~8qMu>( z)5!a}OXS+OSkvO&_1>xW{_yI)elcSx-q}{bx_e1~zX_kj&E?ONsgdSg-MKvY?cm*L zU;A!TpA+7VqEFqsf8gEe^etL1Va&D5hgw>L#|6L(t=jPD-Z>3e9gPV%Mb|Y&#GsC@ zw|>Pu53h!<&~p-F#@nR)T$|s}Suy9K8}XB=xgX%4kA8G##Z1OF6=IhrVUs4x9-*^z z52AzXVBQzm7tpWxUU|~D!HKyWeG+yRIE}AWII4}V7oG&pH&?eVRSa?@gpW+zt+N}B zhP|~fK+`YqjmSq#SL|b84|H1+xo7GBCeEY?@}c<7Lr%ztjstedkb`$zk599u!`yep zgvLknhWW}38op;9hVOyj*v;}`te;wbIt}>I4Q=$1{D{w8e?JA+Q^3bw-Zeg4=^$*6 zeYfkE&~^pyOocw$Z>M`e4>A6;$j6+b6o2k;%O^%Bywb0YPyRXmL^-}4JnFoopMa|u ziLd&STfd$7N;H#Ssd>xhmtYr+uUDQ=9i7F`PWr>1)%9n5>4pY;tbV+6Eq!gEFH=h$ zA+P=DGhH9;{e{Tbgclt*6A_P06cZ$!{v6Z=z6;T`F?_u-Mn$n27Hp*eV>=D2F> z%m_7a_T9#l%&myIy~K0lTh1`|pNOU}1!Lp|V>lW_y_~I*U9Bs=%2*4K?}dCkFk)qCr&b!>!$#^=x)9#&_+CN_^-w4d)4pEg#QkZ1GxyVg6LF{Vbu2 z1KGI%*->59WO5&g@^c3AV{`$q8eK4x`)3?Zin1(Dfb*AM0q3WyTC-JWPeFgIf%$sO zH#||cIne(Nr?lyb*P3t@ekweAHohrj=Ny z0zH)@)8{MtIev3Hd|%p+ced##^(*?>`E~kC-9pt=rlBaWd z;;N@wv+o5@x`QkyE-#|{7ELVajq=Ys3C}7g?9R!q1|Q7*q<03+325N*j%|EJJd;PB zXd5_iKFKU(SiV>RIFv7@H6GzxXI+^%qA=U|U)nQtD|1AronV*bf9+tNE)R4k^ZO1k zB*rrijyHf~0yZLw&6O?a;QPgoU6X0XzLIfI@F&5qawS_B%lMxW>wjJp@TPLBvN101 zs7B_70h9LFI5{!0N-iRAD7i77*L^@W#No=5bz#24&+O>SIDM==*VE9))7f9Xm~(Tc zLyIH$-dW_NFM~&W+KK*ayBV&$@^Fq;jmPd&&q&hoyDUhvMz{{`TFJy7&|Du!pvpb{DPcDTQOL z=SP{p{4doAt!AH`!jGLTOv3VAFAf{TgBGSjd8a$LRf8*nV*T#W@ zg*(J}=M>)2-iQp|G5ct+vo|&m^M?R$gm`5Ux?OpldxqI}DtRX@i*t{7&+I2E4Ew!! zSNn;KEYIw2_PRImuJvyR_|Ftk4^h~DXP5EQTTb==62|_I!ERCS+6=CAZp3`XD~f)@ z+{0Xbj=7iOqXpI9@E<#uTw_$ar{f-=l~XvUir-!RBr$%ya(;DFp)X?|;`#V944(cD zv@%)sUGyJ-10{rFX_^VF!bk7X>FUNnHc|XMe=Y%8vvp1MK zeLmVcKjJ@shNpXGJ~|f8^l-S z-0AbtE_}Ji=bO98KN{4W?>~8`$xqdbC*{ua*$d|~iu(C4+#A5s*w23{)!>GE4h#I64A$PM^DJv9@N2uV z|Be5zi1zna^fYj7+||Ik(Amc3Z}g%A{7b4nH93TMp7;0{@>m-vpK-jH^UUu^cHId3SA2sc!mY88W7|P5DofJMpes$Nx@$4PxCPL>}qiJ@1rLGD7B#X6isPRkx~r z0|k6I&m(g@pJF~?#!w8^fSh>T6FIAowV!P|D)2X?qf&WRexrG|VX%Ky@a!Od2cEWE zcO--l!Ebxpo*m>*4W1pA@N6~D>i)xn_SubI|>?P=Q;de&$^-L_A2=t*<<;j>%eVp!wBP_ymjf9+l$F{t=S8q-OE9(+-&r( z>*IC$NXsSv0E~b5iay5ChkNI3-dSBbg#F?0@>jewB<`Ipyt8)Z5EEzBe8oFw@J=~+ zc+KG1H0lm7k|0uo8ULm zM0I+qFR*fwYUG5xXl5TitXr9Tfxl0CCi$?7`P|K?j?asHUgJZZSLWl4>+(TwF!rF_ zvy4wLjj=oAFz~PNcl>=%wq~zlZu{|R4)lXI&Ex&2d)T=58TwM(E7;zruf@v;Q?tmr z4SjuSUMcAJcKWU6{m+z#et8=F zXdO5L&pe-E&l)Pk?|A`UP%Z?TPJb~(t`C3kD)x6O=3B>i)#e~)8*`ib89Dppk}t_q z1mj)8c<=JwA>K3R=;xhf?%v$adncpa&w2haU|0!^(t(cyXG?&)Yth@g(c3xc-p6&o zs$BdO^mYb%dqS|k{2$0c1F*lzdv_>j!2h-9a2fv(@qfw5I(*KXfJyg*PGzsJ@*(fi zm-u2@IcGEhtKp6LxrR4h0@i=U8=pMUnytR0*oAxOE0_K!=sWSd)#DMr^jy21L7vz8 z-vKY^9N)(h_@S&I;0Iv*TKrIYb_ag2dizv=dT>va)`9jjFLV`kP^TJQrSsV4C(bP{ zW^uCo2j;dD92vQ99_U|`0Bd7TaE=rBi?jdiVej8=|M81;2fV4JfCsi<|KAGizt&|r z1AgPNZGHS>(EJDgf~Oojf8m`zEd%|l65w$;JF|ZVSyByW5$BQ=Q9F`{{@ac}k_4{=uyMtp$uc&{s0_brbovCx3eYFpmCed2&WmHvFa<{9mKmYFpp!*Lw3m6 zk(N|rM}GGe?|p;!oE<474Loi zcx!ga4XKNt!v6n|_9wL8r&Z4GyR>22D`~fotGk@`V%q7n+t^?A9oi3RjsI4R|Hin= zX{%1m`7i1C-#Sag#+$Zg%=v)aEtFYEAIBNP`QQJO_eb#lS^pRB=kR`R@V?@P2%m>v!N6-TA6GfH7lXXfIi7iviI8 z%Bd&@Q0(J!CxY?s*W0?{|1CYKAI*H5J`6o8JNonYU?=mzNh5p2wLZU$TK!ULxvs_! zc$qnS{C_2S>mPv*+ra<7;Q#Vjt^+SQ*mveJ{d#^M93qd-+-H9_<-KM23X1VA;LSZ+Pz1M)@FnE!gsKatMB zuK6c%K7pHm6a2i4+V4{Ee{De53jVKn+To>~XRd+HhW`A&sGRWv{QrURM7JsYruDEl ziLGvI4x9C`DPKXi4ZuAJIRE=3bb1nA5}Yj#&Y|AN_kp*ofp15Ew`=+Pu0V&QPpbxT z2D{d&hkXs4U1M+-Zo}EV%pnz6w1>~gR}kkZ7dHbwkH8~^jCU^M3kQ;io#b%iV~9$A zyD^{I0N~q??Ne>QMeJ8wjqOuyz(H(ZH*BA31G;1T4%Kw>Z@~{!eLxv`812as9_N*Z zH)(AM--8_Hw}Q2y({ER*cY`OHwpRcp~ZZ%)0M-y$q ze%Qi^HmzvQzEg1tcsh?hMfttL$D3}x334+C-V<$zA5HDttkdv=7!yCJYDHwMsbzVPF;DPU0vYMTcsJ9(+i&jd zsdRsM6l?s^JU`k{sPm_mCh@(D@1=Y%`6G89pJ#2v`RpM}qxRN&v^@v)U!#&Um3|f@JkGa*<4+M8QB*AxOUJpMXU+gjY;rNvD!z1`$SJVHBk~933QEY9sw`n(i zXd3>TsqbEQin%8snP+t-l+M3*eu8*uEOXOZgZyKyQ)qqe!Q$jhr+O+OT*uSn+?3Pi?uzi(;wt-4gBq_;Jv}{q3G@O zQZ$sawFhvihO-S0U{DNg#;zV|#?C#-xCW2#fNXz0u$F+wUEomrzF7yWN?Vt8!d*Lu zfJb+wh~F;3FR=W0ruD1&Tc=>0HorRHjcVZBb*krKlZ?yaZ2+1{+y%x266hJ2)f=2`9t~<*WwQk8>l!w?2i~q{9YdRN1cfdBQ6;; z%Gh%DcNO?!;UDZ1CieSxs0FOWc9lUdw@1jtD&7!(CAgqo%&dfvnsG{kqlrf_Xy z`AC2N(jxe|*!t0e$Ad10Ps%Kx)WRoMGp<`7Ox!P`{SWbD#=lz$%;GV3cXlP`D|Ea& zdwAPj*E@mrdwjHC>MB~}=OS)8l5QB&JC+r35fOqzr3h%CN^sV2O|LU#xUjBp}DQ6M{wWD!-68~;lmVMWqPcZVI z^Eda}Qum2!&E?N$g3EZk#Lug^S8xW@OwT{cymSWCSl)RdOg@--y_iZqn0dXF!Ftt9 zdzZ7;%);Sc{VH7Y$4{usF}3Vp)_)TFKO_TXCCCB&YmLz4k9n^@{a*uYs^PyD87u*B z=8QO=xuNfGHvf51-6uLXDd}YJHwJWJU#WbZ8`&qJJx}s=gfICy!|7i>PD!cmD4bWX zz4voh{buv1>Q$d)(yz|OI05c}FB{V>PIWGp*6eQk;nK}xM?C#WHt%WeLuX2T*}Ju! zI?7O9!GoLU*Q_$Q(ppI3St0TCkni@t!PnkP{LTLgS7qpl{|T;If4^|^+*7JgimM-7 zWA_(+k5*@YR>0jQ#6^ zpQ}CMUGa4fQm@c0OS*=2@*s|pJ}&?+yMNN^S?QS?w_i0*4n@y=;ISEA=Y7#MZ~7>7z;oz;8Qddv0dY?myp#_wndi}eW)8&xKlir0v$vf56nr;? z`J%Hr@S60hd8g98(~@c5Dd3E6?Mc4|nAjr|Qw-G!KD`dynLWaBaF2#3m%x)VysUjs zCBTs1)Akpp);&yrx%3lCfFT~{GGtu3>o#E4IVRE@tm|}ud8mUqkgv*a_MLaQGeCP} z9tCHQ9{Ak_UtSAe&hR?zdkTEsj;{C+T`_|@pDut0q>nq` zhj#?uz2@pQ`%Z2ctYCccqA7T?4_Uv{-U$EcK6_I(EJ zM%o|H{*m^3wAxdC740J0D`>UH>oVF~Xs6L$MSCgj6x#odoaZ>ds>RO#|D~J{0j@+j z7mnm_vuAI*jlXgY{)+HDfcGS)0|PlV`vsxfV02&xKIjm1VrTr}c)G;*T@25QAGE%! zeX6p_qv z!Nq)ZA%60jvXbHc+xSZI?+Va^Dd<7fPCV6>dMcl+_N|YzP}c|Hvql247t4k z9zGu!m4jB!t{R^@1phXXi<|T9_FSf!XTbOQob`Vb^VFWmr{P)ciL6G)*9P`|4s*YW zx$ADiSFGr}azWsv^MEz%Rj75;}Y?V=QK_mobLc zamtye=BGP?ZlnLX^sh7U<%4PM{V(X*zo2KAd42YI_&-jsE|Xq`e#$lH@tHx)(co-G znZ<1}`g|7S?VxX+bukINEL8vC^-lU{-%dUHGSlpD;5UPhO1sBBA0N(~X~LOwhlp)e zH-zt6HK(YzSvP#nqi%@&fYuEgu;E*3yiE_I`{I4o<*D#Cy#8VawHMvs3Fg@ZEG57K z{tQ2mYseJM;%ULTeD;hr{L>xOXBpUeMzB}nkGeC2X7T-e`oE63sJ17*k6L8gob?Mm z2ZL+Xv|T_Ss%OiGo(F*ACg8Z9KD3weX8JJi7q{>6H+5~ie;657UE5sn*UJ0myfFGY z!rYHC{!!+C3|T&g4|5z@K8_C)LzY=kjr||i&ICTn>fHbDWFrYAY=M9anIY_}iV9ej z3Be7uo7mRYTP6hDaA}KcHzovJ>Xx@)vAy0)LI5R-2ZyAF< zA51y*nwQQ5Q?2zG*=ZC0QL+4O&QcH$>-$V!5V>1|EpPHq^nVd$5Jh@D#$5D{{1n9! zdB_#bRTQ z8W+o@t&v&Isq2{Ax{!ZPM5WhGIsW72k}241TI(bZ&Hc6GU9ExahZb&QZpsmcu1g+C z`Ne&VU#$6$qfDWkLAjXnUCIXfJAf=pqjmg6!>iD$&2xN=KFH5Wo(wJAmlsXG4jpRU zL~`a09Hct1cMegK~&&|TUOw-ep< zHOA!ejrVRFGDq*ug6DSe?pnsXn|CkZxqALzZu|0Kl#Nc(^OCvycs{|i6}C-_5Arso zOS_OmvaPVI*ke4_m3?Jnjt#W^u0125+Q%dEQfD!RBg|n8eLMlJyhTnx zy_K8(nB*(o#C!I9T4GWgr)LxQ$%fv58@jwix+zFAtc{tz8nI_P=xYt**~R!iq_4H$ zU^g&RoI^19Y6c8sJ8GQ!0x&RbcX;!VZKe6^Om>}@!`h2E-{JsxEuwwNFJoI4W3Pjg zLj$nau_q1>Ce9#xA|PvCo#)wB+o@$cZlm5#y_H(N;!D(zQU9L0k@|V+`>D53|AhKk z>RYHcQ&&^BP@hBnTk0v)#x4Pl=6qJ>T?vfMTzs5V0_&hof{&B6%)zWjKxZ~~*F<~d zqkg76(^epcZT#{?&lwQn#|5-`HhpV-?g|^fKz?V#5517tg*E7N;vPCP@Lax&@*TMa z+?g=my&Jx{5P6=+E=-HZ-O6}U`SSk!^2f%v3to!rt&Qfmd%%x!!%W^kV;B?GUb+#k z)*#k1NBrLACg|Wr&I!_a>#^@*n}V-a_A^9cqg6UCa24ysa7S zKFT=B)7rRb=V({wOqe{ynPc2d5fek*_~Gg??vo?AXNWn=CmPOv-_;T9gKXmYBcsU? z@c+~3s0SI(7--A-gGv#C5rze`&?Z)c(Shw*+|NjL4pJLWWHm;41bJtF1 zZz=EYtsmz;cm{hmTAf!4<4cUreqkdz{O$!?Kxkc@Z^pE=R^?BQu{GYH~6*E_Ft_Ybs34dgGSZNO#>?+=W2@`K=?} zht6}7eSpn7;PM{mL-W3e{+H1AA^u-Z-*Nh_p-*F@e|p}#M!saY?)}*J5IA*C>b`Ib6$ey6{6dXt_{kWS?~okl%}W3v%LG74zPBlyPDW9w{dGjjw|^7(ur^H zi#@4xjpM-hPGFqK?!)+^Df#uaGjmGTFbBI%CZ9*P!A@+8i_pKzIfuV|pmXYC?1Kn8 z@qWfSE2UR+QhHT)+@4SQ2Ia>T>EE+xrH{hUo&OYR&34^wpJ zNC+9WpEbURDY`r7ZSKxH0L<%i``js9T02AST~2$?6+4eFqP^>BZx#9`gpRy{Hor#E z`8QtvZK)X_vb}`3bP2kx1beY$0A&z`*iFe(JbN?tlm362|7URDHu{L8+R-a~E+c0? z#^-)~ZqV^pIPYC0Trw9k58qDH zJg#LP_vAZ|OE+J^Je23zik`fZIcTrzT+Z|D0uGX2@!Z}94qxJXn>Xn><>vAKM_Ks5rK~a5&iyF#kMnlm>o<2GujXSHo@m=;ii8N zeDwQu{C?1J9v6JB)p$7z@@Vj}_U#PluIec8+XF z>y@mLtbN9NyECKYs`A^b4|!+9?P0#peYAK-BFAy9-EQny|2>VPf}9B1)xvc2=-AHh&N=ZeQ3?W|C|erwNsDgyKerk z;eY05V!@rgk*T3G@Tv1wFvm|==l!GunGmCY`&)?L822aPaMduuPV^)D>h0{ZCj8S+ zqTzYwd&yya{|?{p2=#d}%JcJh{;>c3VZPUQ#2V&&;D7f4-@Tbt^5W3!fp=;?PR`If zgEFd|F>9YmJMTmo6Jtz1+nt+s&d>9`xo@|Evjt-5=l>XZ_;43~I|6xgFVJ2){RLr| z&Dd|CjlY9`>vwoL2wo0}gTJl(kqX8z5}ZZ&UvjJ-Usy3?@!7Zn{8x0_)#$T{_(Qs< zr3urryF~Dv|RaUBM}@Y`Z(2|Ju55N zo?YV!j!o^zHVw8@3w-RjG=}p3V!n32s%;Zm3Gh9@)0vp>5qw zejRu?1Rn6qQgc__N^xV854?J^`^Gnk>-lr926yt6meB|JM(0MGr=3PT3cc&oNb+Pp zn|`Z(dmp~lnvh*Pi=iL)qX(}-Hzu-sr=8W3nCq>-{*7Ak!M{)|2K*=Lhp6AA{wekA z)ZeEL(k;3rt>0SuokzcR&u5%9D^-`PUOzI$?jNk z4aSu%-9C;ygYq!;GIm2B@}?$?aFWCe>Nd1bHn|4j3E(Hro;U1#oev*k9#a^L)-g^d zFG2S=1?Ag4%tdQv20q#3udz=#A$)-+o#S-`dr3G_40_*4>0Dw#&zft~5`3q&yvCh=XQf+wqaWD)^kWZ!! z@^MS@DZMCp6k?MlITZYwk}L|ks-!B5oEXY|#JkI&>HWy}^O5f{$@f5h*T5mp)N4|G z6`Aq=n)kO*)Q)VB1C+NZU6lQleUwg$=JhINbymo={n@q=q9s!XIa6;;wLRFhy@v09 zNqLj<21Pc=YZSG!gR-6S3S}GRKPj6g5#whbRe8*Z^4A9roB2ecQJwL>8655%7)`cA zo1NGT4m@ecpgxT34a|3WKXMvVWAbdl#XR>D%43vf%70K~e`%bLQZ`T?p*&2vpJM0w z)+f2%xmn2h)k_@Lj?wnt#Iv92pL4FSPWA7_c;@olRg~qFpHf^(9YwL9dnk8P?xNgD zxtU`7p9gMr@5^vvvmxY*^p@@W=REf_;PwIj#-V&?>P@LWJ^OMdzh6kXk#Ym&ddeco z_bBjT3G`cX9pzfewplJJ64XSD>f# z+yb7<@}H4EP{#Ue2psC3-X)Ab!8^vr_i=Tl|E!&l?3>51X|7DoqrlKpKb||5f_yT2 zI5n>dN|Z8#l0#A4>~zXliiMrd&?|(`FY4vtqfamA@x$c%-c9?@_;Ew-*8sMPz^qbDb_!-~7HOYCei+S014*LAp%CiTd&jj$$Jaz7X?zjN&E4(K;C;5&_nx=~-P|my6ysPt*R#{o?5^iKr=W$U-NK6@GEnsA2UC}@dv){mky4hg9CB* zjrMG8;y~|ijr32&-4`<7#J}{!-R-!oUp$ljpcmuA+}GQAyt0qy7l*OC3{3?3KN~w3 zzGttrr*kx~0hHmC@sv|26_i?hqN{1|?E+`hIecc%-?ZEK{|e?98szzbQEEH49|M2A za})1;J>S_R{dW!Th|lCZR`Fhxvi~2Ru40$oFYf#M;vMyQ>Ar~Cm`@ucxI;<2d^2s7 z_4a(n1-!3y&Po3GF5|g9InJgsKARkNe3B~YGjq;rQ~oGxhMP)wR&(jbX9_{Pc3cbo zfiDn%lisQ*;46W9Bc4~)Ds~yDUW&0y@>z3AsT+%1r9Gr2ayEG*i# z@p%!lbTP4xR>nSvcY?o9;rF1tk&h#Jqje$W2|Wdk3}LNfC^Bg%aFdS`0&cc_s|SLg z#b?WMoL8Q~m%aiWkU(ZW1N}SvkNw1FbX`E6$3(->Lka8T(hvNeJWILD(4KuxYYWET z2)wrz*viMT^dQ-6dE-3#`pt*knAOBOD9eEFgTNbG*~D+mIr{KLobd$l#r#tElg)4! zeJD@F(4CLJR3G@7(nT?3m)6{c*ZHO|_C!;!qt7?#^CRxg)ckaY%X5+|z$FTt6(4DU zM)xpo?Io9v?8UsrSGt=wLLn|x=Oo6trPxgdPySkmX!~mLbXU9MUc)+(;-~QtvC?+= zINlvt$R1;3D8I@0IncKJoKxVfLD2fC@XuiUs;TJ4Qhcg*^sVkawJ`T^OCE9n=E48Z z@@c!0T6;gN9Uy$mPcq~6WkWUNHNGUWq0-8RmI3apfNYRYNiH7v&uaRF`IZ6OdeKXO z4m2jyZgr1uEPA!E3zJJonD+~7aw|EXSMvIzcRYDLhPK2vmX;mlbr4RKRyH#Z$!6tv zNG=;*_GP^K*!C@Nooy@iE5PU_YOMnr`uF|dU~Fsb1lI59d;TbAs`mPJAm4<4o!Q~Z zFVFYY{>)*Nv6KS%N_zXtlzS*IQw~rD^V=Xw2_;UO;u-QCR`voO+QVVyQ|Zh0FtidVpK5JuU< zyme&VS$+hZYklDZ+EacFGA1dTE{#Tx^JKqbTPELg0Q=5bd%1mi$D9YTnlqgkht9_r zooJm&?U*)deVQj%Lj2gky0?!9aWSZ=u~*@(d!Z|Am3kM~q<_<4t4_HFtvRet`Up`Dgb{kGDmczq$9;%pZFx zWB!`^8~9Io%w0Mpi2G{d$I2n-gg=yPQowlk(Vq6TS@`Sh#JwM-^G7v#xXRxX4cOeh z4(8lw_@gLo42I^QJ>}WZu-w> z%FS|LZte#j%Jt4>Tqa*DFrM0Pdil3C)VfPyF?B2TkEl0L|A6}6sBfXZo%$wf?ajY| zI!3*SdM5REsg=KV9rZBkYpDBCFQon$|NBbnUDTIT|ABe|wfypG>Q&TMUuA<2#cI!j z$DWa%!WOdoal`x{q zx4KBO^fbn({EcbU@*&Ew<2$f(cH(oRx6Jv$S1^aP?};<$Tsz`hp8l!y@<>eoJ`XoC zACo@<4=XQllx+N1#J!by?1hJW#S-t|#(a#OUopkKopHsneUy_X{@F?U9oqZq>p<{Z z(w8wR?qKtvrO&jVQ|CWOzo~!4eXoROf6bkoe>w~g0`Iel+3Y2+{CWN_V-J5TwDSVE z*vI=}^nvUv*02l@?n7oFJL%h7|I%;bP34rB`E~fR#K({F4JIjn*5?oUD8VXQDar zdJc11hMrm5(#zF43_j_$Es0@n9&?kPITc)pK5Sc}r3V@7yR>QP-L&22>mSA_Ia1Af zS5TJV^Z(O(zg*gt51Q7lPiN(f*~lm8OnDb(jiUZ^cL8Hw2c6~N+g_$Vz=iTIWW$;> zu>*8<3+*dcA@iKivA$gy)>8~T$^q5aI>nYMXNx05#}968_! z7_lb@T7#~1AH41<-JeIH9qFDdJ}3EIXTa;en|~q3qUU7;%jYRrdDydEeH>LX-$lSN z?T%35meqNh8+K_x{@K2DhJwLW;J4G6v;3#isGp-2e_OsXc&qi+hmj!NI5T)P&jtCl8lI9pqr7F=GrIq91Z{_bpX?bcPsE!o-|&2_-%`te_zku4 z1cP|j7_bk_*+BATegz$qFOytd1T8|Rm;KDAMIR30J)66&`3leB5V&LPlfi8m|H;Nj zb=LVnV4*!j!Eyb9ao9W|%YWERO?%M;o$%^n@DPO$wIb}W5 z15@tb2=GvXcEqc?LsNHW$}YmrNNcYW84%>xw;6|g$=Ff&bs6K7|EImX?UbF^fgSit zuh zbfv1=rM`?_b7{)Jkxjz3Xn;zRPmvxB0|r6+xs=Z#$j zeafyP2Ah-|j)RxX+}t+WR$L`bZ&v#EC&L?6j5X4dkv|_j#;p6VL2d@ml^EH=eQnT$ z@@7Xv6MLbF2kEyHn&`Pda9G;?fth>dS23QBz<8u1g;)7WZ}EQ&+Vkd~*OYl4KnF5c zx$`zYaF}^7&+>BTTMQ0~5x`r_)vVPhkLzUaNDkshHnrqcP*zDck2miZq`jZ^o{v|X zJ2Rhs{Y$ZnWK(-S%rIB+bJ<1jGRFlJwFqx6s?>}EgXp- zWe3}QxNP{@j$g1bb~ba64O&T2tm#>F=_=+{10M!)p?RvEZyWw`no_=-nCbf)u)d~fAtO#vUapZ6a4#P}V1m`^MG zAl;H0@6(@_Zu^>d=DLB8FSi9(#W*#$1B|nt^~+rBmj%Sq^O%o#Dg;bqV>rNQ|HHsh za0u`TpVRz7)4nf`KU@G|a%o?HjnH)T#y*9WX;y}_DhLTj1*|C_*mVF;bYwrV0{F6JP0_O*x2w>Ty z1nmt(M@webWcB!eZ^P5jZt|&OV4%E_jDBRhsGoNFQOqzxKM~}9h<8Byk#}4{1G#7yBXFh|IAj~s=?+@+EcIivKnYxI20kxG!k_+TjO|69X z7qd3p0Dhu;7o_tbt=9VT-0JDeq1C;}bL51-zu-7G->20d(${+z`}uP|Ux;qyZ)=== z;ky=cPQ-WQd8PPHW5Cx=n-@9I$q2S|&<8J@l77CDZ8wQL5bhJSLp;~mNx}E}^Im5A z79M(!^%_H~@?A#*i%yF6x3K

Zz<}vOg@1e`|f3QqHL2g0}#Z>21AS#RiQ`j2=f0 zlc(dR0u#G}HuBD2 zKWS(DS;&~3_!(O3?m&0sAUAc_lyWQO>zkM^_z&~@?+^I)MY-oImt&(Cf2ci#jd7## zhdyF{y(!~E>{khE@6rgfcWDy7k+o%B;J24^iRI(Nu3*hVI_26dCwX%oIt5)~^b5Kq zwv+wG#GADKD_<&gPcHmz*6!i45d0^dn1wwq|Att4D&{Ib@J#0YhMl*sM+|(SZRzwj zcti1&`JAz!cuI_Z6r+(}G9Mn-+I|R_1a1A(4|SK0p}+~{Rvpi##6gGLWF<;=yLw}d>D&u?OvReA37 zz-T@8asjcX7wEqQIQdrjZqUA(%Wo;W2l|ptDEmk9K=IHS zcYnH4vE!xWY-$ZpYxphXkUzs(bvx@N-^thy6z5s3Q6#%RSve%^xPzF7?tdk)6uGSzQ21mWYQEzz7DZnl)5}fm! z)R&#hd6RQWq`%BK!Y8?BfxjRPwy}Prbr_w!V%K4GR>&`DGm%|{ABp^6j5lT2;%(Rt z*Yln|J0T8#f53Y`gU5Aeu43j3%-9V zxPJ?{3D(AzL=PR9*aPbaxEs{;0iTNJm0KdeIGC?s_H_AknUygY`6Xt3jxlL{E&*(@ zEt(G-81((zxitEE*XH3r!CYPsu3*Y*wCpHtk`nCUe5%Q?bua_VFlUf7-ubV}ie9KF`Oshts=ThQsWy~B3}$O`RyCpUU3=l@Py$iAv5pTodSYq)o_hO4~5 zDEvH$e9LRew^R&lGV;BfGl46BGjWfS=t%O`;(gtFU-EM;X}|DJ-9?Mc=YP)VT&Y|s z&IhjhaQHE<&hbtRgZJzEx;cBiHA52%g*T(ljMpW*(0L^}$gZWxu4P7c<#shdQ>;zY zZ3!P^^5twBhjwS=%h4xrbi<*t*Ly)5L4LtMshb@+#yjKDA47-#zRp84I?8{)p7*Z- zH>;r^Yi~t(Mzpo+{q#IUyIv!`BOA2>7&+)q&iXNTU!-K%E@X9`*Uu++<*d*i60Hvy z`m6PLv=aI=dripGN!?f59yVvvK8jqk_tnM>E%k1ij&CejYu|&$ALE{JeKv9}ev2PqftnPoZT8T`08;W#f^ z+fBTr_d?8Z20XVDU#J6~j^$*T96<{Y@tb@~)|L&u?jjFM@q=a9UJI}zm7^ruFu7pp zxh`nxLB^oHQHl9I<5hpDe5MW`PWUXc!L+uwA6rQ==@IbUc;>1&&jiLk0T@lhhM9=` zpTt-v^>>n!>3i}Z$CLXB-Sd~#v;~=I=oR?gZS56sW8t-*Gpel&Yq_lFdyQ+?S3RF4 z2uI7e>){>I!%lciK1-wHY>EmG0sbehRJWFUZH=Go)8v^xO&%?N@;v=%ZPfJF2Hvn? zMRz&}&c^f&JvI7p^4Bo-T3cpcH}_$UHMYz?d^_1Oh4^-}BjerQW6!ks_Dnl*&^T~0 zZTT>7WImFOx?gi5a*_PUx~<%kJPFxo_X|&^J#KkpcMCbMMho-b>o|YQ4C!x8BktKd*$Rl!N|Tbi8zg zgDkOrxqNcTMfv5@=~{n8$0e5{|CT{B$_u=WzLoz}Q>gpQz30RJ^NJB$I=TK`az7c5 z){ukv(HZ{F&~M^I&SmHQXDQO%>rQZ{Dh9m^|3f~9WVrGZy}YenW?zNkBXJ4XJyYSX~{Bs?UQfhAu~8D!Q8`~J=ohD?#s^;frVgQ z56#p7$2c%7W-VNNrrgRf=B%3p*Y7FG;4>$jtzg$ektb{&QN4s}}_2AlH%?%=n3`Auhr z$~JtJ-&SOmn%u3o`7Ob3cF(BM{qss)d=is0p*1=SJG!Sfw`mOYB;U{Au+8Jq+5w)7HTf>kl(9ddsnkAAXd)--odb^jwQ+4r zq1mUo8=4x4tkpWvC}izkV5~Ja(TVhkoDv{QkfM6KhN^{kbPUpmF(= z?>gb3u53rsH@ZN!b0t2dbk;}kmtyfl(OJ{m`n%KVyPi2Z@K+d}rTuRc&{?J(r=R-* z>-W%Uv-Ut)JmOfC@cTx`+%ufp^wfBt|NME%Us7N1Fi-7G#&4@TSaY&FnZ6#QuYvS6 zg}!v2>LmIK8(rJ8UP0b!2^(taHf4=>>$7_Ll^pbFpZEp7xgC$bfA-6szqFZp3-YRk zdM)*Dsqdiv4fWO3zoJe;hfh)Opnih-PU^?0e?VOpumgqD|6`nWqm8q2KFz!N4gFGa z*5O~tTd|TpgYlXf&`b;*%7!Fo-osy|&kw+~8kp+bxdp%!Te{AyDKo~)fol-g9q4t% z1lE)Ls+fQS9cM$ov(Z0=(C+#0!#v_YHaFSYVYj~1UHU!7B;EfVYMURI=8wU<%0CN> z7SYwRN1CvYjE-aMLAyqHku4E{cEx}3m8{t)ZVHVBaaVw@zaz_eyaQfUUZ$aQ=q+=7 zuok_3GxO4!i#AtbH*MuIoC#5*TLZIdpErS7 zFmEB2Kn$KDC$D({JasmB(fnJD?CUu< zz6cyAzvSWA`a7cYC3Zal8jLXRS$t>WZhUTF+;KizI??!ou&d?y7-I>ng>AHJVaD%o zElsV3&1YVJq<=&AZJyn(wv2y|jb6rindITm>3b5nwd{9Fu-{2>%CGUBY{T3^UI4tQ29$f>os?J#_o)1Kp($G7sgHt)<>hZT&qvpDUqP@kI>Y65u~RWIM;o&k~<-AC_4B&|IEP8=M{_ZzBUQ3vV?3aHwuYvx&{^@);A4#-ea10&ryn)022uJM$QuA4? zxqQ*X(SK(?tN)wxd5boMr++#h&UbqF|2m&g&wS2jJ}v))`E34g&gbEb`P7qVZTY9d zk8zkaSzY=A$uir z%LB6T9P9ND{Fn&vV@;4BS^JQ@ z5&d$GkvWTLEo}tbJQ^JAIXPDVhkSA^SdU7s2M%LfOWXn<4lmJ8MFt$+9qP{+J*_!Q z=FCIp%tYo?Gbil>jM7$=IiAI5tpR0a%y9y3ik3gaACzm@(zzR;J$z`@un=u*YZ1Z%-% zEcz;fy>Ke_ytU`vMu)}=lygg*g83_6^lZUrV?wg2X70&YX8|TA{|uPgT-ii+fwyLa z+_L(qv#Y!GRmLWpYCH8?M}f1(cOEf**@mqBPSv*QFPlDe} zzC%F1>sffu%Yz7f{}j*KwzU>f0}P+g`^0pE`qAR~N_gJj7yKlcuS2`|N@fgk#vtFh z1y~5*ne)sX(`EFP%475M3T!`j9P9NHAL`|1v%bon{XCxQ!B=1+KSE8 z;!5VReoL%PZ7BBd*vc8OT>I;CJ1}qPwW$;H8tX z-ozahZ*WJ&j8JJ;4f7oWJq(4v9OlzH0-4TvdBdalReV0Q!lTIwZ0F3jd-Glw?U^}N z`+iQbC#Mw4QtbL#`d8e#i!qL8e)7#UR>l8CBO%5Vd|&6US0U%@*=Ujnuh9?umehGN zihJ8OeysT_Cnzvq(^iKsGvR0XFv?%H=ZGpl>jv5)pD_8mJl02OZ%ZM$p1}LLVtifT z{XF*m6~OxiVoq23vGgOX*@~_thZ4||aNY-6Qm(wl^8)k}oQKwcgZZ_>U26zEm&^0) zzy0feZ~pbnUu`OfJ|7yB&)dNm=NWp6CN~^}?wI#&Lp*Jik|4-pLP zezAY^`KN;Uz!%NS(3@*@zZmO^o{tz!exJF#BRIfU7cn1XY?JcycH;L423B6@(T5o` zbF==1(PKXUi*8!VJ)U={EzcYI8sPb2^u$T{pYb7mJC1fy9s+WfQP zd-QGFe62L6IPVDg)`kn$Ek@=?TUV=6#*zHYV`? zS-c;V_qPEz)0QvWs{4An#K;TQWp&m8_P)7$N9RhdVeHD?T8k}}i)>p5kLiBO2chp? z$hL=wzvm;{Hozm|heF1oduk=ienn1~WZeq*BRKwA;>*E3)8gG_U5(w68&D2=t%q#7GwuG)$cWF}-)YVn0bbVrdu?P+Nr?Uw!?pbd=U>hI<@?yPG)KU9vzULB zxtnusz(4Pqc*4Qio=u+Cj+L|M5y7zoxhC4qLB=j6S6Z;#jjg2pA=s+Ks7Jebj8FIW z^#Z43n0G$(9bxWGBYSM(`xy5Q`ZN2TfkDbYf#&7A9`I?m-j{<`7YR>C)o0M+7V=f4 zC)C%f!Ja;oET733uuGD2fV-vJa_IJ#(5=o>IuuE#TlvT)mkqkr-8h4p*Xv8hxw;GJ zN$9o|x@F^aGL9Zujt)_NoBFk5{0?(_fVtUyf6S*zabeNd%fw@YpI_j!)!)LK{GI}A zHtC#LZ}=8?=*}{&lZTNB8vp6Lx>tT{clXKyKCf4Now<=$vO>J7K4o7jZ&_!8C-CtM zJ#_eVMxLJVm_$a&<}Cn!TKBKX!_NYTTI*M??UG{n9Q@T{dy#XPT#D_*3DL=A^lM;9 zpClR^nM$5tvW556e+6)td{KNgL?NcRQ8CS^3+?mHbF$lc?strH0y0s1QiAl_h^(q& zeD<8%dzpvUk+dE)obhR{*hI!wZO`EKT6{6RYjuI_wi|(+(FeS5^a1a$qi@j=B?3oUJ}M<#0w zVPG|$@o25Yp-ty!vvyZ& zA2-f#_Iqz^xlPk|cCXCk_q8p3+;#L}aNX$9qULJO3W3kOvqCsqH!{uL$6TA>vqJc6 zzvc`*?lJm-vseOiZS&{aN=?393f_vZ2WhI-*8w)C9-l6m8WS+cqmN*_8)#3yaB3Y4 z9yE3}I#@aL+N&F!hxQgo&#jF~&)nE7T?hRn>tpF>TNAt5Ha61N#IEjT@3U#6!@uVW zx>x?&!dA{)9JaJ42d?7G&*Z>K)=Z8&uUuE)oh7`ei17iJDr`vc$-F^~6FRLP%2?6Y z^N)9uY&3dz#pXWleZ%32R`TqT<9^;n-H?tmjIF#ik2^t-X)VaK*9M5z2B)pDT@GB7 zTfcz%S!&6#a%AlYD_I53D{=a{0KPZx`*|o@Uzh!}0hqnRI=Awb&DwK&t}8ppu01Qa zM=)yuUch0Sfdg{wiA*?T_cCzU0UTb=ghPPtQuz0EV+Zpy@kQ`&^{jIJ&SEZFpF4}W zR6q-gXO3o`!}(ruR@s-ezz(_CtoeNn86KQp2RtgDbu05ryZdZjug~0lrum%$tX^Y| zgPG&&;Q9^b_$G5S@eTHRhtOk@aK0M?4;(O@EJjW{&~&Ns7g$dX%<=7W^HylD@P6tS zs5_~N8I|s#UQQj9FF~CCPwb5yw51r}(dg*qV|wT)!Fa{fQO+$G+3wj+$l?^wt|{^E zmp@uNzg9cGpDG(#zNz95vKe>D7N+grVhj8gyIZvCaE8(y;!}LjasBBtB)Z0CCnkl= zHusbiku#&S8S7oqH0Pn?mrAymAm4PiLrZ}t-wy+00~=rW%1027>%6G9$t5&-uIxG6 zKwjcCA$&sYsB58BL&KpGSNyGb?DA0P74f+4rM(6om+yEjJRZkyb7Eg0R$J0^QF+da z2JD$gxUU;4$ysreJxjrtFO~3$&Qh4(ru}Y9&G}G<9%9Gg_mR(ryv;)14rj~<>9d1A z%Yl>5HJAe24%6q!z)pU{DU4t7np5#}Kg4gC${FS4EpJ-1`O3yYb$7T^-2iM3m*OY2$7yI$3<6ab?3ys^X z_w@1N^P-6ey262mb#9r3kIpPp%she~maY2)wz_Djp0SAETaUrcFODYvomharZ>ODn zXe%Guax!R3=KysS5|2g)%|m~;<3A*L_gg-Fd^sa0;v;xHMEuI3ewP@&-4BtX9b|%X zMH(23k#qIM$US7qFk~QmDt`G#Z$HEc=3{gN?Z{4#lPlc@oY2E*aznm?$q9k>h- z1J7KLOHNP$d{g9@e8tT36b_%A?w@AbaR-L<(7n-%z+JLn26)G|B_$BL0ms(w2=Ydz zy?xezo;|E4mKZKh?P0wXc)Y?`jJ@saX-lsK?73He4skl+brt`I(a+N1@{7d}htSKC zH!tItzKy)mSmWr~pP<7t*NjS#Yet8o*H||qr?+R_=oVrJ(&2-c<1^@R2ivqAz1Pm! z`t9gDGrvaPZ^1vm3Eun={r3@a>my=RuUj8gfPi9GT}q1%1fl4j2fcJ*9* ztl++pzhXOR%<{XmZzve={U*MZVu#Q0j$kgHv}gM~2@M?(43N!=-Mx5}c4lKw3O4;| zhkQiz+hn((6}?yB*)(S((I6cQl@pnVaG1fUTf0C>D7Ga1acFy7)7n=|A}UDbSnz^C{Fv&I_u9Fzlw#?a;B z@kU@%CHc?3I^_~|FbCGN%|2ztF=WeR>VxjHyqpEmxXBAcrbLgcNWK*I>|+~`c;v0_ zl`kf`S7tM}5!|^rpF0V?n+)uw;&w&oy4PZ*0%->F)C3J#r!hyk-DHwG*ao z+s;m4d^GuB&zqTre6Z)uti^_18!k$nH!}wuy}-PTd_Xs9zm}B`SK>2^XIr5=bKX3C zhmnnQCphnorw;bn23}*p)9(2l#d~?c)84Oc$0{6Y?0Y|F%;rog@G+Y)&n72@oP#8L ztT!%f=;QVVFUnmU&6pqX$NURw&HsMt*QkT|w(yGDvHG}|-)Ht=gL_XekvBs>1<>IO z^f8WFdzOs-9KcO*zE%c*K8*XMVEi#-`;I@}YpLb;Sv;rc=!A;oX&H26#~)_Artc1q zcH6MYjc$#5cYkRPS~D|qpw=9IAMd&Q^lbE2ALb;THIe#g_n!Wfx#4?w=M_Oeb!+Q; zr{?x7^O^3?Z7TJjn49H;|JC??90bR&b!Y7zIQ#$C_`^NpU%{9Q{PFkl$1na{f{ma( zi_z07lCQF_(c&xh{j`eYR{#5;d<*CKd6MwzV)&&6+(Bg~z4e1T+oRzfMbQl@AB#+o~7CHbrwQ}!~ z{ps>RaljyNo;`r`)4-?rlYNnOd+Q5bt<{LPz6=bcGi+Pp*Vb8H%<~y)lb0Ki6F;c* ze2r}8skrJ=?7iLam13(poAx05cn!h=Jb#0;7f!;XTN3o4RVSiJb-j1$9`?rCL=gVEKke3l%o0xrQm zBDAZvujuE;4tZa?qL$~(I-4JRME)WhdSbMKQI+4ObZe&G$dvKdFqgLjd}4U7(d(<4 zzUBc(>#ub{7uusEe{GliwW#N>k(X4r*6Hh>1w5nJ!^V#k-k<~N68yZ9i|9wWL^eL7 zIb$=-(S8HzSd%k^4W_-1+9w*60gXIoWF&Z!eEA*yw}2DxY{8r+)|Je8q``MY*Jkf5 z_M_eRrFDvF;23>w&PmgmBNNcicZcwC=~Mb#HrF-7w4TJezlD8=2agWmVb05%r}MII zY}VN(u`ClOX}%$kSQ9pi&dZ9;Bj(Cj?b#+;pO&8*v`Y+K2W*_)z=v~HOADw)*S)Bf zCuZfBXeO2;d;(u!gihY(IA^%q%vhZ!6UVAK-Nko-cZa#NuZemvZ1cw6$h+dZxAA3k zhVlV$xq*F9MZoeMa9Ip4iy5PdM>Py}`+~~?a9N0NV|m-+^9E=-2y3f<>{%w2@U%V4 zgguXSOT&e!vrN9lytY+(I({p)?tT;>*?9)rt+sX%u(UbW9pFy!olLs^HEqf7K3Y4K zv}5R)b`*E0V9rs~M$i2);+rPg(D~6Ck7Sx++EHT*W^+5k$_$W1M&Jka_nT6s-GzN zYi5rGen=Gj%iccauiY!>{H=TCP(Dx3W^EAqTY*n$XoYblu;~-N4-S32I~JcHd?I7y zxtTtV%TLvFd4BB8YaR7hHn(}=k+IlUig0I?1|`fZ@hi{@jmL$%kk%R56|hWk(M*O=d%3g*6^I6IiJUM z=E~LL6J*i>)=hPvhT;j!LabFV#;uIyo?IvS2gY+RdT3h{K#?8YS^du$;87AZUsNd zD%$v_a!8;V#f#VGdTYnZ+uO|l@>l+WuPndn_2TqA>B{`z*#h4APKTj`JHgX<=6Y8i zvXOa)nWLfImNQ(@gU*Nj3hVWfj~5HZ8F(xQK8tWnCaas^DuP-^I1=gZ(8~wb%fg5Q}ejjY%cRMZD#m&=H5BslyQ+GQ4;*D9E?>y zJmgzG!~YG?aGd!($NAXVe5ds?#%b_HuCmF^6Mn7T^B!k21nH!f_l+z^o=KKph`hD; zwLOZw-P%x)y05L9d0bDCPbIl#Q7*+=w6sdv$%^1m_C_D?27X{leDGWkU{hj z@cFLiFquSVkc2-q*@%VqE)>%&fN-dxN=hVvCUrAk0eINCm)XS-_rFN;K z)K;ztw$kjlg!T|?ufZ6K?jF60auem> zC~GNeD26}VHrmpCU{{ex*$q98r;ZYLt>GCxx0X1Oc%X~3Zm#D3-nj1X zg=QG5D;s6a0B7nwwDAYdBJJiZjxq2?H#9z;IBg5XwqxIUjQ(@_J5%rD9mQE$lb!Pn z@xm%}?9brmR@Mn_rgq?^ew@dlzMYUW2mB@@136wjw#9k;Q&-TI#uCG?S#=EWQ(M^G z4i4l$IkaczUB$fT@mapoQqCD#!uxaSHwJ&qJ&yOOm*{t7t-fzzJQcJd-MpH8$O&jk zKA6U$|8;NKV&EfPR)tL0bNBO{k!3uiT-GwDPgg6y^P7>6b}VNe1qZv>3wD?0Bzea> zt0KS$JlZ*(Bl_cfpnG{n^um11ZxwuBM_)fE_jE%gc8zlJR&4G$TdpRn=WMx^_*FX7 zQ!)4i-?Kj4OkgjW;Cm~dOOX$fmGaqZ@sYIFG7lR<>*ik~SAP%ZJTb->?R-Snnt$-~ zLs4&icOCVyjM3=LT5sJ|;}yS-g^tRE188mrb(mT@Rr)0YE`+~c*g1MeFflX@tPM?5 zYj1HTZDfw)R{9t3n*J+$;-U5o#}4|GUxP1_v_AT-&hBkX@zG}ihu!#fx%hR;Ng=*c zx22`XJsbTgA6%;x| zM~6$xdFSuEW8rZKJ+FI(EIq8Bf?b3BkPkCrf-@EWk$o@9sUVLMy8n*3>(-Oumylzp zy=>^ll2Md%DL-fyo0W{D9zj8mmkg&wC}GMViu6qg zeba*OSyb!koN&3fH!p;)*#`}UsdMa@eVQ&G;n@VYa;B|v{=~=UgrZ61w|7Br4?}nL z&@%RN^Fz?Hxof;X@z5g8hxi{^GVLmrNn{mpQkx7P^+B{s8 zAMe>%5#sm3{DUxdcq4m;mH&->os=D?oMG)D(jL(q=6X;#V~*|2(a!H`=2y$PuDYk# zqj~RcS>ROiuaw_X{*&?>istew%F~pmC{I$Jpgc^uMsq<|RB(Q)=2GU*rG+?1=9wMY z*d>`faVKpormUtkP>?AlvLBFx#zuO8TI2Zzy+w2_b8WBZlJ9r@PP0uebPYx(icts-n5{8*S;Y`2Z876dCuzh55Q-cGq|gY zc!QO*@UJ)TN{=oSi!e4YJSutze&)Q4;rKrh<{YHygMaBRwe;MW>rA~WHP=EjSJ|kt zRb{8jemH}2I^_$L(*sjH}$QkPOMp?-_;$Ei0`|CqX(y3F|Xp;tZ~jqZcqWDjiX zm2plgeSJm#FTVA*+>GDA=?LOhyCxHVXMDTIJIPVNbPw%mZ^zzp_I5C@PICX`>&~#a zsrKx)a^#nCRA#r6)67}hT1!!!2OBUMg-3K20{(C^+OGSsygTO5RmpbzDan+b<=_!{ z(lMHxKxF5x@yHkA&bud*i^)C&%I7__~kzS-_QRK1LFzE%~he^T}{}L+WWN+ zJE0TYXiWpV%cK1c-`??gacvBnir9wuQF>}UFx(F>HUUHJaeNpUK1giD-fg;@-xK_% zJ2-=MraN>Ohx(Yl6|PO&%%z>RvAS1~nmM0PiSYWg_ptgZ`UD zo5QQg55zuKjQtY&PQ};*G@dzE^}B(7r3+1bkhUHqwrhCbpMNDVGJXN;E=L%L_UTB* z-IvAM3-iA(kC;>;C9v*NLjRI;gPDJD?!o^}EFv(rrZc?rVjrU3435`PuckKqRqNUR z!grkU2;Wiac8wbtM8K`qLs>sa<&0DTC&hx|)Zepn0!E^%4&;l@@e1C1rMrELa)qz_ zwEM7;b7}rboN;LnSa4i|AM3%}%-Oa>DopHv*y=_nI>SB3-|rigr?tKfy_Z-?FVPdQ zDgb7RpZ=UZ^qGBD(`RO0#t+)Oxzyr^R56zb^l9T(*7usvKGG4iyPG+T1Q(;APkW{` zdW`#FG~c|meDrhaOKXy8^8?0ay*u33WnSD%J;Uwtbzcac5|95Uu(y7eK3kto`BRp! zg|`HAH?Z(=(Z*-_QI>Y))68OQDf*=?-ZwE2D+?quhA~e06K0&1o_{8KxaO2kOc-kNPlhpF@EZ+awxW&tMyqpD-Hr{f6)83`MjMvImjdwlc-N$&@ zr`fF7bQj~bap}t$Z_JDrn=mjw!A56wWsdt!#w%a{4u9N?r70BVJcw}EEeF1`Dcb30 z`*k0u(VO_bMtcFUErz#LB%?fsPwk$^xKP^Gzvo_P?|*n_n-eQYtwWyF%g-09_2ipr zZwmc#2mJ8cqozI9#GBs?<*tyNyOrOz@Y{3zme82^?G^oo{5SO0=*a}uXpKyGn;5_Z z-}t6H@-dN@ zHzW6rO@v$u^soQ7Ugy(Nr4N^}o~$_+yZT(lex8(DMxhv!+RTV-fe7}ydOJ2mV6$^QOE;0>T^W?CdPnp;EUCieKe?CRb zX9KX&SpzLTZ2DjKvB#hOm}`&!>{`c%!0^c|d~)dIDZ9>r{W6HT6DukS(rP8^>{ZZM zB-*3Dm;-sNiko83F}G<^=M|mLnXA23v>_QyK1s7_r`m&E8*5wABM;##3b(RNE~brd z@cw^=-6U=dd4-(~tP{i6wJCdgIgC zJGu+Kys)SE?vk~4Z6A8?qwhcc(#!APGU>qkW!Xc!+R>Z!d5q)bySG>5*1sQ$C&;@9 z_1t;m&$*4~G$zZxqLm!xyp%aFW4`qnb3TKyc@!{=VYBapEwNKMxh;t}y#p@B<}( z;udeLPfM?4BYTt|HnvrFX!`eC!LP~>d$Ei?RNQTKHE@_nE}%U}em%cElFK~+d}q%D zKfrehz6-`IWgD(!?8*_$v_GyypNXc7ZC;N}d4hM3h-^;jKWi&!FUzg8p`0eoKg93I z9h3XKnR8$ie;54{TQ+A9zQwtOA@F`1-<=EX0TK|5DKJKauxSA>4=;GO-@&TMF> z5ZckXR8^jTY;urflW6P)-q4cruRHuWw|-NM{wL&<7&(r9&!sP&^`A#>L|@wOMy5yj z9@{&W`=|DL={ID51u$3KXt(u+8a*D;IS-;Pug)4wv?$4V!0X z=~}jP0$B>YP2NO1G%kBY;h@&TJ(G#`AH#DvqbVnQ*^zY;Ae%4NlnUC&7 z_w3MochrE7y>(ymk>1USONDdd+dJ=O{gOPQONZpHP;Ta#ulVx4+M}H|+BExf7_VI$ z)c!IKdF)vq#K-?schMsU!UsM2tp}di&D$ceUas=rUazAc-a{^#@uYqa=bGQQ^1JTE z*4bd5uEFjdowGu5C&h)#e8L5;(YNr9v0dQ>$>FO5_RP!3mJP_3NAG~nLhw9e>UHVI zp1&Q4MHn6me4Yz^)I(o}F0$g=-|X+hjqi5y`8nF%%Xy%kw?lV+yYGGLv+aI&x|ef# z9d$Ewd=2#vsO4{zgSX)R{>I)p(3g|CH@8xBU+eh^GZ;?`{A|Vp?L@$RJnKp6fv{0?rceIK;Bs+qrFY<>4A z^tcP!BgV^n#8(6Foy1%vPfwuUO(AgZ?Vcg=Z&22l zakY8+4tYQxYR{P-FJK!fNBVcYovF%`)*7Si^31zuiESId1>Ilr6$tH;O`25r2<6k_xi0|5&hvbz$L)%72Tic?FJ^fG8Z#S`e2VKyP{WFu zkiPda_TcyA?l5M?$yl|AQ|;t3CUaM0fG?E?7i@nL?c26p-n(y_m(RVN`lo!>`9u+5 zc{~3bJp244S>M5WGW=%jQRGRTW6ow_U7S7sf}eP<9(q*l;Th=!=ua^S11IQ3GN+v1 z1*iSUX`ScW8~MJlq1dHP?HBC>oWx(n$m}9uRDjI3e6nSr#t%IP_$KpnjJepn1Y&aF zVX`}OMTL<8U(KAC=EK~ELpPFPqKgXP4GlDZ+&^891!ZTgkMB-wvwY?u9g3WV-jN}| za02_1vwc0I^&bbAexWdsKaeqphK z?jOrI_c42f8@UtQK?fE#KmX>(rN;vc#Q=|`ewEtFN68b-I~BND+YZ)+U5U*s6H%R-n;8`-R6P+!;av!ummfU^Cc=kj4h0y+NaB6Vf%9--u^&RH; zMR2Qj)t4P}A87d9sXg&k*(k%AlW@~P-j`%&JSW@Sac1bV(py&&?Zt+nYlxvF${laN z26L1w(s@;~1NWe(&A6+5{m1hrZpONXjhpRZ%!=>rW4!$aWvoN-eenS4Vb+Y$wRb~X z8_3yybeT`%zAR|OUl)zrJEKdW@fE{InLDF50gpl0FoS5n4{#_32J7)J#XnOSqjY@2 zzd!Ehw6C)Y!sw+j+~2EbQu}}5OXDXD@nCOqSy_9K4{7uZ^H5A%xiz~PtMcSy#yZ_Pwml><7;BgJsLv`zjvgz6#wH+6w;P;(N|KnDY*EPmEUFfqSt0 z|Mg4)+R-yLJli>*^)LR9`rqmOFt*Z;z8|kVjDBHVto7g+&+QtG zkHdG^K6NH$=v0_BJ+0UE;#^L_K)9~bv%E*Vt|UgjtkW{yJ%u@)PM++MzkBDArO_z4 ztJUD73;TK@Ff#FIVDxr5c+6$395_uvM_db>CKpAM*MXMn=dy?rj{BPzM8}HuA9A(oT%lCHyqr0HLyIHH#z3K^I^3I9gUh+SfdmH+8 zAt&angP($Q-{H$HoujK9*i+a)x{0&h2LTUbn-9-%wJxP~;FY}l0rd97w#_2i)U%%g zE3JphHtRao^X>Ohzryc(sqdoRO|5*@4(f91cIw{x44n)|?uNmg^xyq&rrT3xz~2G> z!mH@1fq6N=IcVnuVOGnt;%R$s*GOPy@4|+!Hg2iUNu47w8<;)AI1V!o`B(G6Z5z0) z2DkIUt?+r$C0?A|(z$H9@*_QdoB9@i%OBTR4cyVcc6|BZ-@pjjX??)e^lANZ>;Kty z?D^%by^eluDTjs@1AoaI6aV!4(%g*xf$kNzxB67E zA3b+z(vwx>Rn(ch3g-JH`#waMvWFQT`WGI8w?^ap>3zx33h*7*x@aQXy{*{O%Ley6 z+s?Df8~j)NcfD_IMvcYdyM}Y)BZ=wmaPlQ8ACYhGB)cbkx^mh?#c_J*d-cA*r}-C# z)*F4j2oIb6jOcUiXY53u=Qk9Yvq<)#zY6NTySK5~x$pU8b7$pdyx@mh`i3^x%{R)7wsL>{^4Gdzx1m!7q!1~GIXlFl~aJx zKyZ38HY^u7CQkuwgUEGxXd86Rn8X)`eu0?+gF694b;Qe~$qy4S-z$;rTvRuVqBsaA#D}E8JXYo12^MZ}F70>uHxl(+m znDH~TAA<(0&uMI(mMnJS#u z$$qtLJ4vQHlv!7#uMsvP@4P&Lj6E^n#_F}qy|kSt z_uPk~{-g_rgGcpoW4|25y6T*8wp-nuUDEB#XXQgLmj6zCqB@J%G&H!2`?i(W&@I|w z9Fj*om#ju!E#Q0k3~%}E+uttbH{tj8T;HbZ@Mxrxy(%WhtVVHSe4R2c&&=3pkt}oO zdQ`kuL%g0do{GU=U*zY($N-l*`8aa51iwJ};f3(u2^nWnwUe*+Bi7zz|H}R=U>r72 z(&$~$9DK=qjlDD${M-T#rguzt!+f6w4myaHR>y|9)mLZuNcjB5*fuXQ&h zv5M5)kUH}Ko1-qjYLJ`H_;emGdr^~$Lm*#u=5X^u`dipO-MyOlOnfNv!|qRq7DeZc ztaW*J+25GD%RX~m!thRD9x>VW;T+D_8rXC!{&<<_%jn|t`SMdRBBkG3`}#4D09;1H1ImFJN&PT&IrY8N5$bPKTYDf2I^T?})fw({WoI#_ z;25)gU%>8Fm>AfrY2(# zR{o3Oop_ELHnOJ&M@_7I-paVO_vJHsEdZN&jBRGjam#_R&DEI2nCw`W&{te=!fp)0 z<~koX7LSs9X5Qs_p3e0B`RYV2v32;#*Jp}(ETGNH>dE8t?bqj#XZggVp4a@5vjxPX zUZ787zc!3C_G=sRZ2TD3Roe%<^FrVtn)^zh_zH6th3ph~JNZR$BOB>UzKwK|ZzIj| zZKR8R8|iDTMGYR}B)^W#Ej^C>if}YJBNbe zugAW-p1Uq@X6!dJ_8&6#A2RkhV~;cTrHp+kl-A;WM^xXWaGZixcRN+$myfX8k^h>%%8`cgY0l$oR!!hxoZCr=NR;eTxCUw05QB zvwSY`X*TQ6((BK%{v6};&#(Q&#ET5w)O!3{&KjfSQYSiCHWYfaZfxr$b5>^)w4rmp z3v-AIA(!tY_R~AxNseU?x?(rSpWe;-2xm8=-{1?m-LsC@Tk7VzZxKjPPfYv)d5&-$hapXc#?IdjP7GrXS+ zGY{#sGf zb?EYg=<-9%bzY(NcHoCFj|RpUryS$=SwWv^c1DT!Y$MM~Udmpd!n5G1=|kE`@cobI z%jkJ@Ab2$PO6KP@9p&p1d*0bNbcsFhY$5Yl7@3he@2m@2%53XWzLWj^P3qrJe}j5) zhTLL&$$89qCN^s&bC}nM^S^;}19SLro;QB-D9wJ~3+?!W^oUMTK7wovBQq0cx+@Dk z|2>M1FyA@3*fHK-#+TUBZN~ZkSbG=vs;V>Zf1jKrkN`m-5KtlKB;0RmMS*(ZB=H7# zX{Tu0nRYxOs8v9nf|u4hoDlGen*EBUcBUmEf*M8BC|){m$AlmVD8w7ebozQixEc{! zuE!Sme}8N5mFxuV{6C-f&F7QPK4+i3*Lv1-ThH^XXFV&>M%V8~9-6%Pg6v!I_>Hnh z@uN%(0lvQ#m`6b;t%>QZ);3^>@tn@}5G;yWrv57X#1+OnoC@SwH|>DSD6%qeybsi3`Yn(r7VH0iv* z;M4QGdZXL8s&0(Ia|L+Dw!=Q;jI#`PCReQ+6`@m^e~I0VG5J`Rp<8c(7FVKMZ-YOk z#huig;ZF0C&_wsKe~FQE=uqnnKbAH0t;psn`cQtT{0hZeRg)o)=S%6O)G z`5fTn^PYxG_e%8pt$ZF;)XklWjyEz>-OZg2-sW!a?#}4xr0zn$ ztw|g0ZUU}2aB1Bs585e4ypbG-pYg0&n^@qaq6@q@i{z!Cf;E>1h4Wbblr-X?yf43~ zlRwmQX1hOR`X`26+lTrXw7DgeMec!7?%E^T5J0+&BKvL8sE; z@-Zg5QRY@7_YH&HYoS^99*GYYgAe7^uS{YaGY84HfA-X=<~@<9`z*M9jyWiJ7SX=* zsQ*sAtkF|hC%~p@!=~xMJFH_jFKLOm#A{RC;c=bglnvd$VY8_t)M(&uK2Uy!yY+1Y zfAi9`KJG^w4gAg97WQ$sy=UNW9vJTHemctFusKSt^2YZW3+)s;{oJ)5JE>WGUKH== zuG@}X#pm_Oe(w4|IjNuUxqC~l`%Vk8fQ(ElALTmOm0!Rss{4X{mHO#Fr!Q@XX_pTZ zKIGPMK1@6MyC3cIVVXI>-L~JSYvCYw`*)2lZFZ6a+=f5yIY$la6?O3mT(lIlV3yIG;s6Zq#_dxcU>uK8JTD|!Yn~1LHeV2utWgJNi2L5;ka(;4Ks4XodPzuf*SvH` zzH4M|VZQrOQ7HBCXKz$R+=gpHK5e4z+V6&Z+C<%T*N1%CMBVj2 z40*IEDsbQVv5$-D0(VoXkBexb`|eFXE^ZA;)>wNU>VB939Tqz7wk#uO&BqFcxt|O+ z^k|-3GtAxI-;sQ~Yv+biL&G6=-M@rV!z)7W`awpv82<=&!v#jRnny)Px*I1OUDG_f zdZfGgE`R)?QSN&`^T%I0%H8^hP-<_F`|IC2mpVYm#nKh3t>EpUBEC_tbB;c0^l{NN z%Kh|h9~Y6)Zo|e6%|J-{S2*6q$1_HZ&Hcu0$p_zFm}>id<~oSd^NMY^=TC zhoOA5`(C*ZL(6D)>v=ve&K%=@v^XUBZr-+IjJxe&zu&U4?x&CW{U*n9zNb%v*f@9X zQ$7tE#<}aB_Gu6s@2)TM`4QXloy(1Uz>nv+o2D{fAS+9v!`yc-G4jBoBsB z%(!a2ag`A3knOMw9jb8==W1RLZXQ5S?cux&jmgBgiUzq4F*fB3digVHwZA2IqbrU| zX{!w!jiD{{aOINdnJ(*ODSNi!INFm>FrKz_9^N^$cc=&UF!<8G>bP#R<0`RsWk)TCeZ-qez+Wl&Q+|W>i>k=Ut>)bn@7lPh;s^306u%7OqKQ45n%7mA zBMkiO{JI>h%cpihW7Xx*{wrdDy;}T3SG^sqS?*a__6dax@kRR<^cKuhD8Pso$XcmJT1JVJ<^vz z57jWdh^zK&PUfmTn^x{*gNv3k!Kq?Dd*>YX@_x!Zd}-ZT@gnu0LIAip!Gqzr)?-uB#e7T3AX+ehUS!A02 z+V#eq!+G85;{bgayV>VY$))XMDlltb#v)`rLw&%bwhzmzchk<%@qs+!3eWx)K9rXv zpWeuRgJeIg_CK@8Zv{5PSHQFb{92eoz#@B7aWnHyx;zpp~3O*NCUE~%( zzi0Toh+5%8!QU!Audlk;9S*(i`<5=1UE=R6SoM|ZUM_~#&ELUJ z>rUPJER%PU)mCj|)B)OD2Hx!W1#1w0K^|?_zwl_go`Oe>o|68BN85E3bD7mu`WN2L{WoykCcbFu(34tMQQlC+T_;T3Tz;Tr`z;gG$H#G;M@~6u9b?IZ&zd}c zy~rWv4~?D&FQdwPxTE2f5_m>&?IpCa5T217d^yMS4-aua-Zz%|S8yQz&WyLl*UN?8 z{-~qqBGrK-|Df{Nic8(snfu>hyaOZ2zr2wNKV)-`Rt~-%?QVys$g`Qq=JnJO^pN)V zsg_NYSjwHImQBd)k2}KHMIYrZoX`J${ul9ofd3`@|C;|V_}|0-oBSWY6I{@i_)t7i z$9Ktu^sIQV%9*lFesVQDzK3xrFOzZBukxQ8?LQX_dC!%K4|ooJl8f(FU&VODyASZZ z_Fk8RH?8Ua8k{TVu`!F-4tiw=xJ>f-m(VOqze&!1uye)Ytn}PTJga?j`J98$&T9es z)OE>KFU?`TrJe6=Ke0?PHG}^$FNPe>^Vc8oNp|9sXkF0gKWB=2ljH=LGoiuF$jKpK zn})?w=g*7P##v2OzFAYj#c zEX8(G{pnNlfyLd0;BF?eV82Taqrjo{{Hknn&!EF`a2uk}6k{#m8WEh(!NZxyv#rGY zG>_P|*in6*x>1eY3=THo-%kq-bA>T?g`b+DaTj7rb(NSid^AO|dC)z->r3HOm(P%H@=?TSpsZE(JWbY0!OfM(iE4AG{(TknSmMK=^D@yp(8$v>3E)(Xjk)Lya~4Yv z_P6-Yo^PKeuhi%+;&H0mxduB;wUCd}ws_($|M|)O^O10eu2ZgK3(p%|@Vt2A)*wEB z#p=d5u;`4o2Wfkc5BER&&l>&6voYYt*31mLp<9(G|mY({Mx&+ex0ccI5)K8~f!N1DEz+O9ZOd{nhq z`}6D(VAMDV`_E4D@$2~bjj~4lInTy;RL+`D-KR_|GQ;d?Xz|AKIxll*V|#e|DmM*3VBC z{m`w3e(iG`_}a?zmWDz4wVXJW_p`B?UVYKOBWEA_{e7LB-OBrtv##>HiMI2VUxS<} zjw^W;&KHtLUq#KQ4AxZeXILlp?ZITBiN#l813H`mwU_z>;*0CBT@HnuN3KUV7`d(S zx^NzRSMvC85zKwz(geda>`j7js4qcHtJ{CfXOG z+W$r1?u|_RQ0Ofmu{6YfW!5g%EbQS{jVG@|zZLp@`MFk2XLsx|Jf5#Tc+?kWpP}&W z0GHE5ZZh+h?;F;Y5g#zVA@f$dUr5YFexddN^aPH9%v;Kd%ZG>L?|(*~MFRN`j!}E> z#XoznSya!)#2JW-aiva@cfMN|V?02c%D+35&w43sw-mCzOS{@PsT}zvwvTDI(6il| z`ghc}vg`TyZ}nG)9Iu`gHibV26K5Lk&B6574|^wu$C$FQ z)6~E0(@nr&`bBPy9}gU*jOT_#;)4qrPm<@*zo|&8H|gxB9qJ=tON zAfLuY=FXPyW@NKQ~jcJqG9^Tv(XDzke zp7Lp2hHYl|PVa*!?fz-IZ#UA|ac15Ycx?-Kfwxiz=(jg`=}o_^Raed{zSxyKYhPs; zyl5Yi#m55{AK^4_Jgl{v_~qKrY4OWt1)=wkbIxh|*=((so_03dZu;1rO&kgu?8(6< zf(Cp0Vh=IaeFGQ+^#A-!?C2rrHDaDS;G@68qjf7C&Qt<+ojWPsycbz8^ngg&cO>5%fckPSl6~Kkf)8CLuKF$~~Pyf_t zZ>{wN*WaMG{>pU`*A&;Eay`aXd$Epi)!zFnHEzxT^3H%muSR+IQ`U0D@6y{@b3GX|wjg|BZNV1o z2{SHV9$NXXJg3!-4rkflU2kfl)BejLCsmCs9EJxbfGZPo+cD0)03LV^9vFZOUI@;_ zd*8=)m`bFeqi9jY;!;C-Dxvkv&> z@5v{B`#f+{)!&sJlka49#2I*p`O4%4h)?W%BYH`n1i#=D z^pf_-G;se4_`fm7`)zK3R==I&(aP9R(qFzUUZwazmoaIMl?^_KTH4ADG5f1{E|KA^ zc^90S^AW+Pe9M;^zvf-|!PJ^8<~`Xy1mVy4s(1eJgZ%bY7`o$k3h(&Jr{P_)Bz!17 zqxrr+V~A(-893r)Cyi~q+;Q3(fngKs(-{e92b^~*;>V_9W6WIqS_(gr^7rDoJS@MRG)l;`91X>h8u z+P+}^@5M9wu{$*Xe(B3ck&p8U{H8f00nU%2ySAm__aJl1$GHcY!{0YDcN{t>p3;CG z&{@*j@04K7$I;EY9|2Fwqo2ZO(M|DR>7XJ$qbGAE`{laNxOKmp&xW=mq&K{MOx_&o z&l#*o%tS7W8$xcYzjse_O$p;vh2(YZggeFXY_)J{LoPu4!3eatO8+1CfII_(=bbVj$z9uGr<8gQ=stXbfE zmydJh>%9f8gwL*WU~G7JL$QZ^Y^oS^83nzk@Hx)&(y_w(qv+V#_-r%R5Tob&V|-uD z_bR@p!vnHyk3#=O_`3nwlx=SLvg#|JAJLWCm(qgGIz=%+VD73j6qnmgY^o7>{_CH* z=nVLZvqg-~LT5Awb%y+@IYWG%0nJ)}=;@3j+^^#PWN=#zY|7P%vv<+>fZ*jn{xuLQ zvh%iYHyuZ34}@;p*_$)DEb6jXi#>zX$B0uO1G_;!JR?=$YT(>#DX#jDEUUE$(;@Krv~$5=BW zzbCZ~p8O1%jKc@w@l*WPNc&oY5`UEP`E_uhd6)e#My8K3PH!&kkU80{QT907^Gp?U z8U_A7r=8K@j@Vg!A$S`akhwO-^C-`J!5EhC4Di%Hz%vi>j6DnH7{Bl2w-)Xvx&Jw` zrM%x4SWljfY|TNoSSL*FXN;@)ET4vbO-8;hLAFeNQO0fe)0EFYk+*uJCvz`wT^O9_ zgk$h-#^&<|KJjU}Q3?7pu+rDUxVLxYDqy-5Jvx=&R2y)bVCEVJzuLdG_1{mLT(Bhg zR35YHq{Y*yc@AuLUKVczzgGaCa)ITW7SYbwc0JLd=XKta)^()ASFu0Nw_{jWBi_Tm z)*{}KEdVX|bzA;x!8Sc3>rv&jiI*JouWIs+hsRz*muxM+anc>=65unmKE(42;Ex92 z)_8!iK8ZYQ&$RS{bgO*wxOm&Yzkt5V;V1p3nz+m9NAIh@UHGiR-P-hwN5xZ;8DoRe z-&pqS$%hBOweo$@XJ!vl5?f2-iVz>GzRjESgY!?m+NZyx^mml!;yky^f6m0+Xw$~s zXnTfYVA2N#^uLd>7li)4y%^U!w2l9gt9YQs7o$J%?Q%Yw-)R$@IQJpeZWQZs(34u9 zc!clM_#Wf?YrwRhcB(>*kN!1oUA4}tIpR|07)o@O4nQU%yg-zScQ?eQPZv3KM_@x=hiCO=S4>WsWZ0S`xZjLLJX?esmgH|GhWszn~Re}T;+r7 zw>Uhx;2ZD|2G$@R!tnM2_K@y`Z#A#3N>6`uIC$ws8za63H@^hF_I+vo{AcB22RyC( z3Dx9E0LOH$Q{bNl<{!mE#S0O5aXzsj#kGc0Lw*DJJf(U8*xijhKXo{^GkKAbyQuY$ z=FNGs&lR7zhTm56+e<6`8c;PJ{%sAwPPG%(esk@FNwn+fcYiI*k4r?W99Q+0CP71D z#r2bY{)kj{_|9upqa_|SHCkGkH^R)FVeo{kS1xkA`hv*3nKw0`l`u}N-K`F%FV&pL zejBrI)AZl!$72|K8N9i>$6fU|)3?@Aw1y^IP3HvOLi^HjKY@Sn?dxx4PTqt*yp1_| zGxOeTVlM9v#9kQ4Ir3){&p(@d(g<}4BAn?rG?pSSJN4m6*5F2x7d00AkL66ib2)qb zTqm^+p1FGhv_bCW^9yD>mkju8=k==+=2ZFr!jbHVLF{Rq%$`Qs5!LWuG+E%vj*#sq zKAG_~V{IiSsKI0 zgMgW_ejmH)9>)5ED6tC0`om$d6nW*T*eGOxu@;R(cQe-F^H_gpte0N^UcX_if5fKy zY`C`%^-o;22ltO$S!2!H&h=idpKw(Tz@S`qyZmJP`b|2t(p&(a6RY*)U?05ezysp_ z>0B2e57NYcDpk3-lD{lMj` z&|v9~A?{N-_+#KxcF`}HBUP6{HccKl6>ZLeHl`il2B?50_d=6_WgWT1TEnOUUWajL z?K~6s9dv2127}hJrPu6QOM7gD=S;i~ohyE^`?bliQsPnYzmlf(OaULyUhTV}BUyfLw;I$i&tGnT~ z?+=CdhQfQu)xGfA50R^%!E09_S2x3J#mLo6cuhGnR=>YWjOq%;)b0;i{RxkV7j`i> z?8?(Sc^l*-wmOU(Lu2IDP)##Y|{;-u%Urv10z#VXsr&m$$d-g@(vQr4W2f2}!7K0gex z4;A^@|(5?nt{-{QMv^c#lH6`#`YZ!)f@&+y_D@f`Nq!E1^~m^sbq z?Y@M5mdz6Z26K;GKgAU`Iq6GZ=f8z{5j!ol?ayI+NIt`dTHn^1w)_Palb$9pYxq_51T_ zP=mZHFTM>wPJTIS9@KIfZt~*Ing{XMYoG&h>AEeAA@|xW)`ELEsi}Ri#o%|@2C6mw z?U08!7qp*&d?tJ?I+`|}KJJYHyw3R_ z==2Nd)G9ggeY$)3{)=IrZ}4-js>^yW*OgrF=BmA_^SNHeRd$l%z4mG_c_;CD70Dn^lIAG^QsRu1>Enz=8+v3PfvSPx=XoqoYT;*ZwxMcTGzmfChmfb zVC(V~L1*#wW$^dqG3~qe&aqg*{VLyYk}P5;n|WKYajOf|UkPI{`Bfzy`2+X)xUcA9 zugXp99|`(>vV(%(t$q*k-v6zg`o+)= zJ5_wop5Egnf1CEttZ%awAVS*3zD* zn`mn$Z7rs)n`p~}E4}u{uYv0~w5$4Wwq5aysWIOrzi}3E?nUS=` zWBG={kA+wK9{enP*>*d%gZ@)HMew8OhCZot;(grd)Mc>vws3VFuVm&M#|tdM{KhEw zD`T9J8QY%0oo|zurF-(;irt`n0_nhV8TeCf>gC`s6WZ$B!EWfDE79%Uf%_`-dlC9Q z3!7moIzAhmOv7gA5y2OV5Ca4ER}WUh`&5(o5a4j}N?{mo^z-H)&&G0>J2IXT0 zaWxq@b-qHod?Is-e=GJaJwTq4iM<$E6V92pc-F)f!I_E4%LlRd=hIe@U(^3q^yG41 zR>^CmUN5+UZ%zEe@NcYM^S8OrZ_=HzNe=T_KK@~zF}Op2XkILV4w^TPVV5e`j%QNx zk(9R;99NienfxbT|7q?u^ls?mZawME#WmVThi@C70sQC;rLV2tR&H@u z{ItKzbN@km;y3bl>(yTY?G zfZID;B;wh)8^CD;I0gTykHG6Y%r*AR9j*D-ro~d(At&`hCVP=H;5+QH{pbLl`~DF3 zweGZqXCCLb1iz{7xBLgi88d0m;zPLob)h#82l-_byj}?3E3ZpuLA?#!hW<6_p54#- zy0OWt!tUoi?yi4?wzU@a2 zkA#42Uj6yJKObCA;QhPk?*iVxo4zmP{d<68B5e%g{d<9967T;E`J2r9apaG40#k+9 z|9g<*TWIG>+PQ^xuB09L)mPHaEwpnb?c72;S2DI+XzM20xr%mvLOWAw=T_R8h8*7( z!H*k?4>1%UVkADqNPGz7crJ2$EpmK2a(vwcd5D!UX{WlHRZkpyyAiGlYM=7*AAqvmJe_7Aa~h6V0ZJ3_TUkZ;QW}gTqC=&vs|MK8qRdd z<*!>5JJU6|Y#8KbCRqccu9akJJ7XYMF0~feh0}HL!Q1e`1KB>T)n~g8-QdF-9qc}m z=EGV(*jNzdp2Y` zGv<(cFrlY2@mH*qzCrHX18JVWn!r~wYqH2)7BToN>dW*)Cnz3Vl}#>xrkAT!#OIHB z<}JmE(Ida){%3qn@cACv(wfvH#*odsvez2uZ#p_<0iR3x{4Vb<=QDCP<1w|#=PLZB zVxAw(dr#Ab)?yv*MbVX-%c_C9oM%f}J6G+Of=tdLfHpH3-(cPe;wB6n!c7af(Rm|j z!`S0Nt!%~lm?JyksMCA&r}u^>$W!9IOx|11d%{V#F7I8%J=U!!3Qto;d23W@z>kdO zYR)QTjK-H^o?q|-@2myQGsWGV_q7Ig8@eRecPqY&`nKoSYkin_W3%rQpiy(kuSs zWL{)s$M=&nPvl(=J$Gev)QyY7UpjYZD?D=;{LZJ&Pm1s2iDX&_Pn7dnK9GD`tygR9 z;|R}*FRQ@MYd&8V@mbGRr&0HnHf2XuBge{Re2dR9K5L&sgZA%BZ-#r-F2xqf_u=oV z8}N-f+00ikzR&b5_NZdPr}$jN=d1YKoijhhBOAlc8o{uMXN#Cuh37rk_1J?Kc5S~O z_;`ge8~$Nzso%41M{FqpoEDG5eHFSq_}xBl@3sB@B;21&t|Tl#$4Znxqdox zea{HCdIVd2D7N}gY<2kRTISHAvH!EZehuR=_B#4h^*vdUCniM`6ceP%*_Xwn-yz(Cqz6Kdv#M5YaYb3-X*5>UVr9X=4$MigG)I_ z^Ht{Tu48rhv-}cbd_`gB!eQu;m45v%%g^GkOmvKqwNU5zu*Baxv=4ol#dsxW*^Djt zZr6TIJs$Lq^6WG>C6HO2z4I74;w5BuJoDchd{>T874#mYxrooeH)AHx+=!gFNFO0X zQ}~?Va~gb8%oxN^5p>GSynjmb8}J_D9nGcENAvl-T=OR~eF5)FXGy+y@Vwsb!@Jk; zub9qqwaq(=^&Fq0d>+o{-ON9-F`jjtH4pJz8hSl{ZSnM-B&nD=YE_shVeVyM%KRM-11 zli#F#h3nw282lA0a^4@u9IgDOt~Bnd6Te6MTC4po*FSQ-j;r<#rNLjKpK$&n|Kbf# zk9qn`?dZE=vYN|pbi!>rpI!cIU3Y!5{MW0T^v!#CCz+mU;!KL?DW+5cf5v)BM$?JM zWYm5+%RlGP*E73M84#TDv9U11X}PWsaHh~p*# z{djzVUk09SKe87Le*AtE3l-1XeS=wneS_%GgVRDI+xHDlf{sC$)&BGOUM%!kt{*|; zm0X|UTEq2GuI+J?Zh~FB5vqOk<`c`pz*!?30^Jmh2`C?Lc`j>E@Kq4b63I7k+V#F$ zprLGA?OE*!K1$(Tov{∨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%0A2gkrpw#3-Xt3=8VH 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

*|tyX9_9(rU- z_=G2IFf?(X3GI#+O{5nvC)yYFx7I`mS#F+7$K2oXjQP91+}&E?ty9gXaw8=7;@USE zXO?l6X`QiO?BIXd>M?j`2Yfs?guTEV$<}KF&rGd1e|>q^(5A+x_YjXZis^JkR$X-r zwZ_(Taq%x^iLrk=wE-Uj^j5z5^Q@r^?Fk2O{rNHVgnt$^6mnJ1&z=Wm&uY3Zc^VU> zvoU9J#vmU@9Nj3!{HUH^JmE0z(iQ4gc_=HHqYgdI-?v+Q-_R!~+__%%au@pFO#jLU z*+Tza>Ax#ug0_o>S59)Z2djp~J?XCNbU*BZbZA|7#(xa5?ZR=Ci!Y8|U=VM>)H^U>+!D7Vg z9cQFlQ4(3)AHEH)op$cnl5L^dZkI47{Pn8_CVIPLc9n6W5+)NFLi(e7e6uC^2VM z4$zl5uR>oM!wUK%kBwNR@u%bC#lBvNe)*)g?k8y7^Scwt%V+gtuC0tyu~y5QA^Ntw z8K!S|b5%|AKsUlTjXd(lslFFzuE9e*_>>>dFf?wCyOMiF{4UwUhdQ^&T*(6~U+cW} zUIS00m`~Lf)Ov>(R}F7C&aC$p(7PM!PV0Ru;}(A|gr264RGc^p=Z^S4$RE&mD|!4xDHqdoChob-Uuv1KQVFBt4d8JM3s){%Uqb-X9s<(oJT*pu_U!93w3TH~zg3wh4q+mf5(o0$`nW6r!N z$9#5}SYDWOOod*3P|hkhnfjo4Ipx})=cm1xGQ8Pouc-0o+WG^vZ*^hcl6({I2KD_0 z=pjGcQlREo?P^V)P~-U(G%wP%kASn{q2gH+V`tBj-)$zexf9yF1g%2yZ6T`*(UU(x zMt4C6k&af!b8{HG*{4Fo-08ktlfFnE19Zc_;&UUpC%t3Tkq!BDYWL{WXnm~MSn{#z zY|S{Hk&ksedYty335-wqdx|@$wof5O$$PS1x#us~{AMl&i!~gRR--pVW(e+); z)kyl5uSM%CsQ>G%?OgI;H10Y5k(1D)t`E8+du=Ua(s;&EQ`YdPPy0IXQXZAf#g%>g z1hn4@ZY!YOHfV2iNHfr0^w|aNb?@nJ(O$V#0o8DYD`!>0RKj@r$nn&G`L(I_9;-qjwAA(tf!Sz2*$&)!2Tiiht_+ ztAKV>7~e2>`fSDrAK{xBjjYYp?^=GvmnCn5t8&u<^|L5!?A*=ilJ(rgKB+gy3{8_UxT}kXxRw&g!84KEIc7 z7t>aMbiLK(r?|lE^X#t!*k1=QZuyN4Am>#V{2(;YS>r4;C}r$z&>+m%C11NTc9WyR z_}dtNnDIY0#NUG(J)TRjXNcz}r<7mn`N3t&Po>W!`C9fYs`583KOUWu?~S|;tRF*{ z8eeAka^BXF8p3#)KO-|_dj;2B1@xAj9|BYzu>`Og7zaKPmRZF zKel*hpySB;>*h>9xbo1{_uu{O7w_+nI_qu?4_I&@oSe8JT=M3}Vdt~0@W`$FPd;i> zX_t}(la7RqZ8fPZ^jQpkHh3rexFCK&={?&|n7dx*0*H$(TG%?#Rea3G>U%;f(foSk ztLj7iq?9-%^DO&CXUTPr{H8ee4RiZv?8adGb^e_0qkWyRHSxdj>F)Pw-`Yo)(7s~o z4G1CIlP1Q zC)px78k8OKy#&vAN-wK~*R-c94=l+#urf=wmSoj}zWAk}=T4oOBL8^heC&PU${3MF z?%`{`=;SBb10FNFd3u=eXhtrkz$wV@Eznwfq`k}imO=Px=w}?XmS1B$bp9#hyR8>C zH+w)Sc;}C058tH*Fqb?po#S$ze;j&tt?unQ59+&qD}Fy%`Z+mTj8Qo`(?aBdLVM0bWMZ}S3Z`*&z-=-T4xNqf)*Pos|k(5IL^>vC}Ym~o|{U7Y_@u443>t4?|r zV<`C#e0;QT&Y+>Eg=jlYEVaBjM}Nx)f23{2A(iju$pdd)slL5r*(b=)v*3Gl%SD@= zB6kXN@wjYgA3oEhJXOz~^bW><%a$%d&vJHx9}r5fk(QTF{pwKd?Y z^%?!WAc4%$SORC=h@bRulZ+*J)~$xQs$v{9@LUz+mxF$ndZ5L>0sKeN z=Sp}cIEF@l49e?#fPU|zU*t^F;(sxQ+x#)iviq4o2X-8?k?x{B={xet-u*AeaTepa z$REe|fdBBvp}1_4b-fI|Y?E^Bm4`hKnde|nUj0SKJSm6NjH|`tg+|8f>0fh<{>7fZ z=+$%|>Q|#b$gjdW5>9FOt`43%n{mv8=i;=B4vJ1W+70Sf1+%^^83|sh!P|+xnrCn{ zeYbmk*Rfa5f-jb%kJxjEjsAQ-N}tQ<^AYqC`5fo@G?LCWpWm)w95ZM$4&U6*xi(W9 zPqnhb*b|ZND+(W#AG7m5QV3of^Y9AJv1~1^Lwg3efH9r{K8ock4xfJx`12{At!2gu zJx#tYa?Qkrk(-L;n%qamEgMI+gK#=@lP}BsIjCX|WaD(D2CDQ*=`rUZOQl<8=vOh8 z?a)GdxT%SaOxnpD7~2M49=5TuyWRmG8xOI1t>moi_XF*%#4orcz!)Whp_&a}&e+Er=!!uUSSzk>goU4V@%$VkK zMlhe>X3>ZGc~ocJ^LWwlU8A=SXv^q`_Drpb**E0Q)Sd^v(h*04tI-cxpmleyBi<`jDlsd`+Yu9--^E~w;?EZBE&wm_7&&;1RMBK_#Qv_qRrIud;9vb34!93mL6s=pqJS|8Uu6vR-;K}*$3NCCges=IQe$RGzOg?k` z(2K3Ep=YP^T>hF@eBa)2tlWZ2pxX;!hdT_!5B)pshx^X**8Cped*X|TS8wYR^v=!b zkkhrMh%cD+KukcotLpB2GL|#yw7Z+}?h)@3GuRu#KRgCKAN^-Fc@@vEC04;2IAZlC z@Gblix)o!YgYJ?cKGQme`VxOdwn=Y-FLdTevRL!8Sv4ESTbfX(<;VPAk^BD~{h!GF zf2RH);m?cDi#6b04L!zCvr^}e@eMSMWj>TUIfl82F$dcBPGt@rMDE%=@n-OTZDD6U zNoRo7maW+cZJWwzYfpmnx_(>cJKCzFtr~J@W>T{;&3K-pE$Q+n<<(5h5Mxn1W6l$~ z`^)C>?!UUfjGRiZ4rznqK2=a_>a6UCmT!Z%VoyiAzw9|=Sn&R`4Tb2_;BD{eviFyL z0WW0vlrWF^`7tr}6wOUH<}t&#Usi4)v|KAV0@((HFR35o&o67So#&K~c9m*4!aG5J zZKS4BQ2$ZvM|-ucmnVP0CS;k;gebqnTOard;hpi%Yfp5tC;gK<<1P{Zz*oXoXRR;f zfB7v$^EPzjAwJDx*j*1m^P7li+zd@*f4>wi-X6EMZ@Vwo(9vfz{~MM$?uT>J-km>; z^P@1nnPsX`a=osg8k^3m(F>hbTTVIK$|qM`u^t*PB_2iFoO3Kw=n(<_|V>I6P%+K=wNcJc}F?ck&t{3oW+Qe)5Y9$ z%nAOBcKnkY$*+EI^;dIhb@t1iF-p@0cDcFlL+AT~HI?2w)6>!40m`TK7Eou@-T+ER ze;s%e@KxX>;LAXr0bUD?0*$<`W8XkFi9aN-?KzFRn*Ewy{H`2|2)2sWbR1up@(71O z6ZZO5uVzNOL!nD7DSd6Wi4i}cbAOd%yqFPltaI2?u9|H0b*=k$XsH}mb8ai|ZcpiA zI{RnO{h7R1XrLVNebCX|7XXi==NR4Re#Rod_r1W6fOfw&^HSyEo}f+P9_GCGKg&P* z1@Hf>{G+dX|GK>Qx3GS;vM+4J9^Zto*6KyCUFp#w#|vHIg`yQdJPI9xwY7S%*5q64 z2_4QebfCT#G?Y(6d+&KZ9Xj+s_FdMnS=0TPOReo2e{g7t)dlNDPByvV26@4SoE?}oC@@9s;igmpd-TX`7k+~k`D_=f&E^jp#I&>7LipXBpTV@^+# ztWnO1IWvR4gTDD5pJYoup>3YSrA_FqfOZk zKeTAC`KqJ7OigB@o0^d1|L}?xWuAVc7=J4~5XAeh;EN1h6t5rSzI9sXd|c(eFGDvC zu7gI_K}zFbofa?-**A=(!#8GixgcM?0Pf0l>)zM5AkwbmrgNrR4n^rIQ2$4;X%C$>45gE7doZMS<$l({ePsrd3=@Cwf}zx5)ww0 zKtNGW20&(8RKST7A|g2TR-9TbCj>>sp)KIh$%NoM<*_Jj@BP(;fCCnrMseu9y(UCK z93VJ=w%=P%5+Fc8tO>)hBER=%@BJhvAz;7X`^S0h=S$;drv&H;f#_y7sE9pZzOk)ml`}_g=lK-~G z?cLqOI|aNG?fmDp#w0)Q%Z2z`>ts4H!tmF5zqaxbHuAw)E7DP{TpUMx z0w2x>XNV^xCnxgJ{=MO;=rHdj|L@pPPrsY*t8=wSWd9~VPkos0%W_ob#eJV+_{V;q zt@YP_AIMg|jQzVh;)%!2GqDJImAdKT<@m|Oa{@+Bet2rP4nCDn$9csqnJ?wr{NEwq zFa{0-;P8zkoOD=!-CjruI$Uv%9qd(@{j=?dzZgMYjoCv(fA)yRztny%vRXQ?{3K5? z57k*}M1OBZcW)!Uxt;i?_(EgK?+F2e*3d>i4M}x0GOqtB^C9Nw$9vGJD+`CBQ@O)p z?tA$D#Q3HXD?FcAVLmaWDd^%jpS6SCJttvXZ(ly$qN#y1FKnY_nxW;>}^!@zn{~P$KO6qZk=P#@1F^t;MMlJ-RSBq zjC~-K;puFz_OX)na!Dj;^Wzv>`Ee1R@z2>r=tpBWFt%z1N_K|0GdMwh^T)o_jcv~> zw2vJpZ})A+PAfRU!!|N@aq`%OgM+S?sNGAA0=Exa6xcL2dpf1s(<$Ts$u5^8i@*J` z$GNf3=md8ea2va0(Q)WN;{$YnJAYu%+y&&{IS}9(AGUylyPmOiCs2gGeLuY(9qNyL zoEv*sr?IPno7xYRP1U{39CUs7ZqR12?v8iDX_Y1Manqy|$=3 z>%5I|C&S&?Gw6IJTbm#Ny@xoO27puaZf0!V2^iyl>3PY3Y#<-!FS)VDcN#ke+#fOa zk}2KH{_nm{aMyMZ8vpbFaQk~TK5W$v?gV4&uFDAYf5WYrxi}}sx^8|L8*0C|2#x4VH&h?jWDEoH8o0}V`!ff3O%mMyaSXVzr@8li1a&%$?F0@+8avAH zLD8r#`Jl1>f6oVZGADRU=P!(XZuUmV_oWt*x9e9enX=`Yn3L}KRgPM+4N6X5#^ro& z=2ODwcYOZL=L0^6`CN-#vVzZBe0K8b6AEMyFU;WFc*ZaIEame@J|FRcKpDfrfsD)e z%;j@GpE5qxeEx^eCEe(s&l)~We7@nsUUx<*pTF?=A3mYfK*k_Gr|~(9&-wVpI%6{x zn_hbZ7eI5>dV3aKYU(E4HO16?BQEj9h+tNiwo}PwS5F%`Kbq~dL3jBeYt_(tmZN)K z65US$$LQ@2IM&&Gb8nQx^(El?O6F&HuEhFAg&$b@9wcx2HS{|5r>OgIn)f<<@9*W8 zW8=PpZF?Uutfj`Ze5ZWil^ttrSl9nJ@{FT~=gDh#_18^|C50F&|0nZ$;RYKYF*T4G zH^O+Pf9{~YmvL4^?KpAbpyC(gw9Ovu&p4NMf}`SH3r7oZyhMNaDV0msoZ-DpzpJs; z`xEO}4ID4}aBv6I(cn1rHTTTYzv7A})*J6b-XgYrCtXpy&c<>TmzcwtF~;)sL5%k$ zuWO;(T69G<|Ic!|LVf$XqOzc)@9NiFIuBZ11dcD}S%bG)=gZbwUsmV=F%A@b)kd%X;2bG1u2k*4cn|hDp%=N- zi7+2xZo)AJj;8V`8>~j(!smVBi1sHx0uJ9 z#9Nhj_%P3EAE223b;frL|F`i#^?1tzk<-1d=>H`2@%e1@{Vt!5xSgq&$~sX@%=cB| zfCsYA^9~@B_zMXNy(jJ-O8uWgVjt6h(bBdqtL(fkX`Ay}N7}0Pz?}aF`c8zt*cC^} zrB8!Le%X@A{%PGja_r3gk<4{BbG?WPEa86N1oYRb5@sjLP=FeJ3%$S z9t<66D{O%mk7XV@O}ThhE!_PF3#o9_Y6r1ss5r+ri0RaMA)!6enW8 zt8U4ZvBp+T)@dcryE`(dCGOjd&x4OwITLUYUX#zDdv99!?y$2f;vp-q)xhEV4R5&L zlI`a=W8bc4TYk}!ITbvpE)?$K`-LM^fr*oVapzqLwb!p`x??UvR^5B*CMs4Lp9xzQ|udFL_jAoI?O_VV)Fyf0(nYVHcuVCJt z*OBX)v!N^eW$d27*&ofw`m9yRq zo_m7li@-B+)w)N@2YMGfJYUeo`rMZ>eA!(My-l67pG`^Z2hXf;l?SGb>oOjee~&va zimp3aJZuekK2|*JA@F=OIX?9BmQ2AdoBc*~avC~0eJc51%xfj{no%>FeGlO6WH06a z%+?3>Yl9XAS)-gSTZGP+y|j^e>Hf_)|KH<&E8uV6UYc`^d2L}{S3wiq;dU4E8pv8d zh_#+eOA^MOW4^3SoSkLw9=lwAM+N^E;uCe{1D7oLcHif1=6ft3cp~%tHoJT-^H$E3 z*1Fr6_XhB}5q$1tzSILTx;MBc;7Xs%_;MBc;(}9zHle!rNCwViRYzxlw(IcI8NG7nF94l!160pu+ zGq}t6S9sR9$G<)SR)0V2X-C`QB-%c86j*bCHJ|lHeryNYIvc<72R_V;zn!*OgAHx9 z-btTL1?Kb7o%yUAonimvN6?uuXM*P|z_V(F3OB>v^6spPQt2qZr4Lo5*)D&Q{gEcQ{d&&QVp*Tg&O3ghW* zGXEBKVe+2t8_rKFV_wop$avkcWPCEXJ(k@3`e!Yf=h z9JM*)4_sO7qh+B-mjPD@xU!l1c;K1HbAoG*yW{*`;F7IL+`4XUbxND9d1}7y6*#7C zi98-XPM!WOa9synQE*g7zGyZ48>pV_DIZJw=s%)fO`N&c@O@U%x!%j)k*%KX72P}~ z@ssRs<~;WV-j&^|S`vCsw*RN;ChyanISu;$rsILysg@U~kjtaI-9~Wb>X20~4h-|o zM-G$gkX?iP<-v<9^FwbN0>~`ijgXdLS1^<-&P4av1o|4$j z+=yXTuFCsvmodzoiQgW>{Fu2ND~36bxgE{+_&f8`T5j-B;_z|0U8fs~{Zycr*(a_n z#3ru*FUyggZphAZ^l~};K#ZwwZP9m+8vFUx!NZx;>3=71-waJ=uoho5Rk`JyzX9$? zibqhR%lM`pXwo>&))Dk;fmFjgpE>)b+VRduz`canZ4r9;4fk6)zxgy7a}2o4fcu(m z*fNYQ8V3W>Dtz&}Lh3ISrUf6KQ$6dTYOvLH%9TvUQwjIj#@Nqp0#Dt+la1Ak@Mzm& zHR<4KkmLs4JpaV-65Xpc8h-kGT!5Mq{k@HxK^hY1+gwAw2KyD%F+mq0x3W+0J1SQ< zoYbX#QaG%meWH7$OMcjjO;>{yEfgVNR+qrJ6@(53_7Qm;Oje zR!4tCGJhF#o8@Q|b#%igsXLZW^2Rad^j+p;Yb zz+)zKldy(<~ zhz{zD4*Daq^@6X1qTe~H4!Vx}B(Lh!zs_{4{{;QNPXGAnm09FdmD7JY{Rip4oc>?+ z`;VV?)c&W^ztMw{(-dc|TT$emWlZr~a!mg$o>d&W8UDQmefS9a@X@K(SCJlmoHMt3 ziCxAgMY#vd)@i{OVEsPFd!0L4AoGJkbt5CvWRK4<)Vpp*rZ$67p@NpZvQZ zn~+Cx^h_;!=r}XLc%ok|^wWJUqNktdk%cbu_2}Pz`0f1N0~)?~md&^M1Fg<DqWul+WZI`_2hc8|{eV4- zCur}bEv3DL_A%NKw2#oH(LO}GgV^>1wCic_qg_e6nD#;1MYPw_7SWES{S|F0?JsB> z|9Lp`XS8c+@1lK%_72(-+6AX?e4egDzx6s}| zJDGM4Z7S_-+WN%d%oyz&+8@zY&|XXXDD4kuZ>7DO_F~#AY5&1`I+OMt+V9goPy0RE z2WT&)olAQ$?FF-<<`5Im8oEL<5j)xBL7X?F8~0(i z$5+kXrOOxm&pTT(Pi72TZ`qz>^83Gu+&y9qby@L~jGh`zKlSv}mUqGWq#S7FUG$<4 z)fzDK#K!aM0BW9X{lrc*{hWA=e!iOYFZ5G3(DajbjDB_`_k)e4JbNFm^}r>(Ao#u4ooh?gMdrkF2Zt8=b$Gjgxhs{8TMbTlu$gp|KoEb{Ue~v?I z|J>fQoQ>5wrE{TLQ;L+^#+b_A{KLLZ`ISebW5ljo&m9BK2a@4DT0doJ247Ddqn|sH z`{_i-o6xld!N8g9PgJh0o@ji=64%!VV3J?v=TAn+TaYiOT=X5BbCOOsakJgNnXCZKIB?hnkVsh9^ zSH!y=k&i!({LZ<|{X%j*Z)E<{$@`>!VPXb3pf?j!xhN7%%puR>;btvcHsykYiUcfr7b7Q?3Yfp}e zYnGb0W`E+EoHOhPOeU_$xx)U8rT9-7@?`d>*vHt9Y-_DI|Ff5&{|5r&An;wxK8Rwt zS$=$=!uo+Z#E)i!-v(@zq}V{|;^nyB;k`ZdlfAHIsr0?-US{J% zjT^+f;5Cv3|BPcTC<%IxbC=$O&}$>Iax^{j1Ud+LYs(W))~7$uv3DpHvj45xGi!^u zn+Dl<3tq#H;;d>vZymDXpOasQJY5J+y$!ET2e$R_+FR9}9sB*F4|Hb1Y1bB5G#6N%QuQTb$ifR;#meRMnqi!*DH+cxG)7zlYFyOC!`o3@B7f_ zsJ;y}VjS<`g)N!m7RteLR2nMxQ3F z{m(ImvCnFcv^(1S%{Kl1sZ+lf9i!hTT)*V{lZ!dVoAZf1Gon0y;yYjHe2!{}S=mWj zc}hQ*@9*XzTgjY%1RlSSx$kktR_l6TfZYSGXxESOA+=sUhs+Z9DNW0Yc+VlT&*MWX zSLb$2 z?FJvcqVX>;PT}k#cv=AkM}iGydh`vFH= zM*^%h$?M3`p4;zaOSl*RAMLr_ou2D#Pd)Ga2Dkr$zctqEzidCLqYV1C)UUwVTHx^O z)%$qsgpbm!_-KQVkLc%U_;@)9AAUc=ziLdFSVc6;`*G05E=0?!kGn1LY2m~Dt?&fW z3_MjwfoBHrJn^rKC6kho|f8B8S@NHMs4hW;4?g@mNvzSMS zcY^R^0NsT>)FD?Ez2eT6x95eM^W^9n_}QGJ9(t|%qJBPdCY=AA@ucT!`Ts`roWBp) zgZ_J<-*iV>GLK6aB>&%ZhV^5%(bl84w&VLX;pc9}zcBf^*xxHoGj~SfbJ)57@2)tU z$-2s2zQL7d?c$k2|GYN!ELZS*6Tk1^cmI63u?2W;?e}b7nulz}M&>v7<927># zdrpb6w+zojSUY{V3$6_$a-*tIY0nXu^*A!oQ_kz0IoQVh=F{XM#-C9>(cEcwh$s1N^|DFcLgqbx0sP56w(=oV&-^$1HZXja zsb@a>$H2w^fugg#*kWT>RxXa8<;{7({T)5qoAZd-8>?JfcD8o|b9{j3)3VO-ZY(7} z!rwE>&+%?vLfvfsek6FVcgtOYgqd5xx!!HRVP1Sczu{bO{(n$sg}+x%InP^IW^h?~ zV9j~nofE0!$oG@-Cwq6FPTntnXR%*gaE_Tn-D381=Pak*gko>i0q^?f@FV!UDH`J&g{bf6@KYA{a^H0LiFEUZ zz3uQ*-pxDpJ%^vH6mMjm!%umNH~J%opJ1vt_LBg9;Loal1pmy3@8+-RP=~Kd^c(+w z0*O15@>3NXC!n2}5Dz38_}<^^)p?ct05;E7@+-iDpSPe|Y|rxj&>aR>++UsQjo3}y zAz+zTlj@E70-ub(SLJp0#$c$2yX zE$LHL*zIwdty-X zR#{kfoR@P>(8%}CQi!FebEiAF*4f=Acqt88-GNNNLtl(2=3Zg&q&j8rHMx1z_{a-d zJY^lvUT;u%s#}$p>RmEDXnCsmc<-`Hg2GeXl7j770p6$g`8+(pTl0{^ejh5@3}<_v zY;g05WqZ{#{P|>iYd-MhJI8wy{)jiR(ymjaSqkA}avi=0OmgJr7y*t3IB{gSz@BcL9*4=Zwjdz3+GpSjyWcC>E z$q;tz&m5lDoa1fzRmke_oO8WT7ljf{b{+!p);$yd&IdDD@JhUEk452 z{b{Nl=8b31m5*vf$?xvapYva2+s~oD6!f!d%d#JpDCYe|=w{VEHFaju&+(*M^73cD z_^!3>JNGMpA)P*hoWU#z1Xc&|M|AIHGFrGY#(w0!q(SO3`q5bbOxW8EqR1CpI-ZE@j%CWX7Y*c3wP!oXkdMZ zbxe8n`R{? z(&zl_5ney~Y#lzW%B-*bQcSAcxZHd>Ejlhmd-$T3AZm` zBlILLDBOm?L3iL!=7;N;kLu%y5BwP1-AQmM&JqBQPi7oix{r^M2RCj7ey{jfdlcf| zwcuZOB*{l=V%+Y;-?W!t;*{m5c@Ho?X9^MzGY9R>$;L|N?Tz4L67x|lU!OmzA3=Tf z(8}>VU(P;nR`rRdetyqQwtl{FW@=^hs@6O{=xklV3-ivjKWM*e9CE zN*5pZTUj+HsU|5j_TyHPuVk4obhuSrJl!Ki9cj{hbry@7>cE!#UJvHpIS(LNt{x=k z&c7QPS)chHAH}d#|1Fs&`VP73fa^kVE!$~0bux!D57o?nJ4lT&=CVG8T35^^0)EYT zJn%aYzL^)C;N3!v;v$~&`~T|BuQTJ{vG=9?owjpbYQZi(9^v%JWNHvmZ)T=+Nutv{ zH}JmZZuF4TCyOtkrX%9deNb)SUdM=@|Y8$8C7_F%;iOXz364`;rOi@{?nPw&8!87pt7OXkUb9pW>|JeA{k z%D=BDgK-Tn!Bgl1!^3wv-1_=K=jwI$;tTKrvYMD;>0x=q;iwjUsC~m}MaAYUukO8h z0NTGz{|~|=>w&Er9x?ZdCXHq0=K2u7oBDs?Suyn}c+LaIQw)AP*8aPcIf~yerd1tC z!v_vO;(<0^qGqPnq{+(TV~+2!ziHR%VIKOe($rxs%QMgWwUo79Xs=^Cy2aG$MW;1k zFUd!K4&9Q5PE)PkWx%r>ephYUcsQjE=bxZUdO#nYW6A>utP^#C*f8(E-Z*6HP-|V2 zKV;T2-i7Zf1JRQ_Uru(+4`=XOhnSki@cUWm`jH%?$Be$O1qYqqNdY%nFT%8{SCy=1 zfBQyz9cj^2a_{&5gzMkxw|4mzKXx9YGu{h;H49j0yL+PZJL47_B``XiNZ9~m38SWnnZurgA|3v=l zlX->uc)pGluZ+ePnFAb)Sp)B_?zrxi@SFI(2_A80*Gtp#`gr2^=YhjNyDpyB*>!8f zq^>;F)81)Y4!*U%>wXy3`cPhYF}#v>RmXKM>};1LJELy?vSHTFV4Murxi(vaTnE`2 z+wKk$Dn`r0Is&@2j+Lvi#w9nFZrc2|M zhcd;3vQ6Ur-TC*w@m-rf;+dn-rP1j((Z%Jdm!{S9IU-Lz3|uL|Thf6=f-`=94jx|-6Uu$ZOw)G`B8Af02>#@84oIDimam$v~9plPN&|b3g5tNIt z20o~V*Z+EeJSp;A8o}jk@d>#hlJk%BeU6@uCf)__$}6F6E_tKU_dH6l#t?UUA&tXo9RLj+*f^v9Q*=YeiaUQk7O(NexUd0@!S=0E3(CNT3^d<3opq4ul<>??(%&j6mE_p z6J{+6+jGB#zUoAY8@$5Yc9IBS8idRbsof||~X*Og;8WMLcYP7lTHwoRbM zC~$6PeyQNrujxDro@j-BszV+WpM&$&)SVTa`dfE*{)zw5Nwy9(v?_T5*#e*U^bY(Z z58X!$Eu(oH`U3nt?ams=?jqkN!_1#GP&P{r^+vUpDz0%cYw4a*+>Z%=sGe>!P|D z%mH5I)olYeDc}ab0sj}j0o-&4H+z|TU!K)H!HNS0;W_!NTSfbE#739(_g*bW6uCy`62t@_5O@Gz{in$N9%kc zaE%TSOXPXwi`>EUy8rf0o>$Joi=2(rnXMZ75{(*wbsO@roj!Z0W;x@Tc~m%g19!sJ ze&9coJ~P4T1o~7>@of6U-b`czw{pI6fc-b{=)mwmZxFxd(5L*wMdDM&x$joDugrIu z@Q!lEzJa%p4thadlfPX6zNMR_zZNsE#rQAx;=eotugW*oUfsXXlHcg`8FE&iBiMik`sf~jZOE$R za~(F<{lo#Pk+c2OhY{^$`}LG93H|b@m){FGcO%E&>s0rCk#G(C%8#q{Z0&n^ze`@t zBR(KGRt{hQUH3`|9mrkcuTq2gwN&_sdW}(hpF!YVcZv@=F7S`e{9Wj3_b2mr1$hV0ZS-;I@tW@Tt~B~w6&&p89t_FG$-Fz5&tuSJ1Nuzos2cc4hX>L{8+?!g z{2A61-NzY4mhW}-^xOE0d1dpdhlk$b+1>D)^hbcY^}_co=wE~k=`7_Qc(Z~!)?sQX zm-E}b+2oo=`gmng&f9W_v1)A*cglc|>H_fr)Y*X#(4(@k1Mt7(WD`DavRu@nk5uFR zk-YXg?>aN}c#wEo3UMd)CNE=My$oDj3?5%X?&fpeZNWoPn@i2y-}@dl;h49^i6Xli z=haT*P9Ec2%{Uc|qw^qz4`9DY?iiFxH|OHk zk08gmW~7(ybl$ULQ#UaB44S8E{Sk&V1ku17{O(b_dQKz?lZm>)uB3?d`y~b&Orx8)!d8 z2gPY$qWwGVQ?&nw_Gh$zr9FrC6WWt$rI!xZVyDAf;z`w}-GL5LzMSHHs*|RgY^l{ZL!tj|tc@Fp zV{Am8`oSCbggCp{X>COBnL8JkEDLyNur`{U0PwSU*(qk9Ot#v6;69W7mxBMIW7rL{ z%?uuyukffnG9&-saWEgjm7LG^D7aF71-0-teKQ2OfxQh+z-sg{_|pBropH4qy_(LP zlIb7j9GYx~UEsW#d{6n{*cFxY%EKnF?GFL++VIbm*QUFQu1sgGWKLK0hS!<%)yI?H z)}MI*^X(4*sX|2Vct->x!EXUto z4FBHyW7an2C)+y`*I9s)q_Y6skGTI^F-)!7Vfw;0NOYsGU`PH>7OmXDyOHOF`9t>#k$WH1IMc*uA;F z3x2-|ypLetWF-7P5*~R0nC6wA;*APge%Re7nivg_=-!4g@JOUQuxT&4Lviw#cy>Pd z0t*Jn-o!RL!P;i~dqlavk^7Gv&&Pme79Za~6TF*7JAN;*{=0kw*)WlekncmRqjbN`M?xd+@Jy6_o1GMtbmiMFo51~^vG}#ADbjSBA z(8T1m0Ba_A(0x4Jz{57?mI6)sIGX$uSij<9bcT;h=Wm;}mcFF#i0SBlKcmZ%^;H4y z$|s&ht2;cC<1mWXntq|J{Fg@bgluzTS8}eWEyu39pVw869k$39fue}l`#@-k#@-2k zoBo_XmxG-s-8KVUC@v?v%a1WmhgWy={FH*gCf(bp+K7LozrFQCO>M-B!9_G`bEh)+ zP4|UseHUG~Q1=EpyZesq+)I!d*#)W>r}&DApSb7cQ}1xKa?Jel-P-H$*uXm>-qAfV z70^oStMr!in#S{a@4DGvW%dS-iZS=3Reo?f?K;}-w0{zQ>D%1*=;OlCET6H2+i#0K z?;B-f&u!~4yo)|Cv32=GF&?~)hi8{C zk0qgj-jnE;3iOfIBy;|fF@eV$cXK%7FTf|+_3>oJaXxP&I>N^H7AM8`PCO#Mx03z# zcNni48L44CSd&3~U?8{+7N)$0vrOE9KKm zmV6t!5!>Km>Xphi>snT)GQyKk{-W<0}@TnB5r0mi;MweEp4of0sQomNUfJ zz-xlk?^sYJ8yH=M-v%GjPcg7d_7(xR&iIw|A=he3VABMA4EZS^@!TiiEy39GIR-Fa zorf!C&OzXi9A)zf!QbH|n%~9zbY|{)=65}KlOLx2nhL%zCj{+W28g(os8Rq@ACObx7`PhQlOo3innrK)v!Z0-Xr}#1m8J=yqX#YzHcTy z1AOvP|Luq2B_`&<-v-Zx7FQ+xU0e}d9bmqKe>d;E2M$!T^nGw8yJZ8o(%qpO!PO_= z%J;{Fn;Efqo_Q8r?O<%> zHE!d3`N#YCKF&M)!PS0)tL`0ewG*6_fRAkOl*Qj~feQmyj)M!|!Ppw)+3sab?UTx9 zlC7aTxwTjNF+Tns&|I?dBJjQn&HWhiKK?%l9D~4xV#ont4+2L$cxad{nOJCK;wt7V zzxrzC8wCzO&Iqm(3E&vS_rkySE$V?q@x^4CZ)fhZ_f=Ds{gEosF~(XG;Cn+a_T^rl z`n8F{YF|b?UlertBu@Sti9Ot!6Yy3Q2ffFD=S5&utiA$R|5!}^9JFcSyFL6bK3)PJ zw*vo@!1D_9*`JPFVQU-&CdJS90=xKl8*s;$wfot!#f<+AOijR~c#`q4JHZrZ?w>`S ze}sH!Eh*`=#*-sdxdNZ(8O~$fK)*538~<7U<-H@Z>qgjop@X#RSrhluK0@0{JCpWH z+U~Sp(C()$#pkqd(C(&vigp+6PiTk8Z_l@ON3wpYWj?dPStGcSZex8<8=Za&*(L9Ngu|?`G|gXCff8{f}cB%XNJQQtY^jsVLi)+P7OH$D`$*t>__BGd$`+J z%R1*d%Z{4-s`amWu)gj>)_XD+#l?Fu57ntsoIq!gb7ptEzqpYaF}kbIoI}Rv6rGh1 z@ewp=h2C-KEdQYe8n?j1ExnODc)Im?HuhhRt(jFe*o$G)b6t}c z%9vv6G`)B`v9>U<@@z5rBqslaIW^Mn{g1kR0{-Xs#NCe^TKc`te#1EAhp`oV{t3U! z*2-dCypeG_-yxdk`+1EPe}(LY&I8VQ*vo%_$7KsBCu%k@#>!sIF04VwCQhc-h?@rmJ!uw6@u=NP`&|ND{;uB1PBo}B-XCpmvD zQ1rn->EAy96v5R+ZW-Oii(>jt0{cm85?(oB0#!wE4`nxmSG1i8x+dGTkXW?cy@_UPL zlY;F8J#K;iaqi~!&u7b5%mQ|k6GHoUc=}{o-7kL!PAKSTaRu~{^3w)tUXxWvu5qsRAa}c@UCoF-5Jpx`!$n~?qAd1 zqiieL(jnwtd*IlURS$GOv{ZJL?&s*k?>gU!e3VK)>c^1hfvs`RY+E}a)=A!EQ~LXj z2aq?}1zOK0!b_io?0#cCJgfLCv?|qpqxeGWo?`FPg<= z4ixW`jXwg|BT04v`;Vo``;WV%E6~GfJl_nidh)!#2Pr-=V^&xm4pT2pvb76eNcZ8s z>(2NRi)%aM+lzjzk93OHo4%w6dcn)S-recz4X5vPH}f3&TnyjKPWUzb?nMVZPM^BV z_t*5-ihf^`%7^|+imX3z2hZKkGv;nzo{8}r?_^9tCzeA?t>qJayS&87V1^qj8t`)9 zsS^4~K~Ctr=^-g>KDCoL~xTY=ApMc7y1F~~=I zI$M0)_;g@>^XYI2<2?!E2rd#UI?toF$tt(jPQ4c3(H%N!Hb2w}uSBo*BUN z$i0dGnY~QlZ$f4c@J=RteGvW`h@MWispk#1^&@VgRW9CKTCHo>(<;}ekoH%!1+>@F z&Z3=6dmZhmv_GUxr@e+&Hl-hLGI|<3)uV3}9~4j8btk-XZ;SA?AJaE{f*oHfJAPTI_@f`sWUP!pf9YuUqFMXdi~b2QBlM!) zpB}V11VxIEMhAP>p+mtF8YcENDo8J3IP6hVh1 z#nn!2vlZI=Qe5pd`fAJD4Tm>Rjirt z_aI(}40Z>e9oR|Fb&A&&a<_%q7b;MEePNaMg_?m?dqTT`UHd^}@Oc$qm%j{c5<7kv zO+3f&TRj+i?+Ti9CAh+O%qy}W1UQ)^>C`HOv>8T9sW->uP^;AaD8t{w|=*AC-mz_&}F z^|pNM59HkJizDmW^S&Q>S1!u~$h>U02M2Nf?_@rCflVL%zUYGm%;Og3un?PJKQ!}W ztGlL=YluNt4EpT3h&?mt^Z8}bL?8U0 zZ)TzQ!eJ9{$Y%U}c#E}%*aZ9p&z}z;ZG{Hc!}lu&2VS1X|IP3z`Gut>zwl(%YsM(z z`?IfhXFL3L#n~H;++VSPHCcHA`^YDBc><-Ir$mfwn>cZheP7@yTGk=A(AfHZZehzP z{A}Rc2fr)V*Uu5iKyNK#K2z9x$w$vAZ*(8DD}#UPk%|6pUPa970C+guhrM`glw`gt zS!nMpZi26NfM>-A#gFOWWG8r4F5WK2Zh*fO6S$b)r}2FNJ||C(T!~z7#V^?m*_D`ptuQ2SH23i1!4bWe{4bM$sPnD`Wh6c=pd%pexWP*YnH@o_U66*6@sY zD6VIq_n&yi(3Uk!Yhlg}{{CmsYi2Fh-Y4hX$T{ogDJOIlGTIv%y#yI;Wqvc$;j!WD zHS|WG(eIVV+r5CR`lF+u>D7bKH^6cYa*92X$jhRI5Aucv5|<*k86_?Px?gYyl%zX2L= ztYK{if67fMb2PpR8spn1j)%V3(N*#v^LeH#x@vx+t#Vtj;Sw8KEo}!uTiHv79*tIK z7GC4~vq9=sF8)BVeDo{+&XIL1MUT_rZPDWl^qA;zCVI^5&7j8)0^daRScE;tNfF{1 z$md${uf33R;{8^hxAA`*{Kt`*IKJa9@Gsw1x&PP&iF)R4V(0LXbY=rI2r*V8 zGzc@+*2{?Lb<&v=82?}ocsrF3`Z6A(|C|86+^mV^;{q>-z+XR}X~Djj2_8PehkOzr z@{K!e&Z+KWKyPOl{J3>L=X=)oR!x#j=65wX9LOAzS+fuRD)sIgu#@#}A#zZN9Lzxu z7NPgHqHVS(oTT_Djzc^jo=Vsw^;P z@E+qC0;kj1EQta1XpLFI^__zgp?5B?!`j8B2KTy8x)~lk46COCURC`3Ntg)4SI_B^z z_vs8^__(LLqftDA@BS*h_8NU1gr}6F8N=2W-))*{`NGILJUsPJ-z=4n80YT>#{c7e z$TRJ#o4;O~Lcc@12PP=)_t~lBzhZMelNwlU-UYW4CHu_D@MWR1N6)fydl9)qqkumG z%*1=EMg#LDoO@h_fB7Qk9;>0zf0HX)50Cm|mooMO)|w^Mm{>H{&Pn#z#E0$undUiU z`#zrg4)RdJ{1l5ZYZ7BDzS_=bHhriD$du9TeGGSfe9rr8uzS?k0{R)^%axmd4)A2j+YX=g8B@J662-d1Cn^g8e-4vuJiWr(>>9_`CL9KW78-_9dW#Far83XXrAy(8l*2RjjkIp34qBUVDymf#)O2v!Be|JIO*HT#{!HM?J z%dnIDnCK#&P0mU6`EWnHro6KLjt}2qUhDaQ(?tE{@I>Ee;_v$pFHKB_7x>Q5y2APj zVeY)JIUx7>IUtp3!5&BCfYe_FUo(c*zZ%B*6n)u{4;|2#jl;=dM_+Db{>llFy}K?# z3*Fb{64yPI^I@X{&^UGF=l@KYb!i@YV;+0T%7t0fn>B@Z$Xzcn7%S}$W=0ycA=XBK+J+0ZHUt@yI)gxUC2_m#bUKcmF1e-*@Y zwLiClIt$zJwX{~@r&cym)8JXgehz!YKWDiwKblz0JfuHfVIErdUS%F-%;9;~x_4OX z+LO77{|^G+T`Aa8!QiIPflqr@3Exq_Yn9#=ktC*b#Qr`@klD>H%PR z4A}g=_4oLHJFu+d6m1MUk~us3?KCbce|lq zuTE>Z{GWP!{z1UA2bp*ko-**%I=h9K?p@GrUx)m`G8|g~-zk7z%|v%=?WzSvf9*OSTV)&c)0zH7z|jhfOMs;a zTcrsYrL*<{qhfB|_2JIEJf1%B#O^zG>yu`)O!Od)N^M9MK@Em=%=PTGe zW%!J<3-AFnokN`PLG;8l_-Yuo>QMg9~8 z=d*U&TpQ)}+FToKmP8GFXL4@fxsT8l`}j?9hR5JBKR*3bY9O%`e)Drrw3fp3iB`Uk zhci3WFjxpI$}exr(`7#Of?=lPqgsor9Jkk77;DcdmCrR79*V(3F=X1WH-L|W?AiS{ zKbKYU;~y~AUd9^IIe!FP82=S|6hMzfi#ndYP0kOWP9LfX;nP!l!Uk{o7H@^%P5UB+ zMFFoHdmY;U9}2#&XHLqqyn(q6$A{2<^r_HE_47v{3#y+VE8^~P_Um+3OEBo3UG4qp zuH6@j{q*6TICEUbc#2iO z&37Z1(|X1n$sCn)TFd-KMaVTsVZCNP$^rj8^XcDdKdvRE&%+-w?`r0~k9jN4o0w(d zN}kgm#Z}B(KHI=f^FA2i-jk!vyTZ;}=ZyS$=MsN3cy#j~#@vL*xy=7m<}W{D1oM{< zF_QVqf6$zp8Ml%7kIp5o!u-cFug`+LoA)w*#TXZ)_I|4+Sv^t9-{xh~7HpLyYoE=x;d=Kt%k_?OrEHb`_ z@jIA90(lw(F2*oN?NyCsp5lRV;5QQe%?GhxmVf#0H+0nfwX9#-o85;@`!Urr^uPh$ zd)4TIXw{cz9$G3}uV5^C=>*Qk!qbH#neU0j)2IPw>gk`>UVD|?+Qc=bb}tJ1x+-nL zp{3}x#B^|LZ6e3_$f3!_4+epy*u7tj;=ra$@dLD1a2YuHBfnh^ z-@L?cD_Kj+_}%Ag_TLj{Vke8QCm@S$eBBpaT4M9ara*^A_##TXhW0$#RY&8KMvLzX zU$3Dr=Jo9M58Oe;K%1;@PKLoEQAMI>9d&FMNyw<;sEn5f$ob2zzfh`bOXGv3>o&oUxPjzv$S+*s?E0#|s%-IU>^;dn98k zZz`FNFS@Y}9mAnb-%MuyJ(2BEtn=8njnH)KIPG%~e?unQa)z*Zm1}Hp0{ykNh5yZ+ zyTd+~Zc%J@bkNGf7@k#3mYm?KOW}JzHgP<%HG@z5Z0IzK_z^LX0&r{d30#>;qb5T8#T?-RxooDGaAyS#z%PV2PSAJ-i4QzkKIKfmz`U|$XFucX>Ngu|f$ z&3Wh?gL5a_Ia7T$(fr&W9%QJ({t@CExye*O%Z4 z5{j+w?Pyz(XLWWxbl=W7reT)1sm~hrhQnvRpL;6(X-{A@{p}GhluyH)6~_s2Rzi4B zmZOUETr38kQZ~sSsNwQRaHKguz6alSX+Pa zRmje@(dy;evz<>x@4L-{%^}*Exb};`~v@m*0LB;~zvXU(NVt{{VkQG>qb}D36W00OpKkek70} zZq&x_&z}wdO1|J<>6d?lH^dil<|jUUy_ons{XffEZO%TxZ?d_SKV1W_vCoRm%JIhg zXQrXCWUq0&-MickZz{$sUt50F{lHuVtUG}F0bo^b>4W%ghTq_U|1W6Iuf!R{^c~6Z zet#%r=%jchb7b#r@@DD74t#f-rQ1Pb9y%NLx@zx)N7~vu;4KKgrym{*K}? zy}_Gedwsy$USRGE-jrjuGZ9+i%YT%7FU{|`Nw&^ZRwtehk9Kxj8TN09)qneW{toys zR%Xvnq%x=bJDp=cFwWXs2N_rPVwkxoK6v1ij`?!62N>JQV$JAA@|bd zqoIrHE6QFKOewpqo{(PBbK09W_^ck{4TDyEZ)y`1pofMiSI~#a*>a7!?Rk?|1?|1w z2ho+vnQR@AfuSv|1Z`tV7L7Z#g**Y+IBt-vUm-Uf_1^XTVK{x>j+=gvo`m^x78 zoRvY}X>-0d{AcDG9pZ@=o1w+`x^;|S8`?Ww%jcYov3tmoXvW@`p4U1pyC)BS?J;Z& zooS0ekCDs;{0!-LHC>muoY_#ge(kdNKN|I&fHpV6lOQx)q%mxl)) zaXz%t(_lke&*@0qV{Kl0Zl-$eoB8=XYlq;hRE%UehNnkMd++j*f| z-yPj+{d4u;qZyb)cXO`3V89XQ>MuaoOz%w&N;-2u=giey(IJw9D6&%zT(k8ZeHq?z z>x}aCg|q#vG4ho%!Oej+13cQcJbJ~BOdV42HQ&LK?O=%li{vYgpKbchcQzCDrs5#A zMK(qkrN710%;>Pc1V3z>{MFJX=bhL3x@Go`tKzmGz-wftz~u3`L@Li#OK z%!JseZ1~(<<#(XFfk9_Dw$thi2QjEBo#9{&ueyIgQ1KvU{gK3A;h`1flJ+uGL3nh&pdQjmhNqAKVOly@&)b& z?SKa-@A(eD+pyDAXA65F5n^6p=Hrj2xY}aI>s&unJdo*lU~BiMe|PV}dp<1d7HB*B zq4zYuHvWNc6U&vt{WW#DNpwpKkn_tmvY^=!dyGA-o;&Vh#t;TNs(s;eNq_N3OX zPS5&qGSGXxkElT{A& z<+r%_NQKjT=#m2X>>2!Q+3eacn;S%zFu4W-jXn_Dh)`q05#2+ZPn|Ex27ZekEI=Fz!c zY#L*=oePIoOuUJH1*g_R;e63}E61{JgDL1@V2Plk{W)*{m94*su0K<}aLoMQx$XJC zZG4k&&;JRQU%K-yTZ!u(jn9(x*$ewaZTZAH3p9vRN-t*gqy59}oO^P6how!` z1CQ7{e2_T9^TcO~cM-kJyjT zILIf5Ge`C0?Y>Ih?kVK!zR2gl`Iz%Z_|YMFtpHxqo|Wn#UG>%1OMCIZa?4Z~WDj&F zXT{W%0>syfj>%pz^wKna5#wF(xDZbRC~v(S?gA_)@g5bKWp6p*17@ogAIu-d77v5411u7 z{5GxqiusJ9-ioEIg`;puQmz4Olj16hA@>8vt-zB3Kknn*{-Rf{;w@8en5Ym~Fj8qa&mXMCG?8kpnd zJoh2*H8RIq-jo0MChrk5t@?=fs`CPyo??!&#g!Lz5_5!)I@E8xk3H=bj5~+Eq?`S_ z%XWX|=3ipxpHIHGZ15@AJUR5Ky>gx5IiG%~f{S5%XLTU)559Y@TKRs&+#IYa%y~O= zeusAiYl!(aF<<2wybGK?nQwskK1x5TGp}5ry%!ug-xqoRkIZ*3dgn9vx(I)^ItX7g zR!}fN(?ut1UnAGc=Q+a{j@KF&`7qf1=BbQ>-&D6YlI2~%c=^yf3M|SyS1eujOd~iE zUY1TCJ8pVpvZy z&(+iyd?f@Q^PKiWuV&oeGN(!Tqr7Vv|4KKfdgi1(_+350AKz3EOVQCm-01Kd}?O!wcM5IrhtBZ{Eu|MLa7z z`##{<1HK)AXocuv@<_36|@aznS z6V<9xtuWQUkiQ_Dymi@;b(X@nJD->5C1*NsuQTX+9^Og(7#hjO-Zz~1U?29mncH%7 zNDcmLRz$UH?HXcmPR`_%06E~iJ3Hp^?|8Rlp6_$$F2sdZH!)U>af~0qoMZ5<>g+03 zA^r7!D!PN;W$&tQ?Tc0X!1Buy@UR5Fdot8fK5}ks=a&PFp_uA#z|FwIlT1wY3Wpn? z7j?D~AH=|VCj7D$IE}pJJNxx|iyPe`C_Slo{!nP4HP)9a#rkDSp2yr|b2kw4IKPNo z^_-|#d!^s~db3aCf4(#rzb$*bw_pwSJM(`-d6%qhS|68=BmW&dzbU&a>3y9ax$kZp z;~T_pBqt^0r>bUXIsIjkx1C*$@56WZu>K;)roROJ5tk_q6rJKJhO4?ZU-q&44FP#{_Z;%Njei=$UPo5spSCdn`QRN~8~-$htjsa8vasrYelOuS z`KS*-<3e~xwOmGVRx$Yw4cS7y?zA?I=JYW5*{2xQBKF6@doAy$+kKdEtPmw;$m<@j(>*POfCt zeVp@Hi+*4C06YR6=AI4jz*{%*&Q546d+Q z?=tpzwYF|&ertoQohin5PpnJl>_AOm(@fSeogKI#1fJ;g##D4X^uMVGGRSy0_aUy< zml}~LaHe35@?MDF@{WH_XgBj)3T?Ho{UYzkhFQfs(oHY&PT7>err)ymsg}2FpVOuu zx%RCD{$0SQT(Ka&hmo~HXU|Tzd?%eI9k8b_Inl&AqyvoYUEJ4Gyi&1_k%Ll}{E>4h zdpU2=Qp4U`2>Ucij@}x}zA1E_16^C8YYD$6%hO*}s|vgJb^4f;Gv15TV#h#-$w{&^ z5?X7IB@B*`YlHuk?Ka1Fm}Cb&sV3g{9DSrQ51kj4UN*21M~w4s5E_bZAFECm@*tmG zV^kyWS>Qsp?1^6j`tG?eWbbz% zzGJ?RoNQ_?=D6i$8hiWD(+<~8;Xt8;_O?eS92y=J$*X-qVtGRXl&{* z!(UG!8=KMXTOL9-pj+8lUoDl4b;E~{j0p$&-|&vp7lmiqwH5uH*v6ia*4Ae@bGWvw zw|5_XH!<(-WyyCLooDVc(s_difkE}2AHpX7Eq-lYx~16;;s;@HFPWIlclC@dS}OJ{ zeb3oVYqJ+x`$Bo$=4@Ih=q+RqLOElqXQsTd0pP~uj3HMCnBzd?N;QjG`E4(9l>lxw z1xySjj%>9suNGvhUgIKLab&9mT1v#ULA3N`Z!%Nfn ze+Rs7)(iAlvdrbMm!-WF=^4M4qraD;8VOgV;KP{pg7`oDC%T&VYpu*SjlaSJ^N*~)CQ0r zCi#z+wbvoTr$Khx?>o?$u(ugQxg^Htf@UG;rM2MMOztLS4gqL%**0Kjt~yUN3feTo zFFNa-$8W+{%d|sF`$ni40-g`JijXh-cRpeE9#=Dt^ zYRr9zCH6nQOU%xdJdhIf#aHlO@V;QO38)$&{pFsQcXUT~z`GTGbX zyYR?q)wSTt*AoVQ zWKFT8LUQ8Fo==|Y$}?B&-46bd^NkeW(0cqNW2~lb!z>)e zF8f@59^AX=UF{2M{k#}lX-_x`{Fh+=n0i9cQE;u~d)ZsJ)8`-gy&ru0Qo4;lEbkpi zEa3l_k?S(x_TvwN`=3*elTGgYPPdkP7C$!qn zx}EkZ=L;Ldf8f%ZkbICQ<_QQ)G z^|9ydRO@CRf9ouG52sf=;40qz{q@o`VA_Gq1cO#Tg{Sy?7S6usE)G*iB`btn+8B*;!awJ|$Kc_| zv6c1`50E}vQqZ2O{z!=Z!BlkDBJ2(PC+RNf$hY}kx=VKddi2&O4aiw{d%wc~=HCz6 z$Y%>NrvR|XF3RtX4UF9&d$AjE1`6Br(7OYR_QR9wQ@`FnWyy!|`Kz=#-_SY!pN`#c z_CmM|Zxnt}2w0Y}MKC4n{h%C!<@jp% z;;UVcuZ9g^>_^31K4Wc)VMA#DNICO{ZonpeSi-z+f^L2dj$CjZK~LB^9@G-z`Q$nM zf;qMF-Op%s7ugW@{j~NquwNsYh;<7+EdKGouV=qdc#d`pwtes8>B4mUiQ_}wYxI>o zhW~r=K9B$Gs!q>p9Dm=W8JQD|t(-x*RA)5P|9{rbJif~6+WXHrCkY9oNFdv_+)94+{_x4ZZ0^MYE*EkCoHSe-+y%B*8G8`z-X`ic5m%D$ zx`J~>%Q#mwA{oIJkKhxJz-z<~D$5dieguB2MJ6Kfoc1?$fX}i{#OGe?tu<$&BGWnC zJGkjYKL=VoP9HiOE(e-K(A)CC))Dj7+AB_;h*=9VFK#Zxej136Z6tOBeJfV9VJLPr za46QXjdw{lAH;Sl53@&>agSu24>0ypomJ}Dv6u3n_I3R28GAmY_+}q4P6RK?=Tfba zYOd|(+Fsz^GXmK8Z=Ui=gL}vEJN17(6LYo^;}qW&Lj&mxotbEI$iUks&f1ooZRSil z**^vkr6>E^C#}6&O`JvY#Fuv6w~BX3j+zRoJwR@q{OSM2dkuYB>^oYbZqJqHKY-0D zpRQ^V;4Dri(3h^B{an_DsrBrW_!Z7Xhe+O=m^;ToFYOyp++McDBzRCY1)8X*)I2bz zT;wX93G#35{ef)Na!!!OC||L1_i#?G8Q0js3;nd-SvOD^RYAr{KdXQ z=U3BywVA-YllR^Pf9>ifdx*ISpPKd=DPCX5b=A`w$#wOuwU*(fpuY;v2{L);`01R# zTK=@XJeS~^1bs<|x?FVSu__iOA6rXDc#e4}%tv|4>#%Voiy0aNtr-igWVr#q#XN9O z0-f#(2QUQuT$s}q^ZP0Mthm%x=xgGA@Uz=veyy2pMOG}@hsuN!!tg_m>TWf$Z7 zd2SGE4c^fR54pOMxAG3nr!O1_{{#D{VSH^%+H#$z^PbdP=PbsoIIPb9(tbmi6L~xD zz(=#j^ZNMB)HsdrvTI=0UZ$@4u$_U=q|DN;4Ek%0;`XD(d9T)K0$ zu=xw?Xy0c(`jGZ{+V^R7rr8==)slOc_EOrnX-}kmlQsz*UZ?#V?P}V4Y0Z36Ve=qb zu=6I8WAiZlMefA38hExJbHWUGRyA8hH~DB^;{Q_UB|XbCt@$|FlkECbaiF4}tYzW< z2-g&2&^mlNzb|2L{;rxVf8)2?_Qf!dn!LLS&sZOva@QKTw|?Sbjs)^@C!zl*LX!#L zc{0!Iy!h3ZwmmA7 z^G;}^`J#-rV?3v7=wIfSHEdtyAP_X1x* z0DB?wX!L(WTOO3w%G05tVh%IVQ!@kouUL4kuJhiz;05{29^*gfXUJq69^)`FgU)y7 zDgEwvTSxGD+UJm+m9%%#K12H>T9-d2oQh|+kQ*x=*IX|9-PYU-o0@yFna<>s#Rnfs z?&*Ba;4?C43wciYn7}!9#y997V(yx)2jC@?Kc49UBs~UsP z!NdC^UF!DHpX7HJ_UkPjRacm`1NPbBQ15M}hYo{h+wTJU{gZIS`>I)oa6S3XGHQ-+ zzj#Z(bI1*|IwM%e;|DNumuTB7+eF{24U*Fnp|u-2&8eRRPpt1*-eL~yBf>SXvz zOA$8v`c8o2XEWoCmlAF_$_m`=sA;ldqbg@G-vIA*K6RrP3Yol zGw_d$2+rDp{;D~vH6C;6G~?3+_Nm*#RqzGAC(T)$SHoEKee+O!hTN~SnWNp|V_=q# z`g)z|39S{I)A^lo{Z|<1O#Yv){|DmN;Qs?7;R)_3L2t_!F8_N>KJ>BVKvM54y)Irg zaP>#_Rad!&{L~Gn8(+GK8|@nu@MBA0fAk3aR`^`Ek!LTzRV)D>V+pqQ3tzfdN;q~=kPqd-u0t^*NfYHZMX8? z{V!9OC4PsAlq25`0!xHrP@n|N*$Jg>77Hg`qtkcV-+FNx1TA6{$fg>1k}TTejt zkcm?MYdQt|@n3TRw1o!S2S8hRX~z&?o8ETz(yicHF@jflM)~(wGuNuV)N9b9k^dUF zrus&ydn^8Sob|Q+h4vX_?9a6K(SAZ(PP>lw8d^JlP>1(s`arHUXSBfMGm)pKn%_`lZjXYrlZmfVl8L$&E1Vt-Qa!oj}sagz8t z`Y_%QIg|M%cK@EvDcAaJ%QfV&g3li#_l%>iX*{_@+Lss~;NQr##CMzz*78&1{I*!& zh7sb=x%IMbw6Eb&-gR77`@Lq5#bo2yHNnv=s>*qHHa_i`Mt6h7vKu@hb(8VjtV%^DMBwvhqG6R2|<}~eLErO0(hp6V)&w~C{ zM{L&T=w7brdp75~WPuCiqjmru&F!iBt>PBX_>l~)cwe%N^*HZpx(XhI*EBy1?lr*e z@qAcg?BOMUsc|6J4`J^K=SA2Krr$s>SNyQeKh^`kj{IXS+}{$SznXUbG0vyW=4@5s z*t~Z=eEAS^A^(`EGsHNZZ|uLI!xxeEe3mSR?%)#B)erS6YUfueyupsGg}Az6{tJ+e z1=Rz5d?U#X;4%~cX(sQ%E?%)Z-rdws?gLIk=;J2fP(8L@+rx%OM!+M3cu)FSH6d)r zRD2ebJ6D4Kb2)fhz$g4==DlAz*$w84+N;~n#C)1OYvmnn+sH>l4j=Hf zhq+C0!#U_}6Eg%~z36uba6aE1+%XQbry6{@GcwNrU#IiAG%ZFX8Is+k`TD*e+c?oc z#@EV|9iTI`zRC-2!-r`0@#_8vxg2J!0sLhpfjveHIs^EXU#1*=>0s5pzYUm_Ush5r zUzk0Y`WoO*J(oHO{DZkyxiH#0tsHx|r#B4jAwG_mFOMBsZ1(EIe;zzNG~me}TmetQ z*L$`00QL)LrPC7NQZ$rpeGk{td1nuJ7!6I${`>*$d8e4%InnU|yd(eWFSIwhc0k+S zXn05dRij%I-Ob);?fL8_-pS*=;NdQ0Qu^gAa9hZG%HUDuS7(CTm%NN^_?+7DPTA%5 zotw~`${8{>(!@L9r?X@c8BXQ3+RNSF7xFwU5O*LHHh z*3t1ycqd}l&~bRposWA9v`Rf6cQ>?}b3A@l#=Qqx$=B!36jxeX5^FnK6Cz9c2EPn@g41QG@IpI27xz8@yqedf?_Njurt)IN)FXM3c|dl#sr#h$ zeCa>n#b(BLKDtM|xSsJTH_P$jRgCT5_?(uuFH!cL_;w?;eG|;_iNcuKpZM}$f;yV; zn0WBnVC?-E`>BjQ{VeYqr#}Pxt+BYRCiUo$&4bdMJtl`bvSD%v!`RmF(nDF$FU4SLjU{u`@SCe`uV;RC{8@QBDSaxM8bDP#NQ#RYVQg)^0M2+#0ZzE&O z1=|_l&rW78WUSIXPxNFy#Kw7&_iRs_TguL{YsJ)Dh@EBRIflT~W#m)iYdB0CZ6WXW zuzhO48S<2C=o;W5LLCVCjQ1h)`>|!^Gu{KtA2NRY*`^l6M;&QTq%JGAq+-w?V@ImK z!^hZ>%02u9J8~niegdD#hAv67@oUH0^F0&DU6eRmVx(*dYvU_d&cIVA-h8u+0IkSK+Ujz_l71@M_>{ z0iV}kA6|ofTS87v44TMSB)@P1yd*AxpA-v%emg!$vG@5s1Y3M6>(62zTYN0{A!9?{ zhfWtjZ^nC32t7kB-&M>}!uRJ|Z!@m9KEpnMR?Un}KEHD4Zf(E*{`N~FRkEvJf+tFO zzvlJ^$D75$+Jf^?jg3!z)GMiTpd7rNz`T<&3t!5?lkYIWm=h_y$@*tas!x9xFs_Gh zGT_hM7hvzfpNhpPW>wJ@y${T93g%+^;eYLepFa7};#-mZDn4!Y)d0T%o=r^QK6pcT ze-odKsi~dEd&P^ z4>lG**PMqD4O#w{&m)z;8&7t*66|Mzzco+DCRxb+_vKT!bfo5rTk2)2>|iYKaD4}~ zeZ z@yP!my~7-C>a2czN{n?dGR@czF#k}n!1#=cYTEmY{`1oI{vy>oP4^cmH}ZDyKU4l9 z^w~yyMq0qn$uQM}#M(8$A^y37Ys#^c4i`S14qvx1z$dtB#V6mTzbnK`$c6Ox zQg~=RvLPSbj%x5J*$_O8XK)%m%g6-~4-IY#k<(%MNOr@Bke3|V6k=^h|KL+~5=8S` zxGtK{&a`;AF^9D|_*AWg>)?+Pcw;YknFDXoPyNmChJ5(9uB`*Kx|)N*w5IKLy4{Poq}B^hf_Ef9}R`K43F1ZA4LoL(CBdd z_btF{boez^hqqipu8w4LB&}p~EIvfZ=2`dzC7WgV{v@05_!PwEcOUPJ2fhl~ep;jKx_~*7>tElj zSX#taO!Aq|nN@4?Mf{fb*R)U5s@~~x+T&@TpjEwx$7!30IX+7JF6}bf2WV?)FQu)a zEv9{#b`b5aX?xQCinf_NxL?pdNxPU<`)wA{{*d+o+A><7_Hx?$X~)psOM8esxP`QD z(f*Y7McTV)AEv#7_9wIzv@>YSX(!Xpquoj#+<(%(OY7nq_#TZfQZXCF(SDd_cPW;q ze4M}C{k7F|Wr05g+A3$+oi$ty9u+fs7Cg!pKMCFP`T%l+Y6ki_gRuv^oNcRId_P!& z%Qs&_AMz(^@6HYQMee~@b}xEY`HRZGd@2jy7kw%g|6W(<1h0s9d%!E2zdm3*@AFA$ zKQ=t>Vxh%clW)F=me@$1)-j^1%S+nLdcKIdd#Z_+`-IJtVGQW?9<4FY(ZdeqNk&s+ zpwc6XiRi5LXU;g3C;aK0Ooyjt@|JqseDv#GxbEJs=lTJY?2j5}Ck42z<+t!6-qk)X z^vXZ1chG@xDlV!q_D#vBN-&S84w+~>F^UdC7f-?t+JG*ajGt^H`e_RDv+|A3V}4ft zis~6|fge=Q(D-72bK5}tXvq2Y5%{3e*11I?t}nG~4q{BXBdB?hUi*EOvuz3kKUaR+ zzVo^BZSD8%1IaT9BfsdE+kv?_4v#g^r}NG0 ztekxKydbC(5qmP0{E|6EKHm)Jfq%Zz_~*GUUeWV$#xRJFr@bra$9%pI;l8QB7z4&8 zp4YlqeoqH`4c8xL?lR9quaP`cqFQCZdGDVO8{bm7qfx}tsEpcTsu#La_4zp;LVo%6 z&}eBGJLYobp$d#fGFBAI^ zx-=mV%7c#r+kXbWE@G6^lxK7maF?X%4#nfI2DVN3@8okPe~o=VgN~@vFTeI%ymvc& zzm3i~9{#j*l+|O6%(d!A`v>2mAJ+Ai_Y@8G-v<8W%++1+1HJ?NJLu;f`q^1XPB;CS zJ{+FNM>n;Z$?5F|o@BGF4td6}`a!1kE2ZSAQCp_X52w8P1Msi>aHd8d?{I#l{{~0q zJ!SShpBDTWrNElsKpplDvrXJ%56{Qprzr65?SRcR0A8Xmojs!1hxS@1#;bMOSmsr& z)6QgGO`@yEF|XE+A>P2e+5&zGqtJ};4d}-n=i{+|2XRh#FL-d6my9-q)^>>BY4%vj zA0~NI-5ISTvgo%reQM8Om_GZcKlm>~e~%Agolk#try@J__rw|G8_-|qH0Il}=<7xs zhx@prJ%jusTIHjEK&yQ8wX}-IzeoE6+IMKbV*Ye`bT_)!>G36x2YTGt=RNAa&sw_r zD7m^#$gK2$)9W2d4j!TBrJoDXgI3o^>M}mG^-1p8pGH`zhc)u9DUj)uC1mCiWrh@15!Sj?+==w9!`)4x;#MsXOO;hK! zO9mdyyA`|=J8#9SfvF`}i!;|7`#!FC@Eo(hwcpv~UjS487~=(=>2dML9q&&8X4S4f zkN;G=`h5Ny!q}(6D?^0`_+=P4xe&OAgP)6l{Zw#uG4PKV23{D$$kV_L;}|sx{4kc$ zXR^18@r-GuN3Yg7dT#P?-g&_O39y@ak9C;xo-9r+{DlEdCzPnRyR}0zfNdf$W&+zJ zV9Ww0#jZO*7sal#H3neJ0haTDF^0|P&OizCoOGJwAI-S~fnifR{u=H3v2zVgBgl_z z;0$PP-VOcrZqBkgYN0MQ(x!UGsq2|Dr|n7>;m~7s*xFVaIy$kse^P<}M16erj_qSR|Ci^tJ@@DW zyH1n+Uc=gH49~422Kvgs+ql2hVRdiVXE}#B+0>`)*@uE>wH_*kzx(m*f|73jg4^1j zb@t&e-Z%)K+kA}za8?NI`@siSX?|sI)gyeyi8wvA$kH^9`DyX6$`R( z^{)HVhH%w!Y4-gFVA1+q{*oqie_|lE*CIO~i|@35JcgYio4x>=4+GA7uruz3-tzaT zetT(}-N1Pl!8sY^r7#~VCS}GN0yg+-Zzedw|Ggi(L9tX~ijgzVE^8`&R7fditE2f0o}7*tIr!l4n!- z#Pm}e=u~uq`q|DruKnZq^OD2)Xx(!vJgha(2;kOwXC!>1_0A}0l#5Op4Xi!U3(A4+ zhF%y0%)QVH;{6`zg|W~u54~_Eb9!&|!nl#(6}|8^*InMr|73$l^i`7fZQA{`^|X6w zecIi$C@lzl|-nOQpq@}ND<;_v#tfnN+gqrAB?&i*m^rPO~?eyQ0PP~Ov= zGgb#5cVu4M%9s<3S9z!M4=rm^EZ6oo!1agRn%vP716wFzbEH&5RlW^k9>#Yh8%TQ< zwI(H&XZQcT%zU1}UJdH-5^Jh-v8HBV2qR0fYmlYN3Dtf4FtEsv-vgZMY**>73G3b7 z@L+Cn`$K_4bK^wdkW5Vi4#k5f)1Ul{n}Opx;26yMcE~&Eap2ev9P;7Z3mmF-dSeLt z5;#=r^rlSs9yoS|PVjHeA-AXtc}Csgv7XF5Mu&8&8w)JLPfy;n7abtH4+2m7dDj7W z0ehVBVUNER*cgq$+C9jNZAPbrffrp~Sypm_uXU!2ealzeoAJxOQ=Aq*TrxjIKhUHJ z+lY_xYm=*3sa!>GExZRj`tP)~^`Z7X&tLzw@xe)t=zOvp2a?m(bc+8}7kHTQ91eBe z7IJzdfKxeew;&_8%=i3UWLfnfq(A0_z2w~aZF|KY8t8q|J94VuXQa(wH*0R%-ni{SbY}n7(E_TGR6}Ii;<7;gj|_D-8C=Z3btO`=3Iy!O%={ zzg7GT%_R4oz~!t}C-|xno&oM;8)I)KpA|1dqnmiYIZN=bLI1UuCfJp>CO_*CGfw(h zS#YASu|7xty^xQ&jH!e%-P~2<(mCL<8<5S<0l#DB^oiShlv`7d>TC}SO23Qsj-2P#e= zpRSo3pxt)#g{kidzbZ#-CvtQu^xK8L9fADI-uW6`>vD(dz=LW$3J>T#{AjF2uo>hF zk{@Unbv%!DeJ}nv@mwMIx%CD6=S@HG!4dwXMfm-6zr8nHx0c_|e<%5G0{6sx&{@>1 zUoX3y^OmzceKj?C*Atz!o-n%m4R=!ZYTk!%nZ9`NUvjgMbMYwtBSV$8}hF?xm>at z+wj?#@w;%Il&u%R_@xuYe=%~Wz4$=C7jkhsu`2DyHu{pWzIx-4u$2Its|W1%d&}3@ z3w}r)=ZLg%rrHGZ*BPEd=EPGGU@2sr8Q7M0V6*q9FT*?Z3!aRB`9%7Yzs}LSb$r_y z-wSqp15?(y-*_K7|73>;#;>s&93%$%A2l7R8*X5{$^%QOpO(DO(6w{xno4xtoz7d|%Q1=sx;YbG+#AN`lb`egue)B)RiAaaxqE(Re-IZsos}t-%qd~d$XTV`4(orF5_GPa47rnBzPpX zpR%~;F9AlK&*rYe<=}EX?L69*v`$V9OpSrOqZ4NU(+1`? z)uJI!t8#T>xPK=wJ<8nEfw|`{V7fN$t-Tw%#-V9B^ei&?0hWNT8=JzpGkK46qShY8 z#-32J=J=_r(<%E@XKpH(Hx@q?t|3)=*GKuali5$l_%fCGqOp{z6##8 zD&NNa{&32n#h>tLm7&-mKLZ&`aF4Sa3iq(4qu=tN55*~;aC;8mRb!i?4@6^Er`gQE zz-?;Pfk$F(CZ{KLF3tmQ?fmz}){migV|OY~-{glpJGyhINW_&h zS${D8k8<#9c46(o9J#JLYYyhfkFiY?k*=-$Alf!%+Is4r(<%<*_)p_y}k)Kbn-vA)SEUx<#RX(}Y<~^0q z^?b_tkk^&Fmd`pq&3yjO=M-x9j^Hz$&&_=9=JOPvKk=CXtP2_nm=7(i^#QB{16UK@ z_;uOTqROTgRSxTf$;@Y~ONRNAXqS1zsDDmenS0^!`Y5)uay7(*YyNg<@y+zT3!B=+ zCAj{ppl=tKaCoQ=_g!}dGVvYy>CL-(mksy(ycfKydT6`)T8-q&&4eG6CtC{-MU*F7 zGQ)Q&SGj_>zj$cz4&YUtwk6AAz-RPgvYhM6nVZcS zS5-^K`-{42??^1Eng{#2fB*F1e)A*2{qWNq-OoCsRA*vUkN4&0F9vSyA6?J=3rdFj z^Opwq!+Y21e#Uey_h;9P_j8at)y`|BVg3o0hVaCTTOw7`QRy_)e#H&wNYy)Z^nAF; z(zBJ8?-&_evpN>YU@)Jk{+wh`=X^W|?(&$Q_cssop9e25FhBQZetrS`JcSIZW`N{R zdw^2q@AbbPA{Nek3B5!s(FxtMW_805V))hvT*ACHUcO*#81jc#Y>MXk(v!s2a?S5V z5A$2LhWQ=0zf*0AijhH$Ht@9#d&1PW0p5F>PWLZ_wl1c25j38}95RtPWD4`gx7IMv zLN9zc$z9M!zO3EQLwPOA8N-LOV&#%db9SL>8_WRDynKlcpY3H!Rz4sDcujgj^K50w;3FCg71}wx}A63 zgB6<3i1{i4P>;K$*DDQHv%eOU`Ibz-X z5x#P^bl-aVKbr3S2{idG_#am>m~+o{FMACclg13QqjmS!Qh+jz%zWI?{Z8>x}I%MK{WP-eK_LQH<`qYm3QQ-O}o!$?at^k&OjLY%Cf$zx=7_2KQjt}q=s#|o7 zevYRf>2$-7Wr2^AJOHf^7NEc7&)$G7pmhRzxpG-_ynhFJ=n?c#7JBGTc=0auPzAPt z!;$9wE#Sz^`QT__gU(a^CvmdM;za(>R-7#9)QXeo|A1Bv@YX)wy^cBH<97oYrACdB z(S|{-GMY%!mp}Q-p}a}Z_$Bn=D)gb{k!;_rNn+VLx4_zRd^gwP+1O^D;U`14>ETuw z#~lOT&jFuov5)6pb>P6)Q$Oh2$@}tpZ17Lv%|xg3>c>aCZB6Lq3D|!VVp057UebJT zIF~vcmM`+@|7f!CJNnibG#^if20E8=3jJ(~j`NwLj2s<*4A}1H`Kdg=mFF+udC}}b zp1-GQB>Qgc^WkGWKab}x;W@3nc0+?(puuc-Qu_RI`dQgL#Oib8`HM~8%-c88&wF9c z4`==G4((9dw`iZoKk^3c4BFRdRe$bP+70-}8fpK9b`|Y@{B3UCA-*=g18`ad4EYWD z)cf<2Yj{6xooY~M?sjY1IBSL#^wE00O0X_Fq94w0RX;Btqo3cT_QTw+b6Q+KInZ2o zi1d=y%hF2|fo}nRd2~_ov7_OK`A9y7{@~{>`aW8nvFqG8soNs>9y|tobB_VvMCFM+{#>5x@HJm$+zQ5GEG>sk_uWWu~dqr7w zt{JQRuam!Fynh?NJ8wYhc+>jZLcCA(y-M~KeGkJIqJ11U(*N@E&koNT0@W66o>Cvm3fXV1oOmbVYv^<(4o;;})j*B=Xc&kh8S z%9-eoZi*tW#mGsSbR%|)YEnovLfPP1;bFjU&$3kZTE04_CaWl`|op%*9eHl6X0qs+?vSZToW}kTT&{3~1 zfdd7q1u6`=Q0<6a$uxR;wB3~j3I8Lbg` zcb*sCR)g-0K;O>L_f%pCsc<%uk0IT^8~ge)WM($|N2@r`Xc}^}7v0}8miX#&bh_z{|ex}5O^;JUd4&!11&0WXRlZp1s6el!|o-LOl!^I#w34ae_|T*yv%K@(2oY5 z;y}KopMl5eh>pBNI>OW)LgpB!iT_|@w96}B4354+E*8-$7W)A0o8KTO4{+V#OZ}X` zHlykd?l0rL8GY^k;F+u)mX(Y!F~AbWZ`S(Ywb8^eWA$hAOm=4c{a1O;>@_L!{Ej>; zAB^$G73KItfjgRMY`!(h%l~N~a`uW;qt@2Hx`g><*Q#Ou)7*D&zL%WF@2UyI{i^<6 z@;m61{V$*3FCNUii@bTU{{Cen4=!HH`$~Z`AAfZ-{U}~0{9@CZJ!?h7@L|wTS;KI@ z_%ve!tymB})t@-ZjA6y<>Qnv6XOgSVJ?2~;=s1<{Q%gtqQ_nWAuDGXZgnwZS8gu>K zqSO3~Cz2z{_gj{n=3jQ6u{~F;EI8f2{6gU5`u_Q+``@_~9|7OTwVdvMcUk~L$r*m} zl@1=h|0_NV?pYQa=}#&#w)Bck4I}+2Gl;KpeQ^FL|NLvQmH9raW|V)y4d4s^yTh0A zQ-rIFei-1YV6;DNHfIiT|GFik{VQ(sl2`J*ci|ZS%AXj#aenm}KNb&Qh;okL0`^qJ zJ%7^OUDX(Y?INstBw_0!Lux3_i*neU( zIETNMH--J>+sT#X`>xW6|1|f(vuiM5eeGL;4r|s;&+wniHgs6iyCuVa;S1*X3Sih1 z@Mt2_Uvj`p)*QeFp@xO(_BH&Fd% z3j=v$mz?b6BinxlJ(R8&h(*=Ej4V$`kW-NzT3FI>)dA_BzWuD9uCHuD#T?PSx~}Kd zI{jd3Z*fmG`uuJ5sL@q{O;d~Rl+GwCQGDK>TSH&T68y0PuxGNsXN2Ff88`FE21ltn za4@=U3$|81{}E$sw?C)?9jaLKaQbnvX2sVRp-&Q#_OWIIQ<>GD73j|rp4)|gOXop- z&<(kLxr2{AmfQm#stP*$xxk_L=!b_hs?O)5TElk<#`+vkkdwSxJ9b6m+E}bt`ngwiJyDLrhYT;$^k@n_E zhF?R5HZ^pxb(xW&>`(_^vMj!dINX=D$zN*zm^rr*d`K=l)&YqKIb_)PE(hv5a4Pw` zhE{dPXVShx>+-_n&yX);ykraSK(NGv@EWz=Gv>+ce>V2CddJlJ*6{Y zTy5>^vGJyodndbU8#Z1iY&=uLQgH_6-Of3{i@tq_u`X}2YwM>t_vqbKryH3}fN$A- z^FFaL=U%*DdFBll7bUYlwfTT8qL1_@ysmX+8ROT!@Ko4Z_)mUO=MTLaxK@*!tsI3- zz|{e`?gGzdZ&GNSIm1VOQA1Cok2316r4F)mcnrO#JV?bpnt)IHzb;ZuYUutmaJ7}| zio58#&cD*{CSX*~LwD{o`P@UKMcu$Yx{=Rrf zK5NR-5&i{(W66>n@Xhr|m|nrwS4`RIYvD_B(E~p3 zBm0E+rRGk&&KPzwhQ8=K`3Zor((@wzh>?-@=LiQfSqQGRW++Ct$X^uWy{UeoWlIm{ zJwu|vm2aYuNDW))hbM00WpMUK%=1Snt*-MO&aob$Lj&*08 zX3xuRV9emv(C+h(-F|5+du7beM(<6~95AO|d7wJ?=JqhUFN@Cv=|6k!q2|L>92mX~ zWLW+%$-g^?T{%l3?l*cDyc)g%hngpa+thyMFmCz7ZlV3F#t+W4pN2J&<^2{5YYVur zyl>C1%2I77>{0RlqvCyhZsPqoy4bA`D{_fLfg8P3YsAw}IJmeIc(gKQV-38=o*_}B zx(GH;P5TVUvoQL01mEw^q~2~5wVKFL5sq#EKdKQp2ON!|zquW;g}aiIfQ-LJ%ztcz?W*zjA6`LdyS%fgI4@hKn|N?r4#9^khQDwmc&0JX*YJ~}1M6SKWY9q?RukVaI*7V-ZTctEo*@R^b%t2{IPrW&op{38 zJC}VD&fR;^&Xv;l#*Pf&5DemdGrr>B-SBG}e3oiE_UE~_z0jF;(XDnbiFqysX7T41 zV9o(%=FG~eO&xsNplK9>Bbs_Alx9 z18($EG9UWwee~dB?Y&}+kSw6z0ra_w>rv#iB?S-XWVX#;@;fz2*P^c_=aK{QZZo=4 zaTUc>ve|2t&Hkp0pgyV2>O> zh@o{ucVa!j7|c-`gY=ei@k zs+$Lv?f5$Hc5o)1bNnm)naaZvM=ExG>DZG^MpYU{lqaBa% z9L?l?jD!CD&lGmlxHZ2uhLr!q0StXp)&Zigcu9Q;$MLb`K`}o2JC^(j zzvXwnJmQUw@)>Z6|9%I?ewcI6Yk)Nyd?@blI56q#&rk>&^LcTEJ-@)xN= zh5R1CzQxt?PJY8ZvdfmmSVNp*&m$zKx^k1(*MF4vJcb-*qoW_=eb0cq zrQogxTD4@%U-td5rav_#jn67ef9Lq(pT;MzHVJp$b08;c2g8=$obpFz;hS~&BaFLpd3k@cSL`Y1&=oppub6E768KZ=#8P-vxe}#C-r5hK$w+9T zJuaGSgo}{Hw}C=z z2)P_1eWJMAv1qe;vZall(f#-`sAERV>3BZ$wZ7V}v)^N#zpH43e>hkxOXrEEg002q zFxisQ(QSGrrvbg+7_4XLTX80nn*sjyoSj=T>Xt9X4m2C%)78A~1qY=(wqR+h@pnI+Ir_PpwfeuNFU5`R`t z=&_Emt(!i??}Z%628;^lj6*VEa@m2$+2+$O|2pqJaPHzLPA<&53ay?b78A&A1i7tv zU-h<(+~Pw{m)mOOwg$Ofg3hbOE`K~4TD$d>1=jzMzMO@=lwWH*Jk~ju_-YtDW_U0E zG=DgJ7KO+1;jx0AA);X=rHT{5BaZ~Lp`J8La z57QpyxAMIVzTtU2SIfPk?H2M5TJ6~KF-O?3s(T{6wPT$<2Z^K zs-X~rza;-o$KS@gUjUYk-^3?rG%q9%Kr~+u%`<=r|5fF(__@jlYt4bn0w(!qMe`p9 zG_Quno1oiPc)bWZmO?YFCzOjm47xr1sioV)TOwbEn49ER&>W`u=Rcrblk7I`H){l1 z;Lzc^y#D+11p9TE+r&lVVcb`3nR2_BF>+blZ-9*`ZvK3r_Pu>UwPRl}n- z=$9qvmRe}O6q;8@!`MncHg(4CVVulQ$$R11EQJd;Zw zi=bIg`gsujqnjj2{^HR$Lg$@hlg?IA^OJbUtvy@tud4TvpDl`b+oJh8sClV z1hUjJ@NFzZ?>qvou7)n#dBYSS2(>@yDU+W_4(+Sr-a0d265Fe1t$^R?guZatQdpB>KPo0Yo4<26J0Y2JvqWrwr zc6rh-tkZ#S6Z@NmPwcX3+JmP3XS3&Db>?i(Tge*B*fH{3sYYiAJHgPeEYQt?o=IXi z^Z`dT>=Vq#cZ3d4u0kgB6NRnk4jvCaWFJM*8;M9a^aOeV+d*r6<>Tx?SlcG+s!kxK?rPv$-O#pwMr-WX!+e1CjgFj;3#@OJw4M7f zIV2lAmb?&q;i6LIAk3+EXGx0}TlaE9A7C{4IhFr}6ZxW@AKLg=!^mTnaMD&IQF?y! zev6ZhwCQn2#ePh`jh4TZM<<=Wfw696oh=&`onHA3I=ymm`H4oSJ6rVt=gfzIUvXE{ zZ^X_O#mp6oH{X-b*~8erTEE{!zwctl%6GhrxuP3$g?z_mJ>Oht*7MRW_jd7;3$bO( zv1Q}Iy1plHX^xOTS@yYn$$9X+e967hMdQ$yeV8NU9}Y7|6fj4q_E~}S4s%3d6n!6s zkNPo>_rqVt9FaK)9|dzn7IVZv=74k#56K6h zcu$luUSWJ$)OO5lf9^vn?TB63_;+dBS;IPSXcl~^wSv~xS|<#L-*%ug9nU?^e~N7x zorSV>$ZL5$E17{%5 zvKva_15c`Kd4ghm+6m zduXLcQthd(+^-mGXIj|}9cllYHk-DBwlC`(r+eJGTx)Anp9fqN!?QEMnHfim9Y-1C zII6Fw#M)S?zMdNRU%sB|z}KU5Qe_iPfUo`y{xSY~=I!|*#>4nEKe+j~ggn2$?aMId z#0gHP7ymDQo#!X~bAFv2obd<`;CF5B*BSTXQT#gSC&fQQ$g|`JyJK1bxGLtuTxV@C zWTyt+l1|eevYF6n1M;IfKcDkV1G;~eXvy4usrIvhbMcR8qVMv>zr=mj+*cFaH<|nF zycw%kt&_g^Sv4GuKWeUS;x zN9p_{J~6Z}wzO{y=2zw6g`uVDrxZdvU~ct0NWZ7|a|3i#u3{=3HRl(Ey|HG`f5=;D zbPw0=2zg_*j%GeuS;OxbpEDPw*4u6Gv!2B`X4Ulc6*HEce8#)Xdn(%7$K)MN>nlA+ z8wM}ZWwKR;=aJ_eT%5`GSA%!o$-5bY(WOg1ur`^Qrx~yELPRger)IqAza@vzPPV1~ z9|lZ{6I!^)BN+idkYn9cXmx7KKx{?ypLDO?U!H09mt#ZW2Jvvy+A|_WcYTNM^~zTl zujtHoeK&Nf2x>x};m%$Q`&&=M28UkSSGk?%E(|fh7ol(A-Sj-eXW*4vCiL*14TaZg zU+~`F-1WZB#k+z%XzP}o>pvLA?-rt_WJBUB9AV0%S<$=Yc>ke}%x`_?zyFJ_=uhU* z2_^ad{NouLb7;6E@s;sod&<}B;>(vEKZUuofHlql>V^)%A9E^x^D|gqjbSbIEibvE zfBQM5)X)jL_r$-Ox*7-I*$B8z41`AD`NmAIDifM27sUACz=!4m$)$(Q+Kf+fB7L+J z;=84t7s%cXJo7MiuxR^mAZMn}q438DYzFLLt-*Jo|DWP)0ZW^%hBlkQ{U+g`kLd6# zJ}>fl8hOw;20BBn2hS*Gqy9avr~CSf`&)a}?ah21dv!m)zC7gV6YSOAE!n>Ez{J=6 z;h~mb%^t_*zBEnVHMd3iGy(UGoJS!!CkHHdCi1bYx~KmLc7}9CC~e))616b6`gD&2 zgR4*XCNNBG%4n@mmjMhBKCQM?tn>hHY4kMe$1oK61iOvd(4);HQ2_4Bbouhj@_eYUY*&~_EC6ev98=Hfx zj~$!yO)O>3b^a>NL#pxH8T{^mk5t1?vXsSqC49fJH_&~Jc8o2Yg|0CwMszo_bUren z7?EN=E=Hu-54sg!Xs*972l;{r?_-RryLW$g`9R?P0_qCHyZKGL`+UxDH}egAIbY-D zzUR>Iy7mC~-BOU@mwk`xz$IV&@8%p_d>;6C9$wP93#omL3Hma6AQ*qd)op_&($^D! zc>=x=^hmM=*^FS{Mi@UjWyJ!or>}E$RPR^zY7&?V!0*okcNCdhBn*5FRxp}6{KI7K6PCn#E zLnq_wj~QRJmQ?fyvFmNBF|Op ztF7?fCE!na-aXJq&%i^~HErjxJ%>(SN8aMc-(o$%d$)lL+>G?KoBE$I>N~{&l#GO%b#xdDLe-)s>_uxG}pvndIGQfezUWJIy@bYz6LJl zoh6Ld>GNEk>&bJaJl7n_tNQ@>4Sp&Dy&2e38+niNF7+PO;gP>YwJx&3hr@yFh!enp z{1v@v<$vx)yO!426~&xCJ4O4#uwSt!6tma|ZuX5p)(f#OhO(!YGY@v7KlhWDx_>Nl zHMp{KnmvztOvKt5qi8FsOS6>vGpF4;nBiL#?JfYXmo?- z4*Dp=52$^A)$pMBY|&kuuY%36ga2yiADbB+9r68l=@&fi=5+CY9M zMp`?mh5nU;{OJMCLIsbVS>I`{6Fi#d_F}gPj}drh6ZbV?izLuf%{;I3cijHJr}qWA zH^6Jz_pCha2B$rE=ML_D79NpY?F9ahpo!#5`00hLxcqkEr#HTqPkZ8X!Pl~?4{K(8 zE%LL5@UzBH;4_z>1HamE#xjI4C~xK| zWad=HAbaN;_}KJa7@UXm?cl7r<`Dbd?HSek;1${750cxdoGry?_JhZdxwdLP=U$*o zbiVNz`WNlP;HiNAM}eP$YHw{JFv@579sXCY=y&0too^d?Hp8drM`VV1?d+42$B=gAgR_-l^55!OMeWml% z3Gmb&a1ck=#WTH?srap(Z0Dy5>zK?3}G@PWtrOKUQnVIy0j5BSxYUcg^JDa{fweZUU5bLUHKuERvFDx%*Uv)t8uEHnA8;)Fjix{G|CzwF8~94jh$a2q zZXIv+RoS^#t~~N@ORN(Y*@aD%av(RNuYUM1K^|m)--^*k!EfO|hu?7yzl9dREv&y~ z2YC43%dzu>U&Y51OWOuq(?j4I97e#Ole5|Um(E|;fNSxVa4o#@K>fGD?L*)WCk|&! z(jqSoCp#;xyd{VqDJCYrS{!@}H?j4HtX=EIJKXZV>YGmlz8LS<9`0qxl49hKK^bMFW`OL_v3E|_ziSf>3;*v%)EPb;%`Pkr&7NXNKGIOYogf6CYip^9}>Q#bJDn z*K2-~{$LzdcLef|EoJthm4^Hw$h-W{Iy2!3Xe~eduo~%~*~V_sdiEyxN;O_@hR^QL zK}O-B2fAR#t@75+1`n~-lrUk$D!-gfd57V-%#My zdEBaVrF_0yxmF6yJAqmC`G?Zid%!$`z6R6B$hfz*ikuYf;kY%-x+9CZ4u0>6-kQ@9 zTm?2!9?$mRS;=%J)SqUCNiI?%#@q2>xDtbZj6Rkf?&IB^7 zIEiFDhJG`?O!iIO{k&bv$lnr0U#;V}));!P_M_@#3Fujqxt&Vf;`(ldeO5#d{Lx?IT&~Y;q*VZ4YwR;g1Y-i+N93 zpv#HDXwG+gDDUF`4)DU==&EdZBsDH)o@)u7qpvwUw~~CT2aye(nI_%*JZqN&;aKto z_`G_F_94x#mmLAUR^*fWQgEi>-DGWd<_h{(ev5LFlrJfNkocr4ADwB~nO3>C9ch(Q z-t$e#(PUvK_U1SKg~>w1ENQAbq30*d=~KeHJ?ZMJkLjCk!_j} ze?5jS&(81S%Qn*dCYoq|)0kV3&o?+n%jlkBt9xp($t+#$dD3p*q@f8mCpm3qzMPhS)IN$i&qn%dOrX1}!=h==c6+{W4@seZ5571|L;j6YE0B z?}iXIF83;)`FS8;TK~V7V7&oPYCMl+@*Q54tlW>Rs8*olWqp$V_poO^veZ#ZV$WEb+qstBSAw6jNsjy=#V;!hDX*;=jIy1`T9T*ZF0C!z+J{`!XesmNZ+dx#BF52ur<$2cFnyY~)5K7^OldrQFM#LNKSWfqo3 zbfs)tx7MkpzcS{r8E2DQ!`Px`Y$22DvUO)hmH4`r&p+a8tvi>$-JY)t(e=`kH^Gy# zjjKb#8~QP2JX3gw_G?d~{WEPb?Mm7r+8WyNvK<%|&Yg3N@2tLK7vUzm^?V4$89c_QJ>BNL zDSAr%Yn^i4u%Pbq5aw!RSGf!QfkE;20gQ1qAI){Iwd%1BCT2bm-vzZSa!=vYkMGdQ zd}rNi>gNA}b_1V%e7@#$3jd$Xrw^ard>VMiN&E0IORkV@`50B>;$wJUdLOy3%x}o$ ztc;k+HHFT7Hycz!Ji(h>fxY4>o_ep=t&Ul+K z%;)29vw>%~5wDQ0arpQ?Fsc7SV8IWOT!&uT2Yf~j8m$~u5Vx0}KS12x>Ue5)6?gWf z=WEb`A#`99<30ebL(sa3b)?pm2f8v&a##|I+r4dL@|vG{AA8ouuVcP8`wQd5KD}73 zuY8l&Ugy4mC(nRZy2t$A(1YB8Ff!6?2`_ z$zxLVa4HX^!`eLs)>nX4dgU7WZvtKi>mzBj`U3fDG-Fn78@3f=p0kT{J5uPmiF-ca zo>J&&aN~v63O6gs!!a_?bC2;pt@-3{sgWH4Ui8k&9oCje!1J=5OO7Hx@1P^;SNp`1 zG2Y|G_~;8^vzBZ^H>?H*jduX^(`ss%H5|mwcrB=lLcfn~ILvn4n8{I3)j`iW{aa?~ zP>jtx9lle%=OX6b7`T=EUCcaZd8Vh~i3aiw92{k@2@Z6Biv0b0yRB97D_Wg_^9$Mw zX&2LmXcy7`8kpUDWO%=}Z4M9&F6N^(z5F%O)$;MinDgbIn#`IpJ#T#;{b~+q*KfdM zEy37Y$eUIy3EQS}0eec+_cCP4)z5Y3)T*AU*<-~zQRmdgh{-8WD<7UoeQ!lWIJcDd zYR&5AJJDUdpjw@UtWl%%r8VH$iU+|5ivPsAa}6FC-nYHYQPw&K&S{+kE!(v{mF z-`EszkUDP7xrMxcS316fT=g>Yy+p?eCE+$&f(t`S*6!)FoPv)^wy12!W@sXNbPI57 zt@hTs809eVs9eC|(BvZU5ew#ri#9ow#=4o8C9Bp9eva7naS~x_1^?MT!!6v4P)O-4vEHt zKbUhAdz-!ab?{n8^!HZYkq|F~U)e&kk-tdGMQI6a!kySd&L-Rq?7kf{dOQ9I#t>lM%@kW{eivKbeeKewvNvnNpYeNiviUjH@FcV{`va6i@eH)ndhl6jr<{qE-SIu6tDozMe}wt?`96}j zH2WW%ZWA9CV^;&Cd0#~^hvMrfh3BMqn(;*|Hd98eh%)l_3gKz_JGCD`@~w00q$luC zv|Ga+P4`Gwb%fv2YrFOX7U`Y>+U9`HVSKNtxjFIy5G&4w|8t2W=62$vJ@c&Ta--l> zIwT73n>IUW;Scj088tKiKX|)%n%c1;jZR zuWub=NK*lG5lK1g`#qr+a{d<77s(GBhs28wy#op?OuL3$H z;P2~BwD2C_ey`Z`UpflB>O0PR9t!%_Su-n-a-ZVhU0Z2tbBIM#(NnY(9kn)+Z-LlF zZZ)zX`8ZzRfnDGAe|3)iF4|XjvES84HFKcuk#D{l-?6^S|5)9}elO+y%GFx>ds|m5 z&RQqTwfPZmOscFka^2LBsPX*Hp>ngPNXVW-=49KJ!oMZV1=6FcPxv(YXczlfc8}A3 zMdSrLTCwdt#FVP05Ad~*zY{u5KIuJMGpdTgm94ohc&zPq;~xTfFAn0B(AUIY5^eDp z)p@&<{x{M8UGyJM5QoA3=l~2Re-OWhaw#5XPRLeqYB| z=sezUd~-d4M|DgcJn})8APs#p@o66UPE> z`3oY@I}=)m(XAQS1F9Rdko%q7-NSQt^Nf+-0G=J#phCGkLD}v7Up^^_N%Y~ zoWXO;cn*J!@o8nHJvSCU*PK0?b_4B5+K*^Yr+t-n1no-N;k3(Whte*hb#&i|j60c- ztV-t_8nsy3R$%kU?%h;^?Tbvx_T3098-Sx3-LW1Ue=BhQjO$M@7j9!NT*&{@jf#`B zkmKvd*#VyH#QTZWw8q~FZ9;}d^QUjdYZGEO3=^Co9#S_UNC25%a5cz7pd?S z0-tcDGwEA>%b|`(_?9~YtLpZ4K<{=!@49%-#8<+(8#miEkL3Swqm2h^-ZF3jUnLwl0kAX~w2Hb<1g0Ls)(e*<4yTDDFB5`)D%rK->A>S#`H_pZ?dG2dTFG?^5VC zkvZgHbbPg9cZ{zIe2JEKFwSM<;H&mr5%)+hCr`0+h`~Xum;ZwRFP(zD^)v1bXd2kP z6#-6`7kU20)J+p!@Dn9}$6Qcbq&4B(`dh&Ljo>{29u!+S1s{%btu+3@19mU&Mc?b@ zQ&a8d_L{><TxNObz`dXLM zhpD@IjOSC&4M=}}l6xK;$iFWBQ#@CB?k2Vi%%yxcIP~)Tjza@mr7?gJoEbkm{zc83 z*yfc}%X3Yw;nv!e@RHV=J>Vm)H8J+6#e!cJ{B0Ngu#JBo_?TSHGq-;*5$e0{Bw$o+ zz*IbmPvmEKxS!o0DxT21uh_HvsG185pMb+uIjRkGoZHXBTx{$$rz^yx>As1Bo5(?P z?`Pbm?yuw&`&|2=?c8PeEXt-;jhdc(PU2I@X9%Cu`DowkEAXal0L5*DXRQwvZ$6Fx zyYT#@`Id;z*S^?!IHH-o+x1pO~zj!FHWy^6W29Xlf@=%2YH z_5b7ezo*_G^shN1^?&BaT=DrtWK-{7lJ@@=>K6~jmK%aCH-UG^zfztVOP-A#Cp}*c zZPNMwW@Keoc{dZM40Hc9(KFm_TdBR*)cR4rv*MdA@Xuj3Fa{4YHw8QH~ncQM}GjCcA?to3+j&o0&{`)z7K_g4ShD_p6b zX#?{`s{XB@uj$D4de-z4k!|^?&xaRd=<@F}XJqnwl5BS5Wh!%r>d0Kc{GnLJh2--0 z;d*NvHju^Iz)v;=KipLMRIP@Kfz&=KceDqgig~7rIOrnwW5MI5KK&lX{$NMyKG470kM%ob<^?{c|Kc`% zW?~URyg3nu|A{Z8>co7Wkv{87t98f8w5q#&BJH!Z&VE4e+t@;MkpIrX|FL^y#5c%I zds%M(+dVIPyM=j3_iMfJ@~gyFpjGO#(l_#lYQEBW2)b8tD?j?N0gr&?&R6#Q4m@KwgC%f$b(wZ7Mb_#Sjih2t+9t?eRs9Q+2a z0o{vvUm0{O<9+Bw&J}Juo1&EWP3L_jyk|A<$>KfId9kCs=VjjG>VhBbJsOwZvmRYP z!@^s+EHT)hNq>)^Z*-pJ)x2*C`4ZRYos6-RG3HB#jeJI0ZLg~W=;ti-gX&6l00z~g3mN&1CI9`C zARjyhhuX)|30i3ni{$0)ko6JAG6T8E3FLWj9~W1C89udqn+acL)b)UO6_YVMQEO$b zg&4JLhkWd3<(TTMHRhpY6ua5gIsbp`y?K0<)wTcsoO6;uK%hz>;80EyW<=T|0#?gO zjtGL<+d8-R))Rs_;Lui}+SZZ~a74{xQM9+!geW3TxpA&-3BU(R97&s$+N4z247CK@$;T)Uw@H|+dJ!Yo^m_9q&`-=(W9~*$X<@(?241M)4kN$ z8=X-~O%6W(OThIkIFwDhl;>UsrfP7}h-?@0zZ>|Uaz0MJ<*ON8!}}GN6}-Zk`@4Kq z=(t+v7lhBwE?yh(e*t&zI(|{z&0ywG4i;WyPmFKN{6pcL$^1|9p<0>otVyz=JG$l9 zNESNMRq+Gyj{J1ZFPJtfcLluiCuH~X@DqfO%Qss3>WpGBe1gxp(?h>s^qJM~^6yk@ z5M_T9W8#khzi6eijBhZX>|jfo=f{C*GkYNQe4E4` z$lQ~`Gh5MT=AI0mV~<}me|e^_^Ts+KpNUS>xw=l+VcF3sS>SWIJ%cGe90wonVV(tD z;8A4Uz?lr>h5WSORK1wFvk=%`;`!0c`QPu@+^%x@by4ArxVp>Zlms>ue@1>o33O1d zZ9jClglFY9$Zu_AU5*B-rEqe5F?2980{*YO)8^4{1;1~QOL_BBo`FV&HyHQl2Q_~I z%$$ugG12+JtQrgXL#nUPS(2&H-Rjh?Ca)aU9b=iZj_*dW&z4qp4duwIYUUKzP`&R$ z_HO2Gnr{U4zFAsJFH;Nk_y%fsc?W{S`6~D%WP@*@Z@PJJb?{#7ljGqlfK~hCIJg-I z-#!k$RI^^k@7mYD3BFo@f4$+`ti$-W3$TB&-rC)Rj31(({?7P2#siGh!sPB_yqj?k zV=?0{#u1D=8M`rVXZ(Wqe9E|1+KgoATNS@&HCVsbeDGR&QX=&e%^nv&Fo=eE1F62Er zfB6va=>vTqgdXyjA40|yZ4$r>R;aSxP>e**`_TJ!G^#Ls5+58T8s3(r6@5;^z{xPik!2l1$<#O`* zUH2jt@oX3mYw4G5@L6v8GztIfJy({N8F-{gYAH5Uo^ zO0lwUFseV@8H~D%^mInW^u{ng%6J;%e8y85)knebGix+)gig>8f2Ro^l-}8Rz|qW} zsY$X|G4?JVY3)@yi2exwu&-TXj_GTMPBi`Amck#yyy$AqJEc#?WtMSO{z4S!A2)gyA7tfkSef*2T`AZ)CeDGT@0q>K*Idxd( z46tg^lDu2B8smBA1-w)GSZi^yi9dJ;bN4o9ELh3f={aHg8f`%Sv{%sHGxaJlDr9m) z0XYwF-GUFOy{7JFii%eTdE9l$zOGd!yBe94JW8&f;Io@gA->-|e8zL;xQP#UoadDD z;oL*cC_caCb3&$<#s@qX8zwqj!Zo?%1$zT zRa=ujv{3s+<=Pt2i?Si?yB79EKdPS3@Na>&we|IZo~7pG{wdn3xps13fGUM+46ezGF!7f zAKUHjyD5dwWiuau$4kq+)jNPmJ+&2^mwn7-o&(Uc53q#$gA@u+z*WSWg{yjcEeKB$ zU=r_|HCG4oLdz5~dw@EOKD@gxKEc@P(|tzj&xx-;|vy!JQ9Fx%D;x)yy z(Fd*kHn;<>s+S&_-|#=v4}q(W{3ib^BHY6R>S-OuRT5lDe<*(NZnNdJT4o7R{cf&(w zFDxCz|M0PEyaw(-1`jug?|?!6(N^Hv>i8|dU44~>=Q?nwdmCLZASbJz&}%eI^H^nY zcQ<_I>Zuwc@RQyT?i%1TozGP7P;&dWE*spb&xQI?g>ffYm5gSsw|JA!ptA&hc^3!G zjBl6^e{KgC%i$ZBUtNLSVZW7b$ZW&I{oujziscQf*OI>oa!%;AiTEhWIcXpGL=@Qr zzNK9fY1LXiiM;C$6!sOhpMvXc=(laa;AH7>*64c1n!O)*tSt0a-w)ojR`sw5^W0q> z@K%3+a5iI(&SuOsXEPKl6VD;w>4rIWAE@(i_#MV4_(wcvbR2%4_^xl-`u%3j^;RAV z?z8)e4a9WD^FH*)syDc^^=#hzIP28CWD{7kdR1ISOl2bLmXEJK89Fy{7IIl;d}z*m z9Qw@g&oS`T-Pp8c)HdTMUPvsZb~`#udtcRn>gNxM<1XM1!Ta;an={J03flYf1$SE? zNqtw-?9(3tHg`Uw4A?d@_j2Yf1GW|L{v6@U22p<*S0-8MDE8-V?x zCEx-6kMX}|XtRZPoezJlfJe5nPW5+p{BwM(-xA>Kb{hjz4~kj9q`l>}z$2cO?bQ3^ zn``gcz+C#>$=`l_PwkbWz%4&faR!O~Cb*zBD>)>ylk(Zs2oX8i$*D+@UbWSI%7ZT7-F(2`F z@d3-<#%~7CQ=qSj9l?L%*}cp7KXU5vchy!2zMK4m)NlW+_F8&oJfd@B(Bcp9=F`PJ z{AcpUbJsKend8j>{@9O#zBG$GeEh6{moeH zn)Wy1Q_(}Q{j=biGT?DNuBRg}_@E}nAs*Vw^V5JK%*W#4P2A1a0B;#uvL=IHr>B2l z^|a!C%1tZIH-&nnBK6$^&Xx-TSu3$T9s9o3(@sa{P;0h_S~Kk*8lb!GPMsOWE@$CO zOFq5~{^*-7U-{en)z<;u=YNjR&xFq%kITPNJ)3g;#6m5c0iVaNZHtp{gy$3^KfpU* z2HrGt4&uG?5w#zz1aE`+-x6>)1b%n|ULT6gEyW*@@Axis&{{Kj*74n_j(m4j(1Qbe zq*@I1;HYDbvXk|!vkrUYdY+NP}rLV z>g><0v$^I5w0;c7bP zb@o-))dDRxqx)1}um!uX+OAW66J0<(OWK3496dh4rxD+GL+_~1bYS-@ywXml27ld7 z>u>5@)Pe~6MhCx#UjPp7eKn{Z2>7e~zk)L*;9O@)WSf-7ad=pV?FT=N@T$}0&(RA>{N?d~hnxGrO?U7jn`B_Fw)AMGua((TqYo9^aIzsk=~TWi z*-*Yz`|93iPH=$!>r+;0_6Lf$%1?7Rxvv9Gs=s|?oXF=Na0Hxe1SeViy#<`;ew;8b zcErhh86lhi`zGM+r}JItmTc&&IEwZ++Gmo`U{8WEkDPeA2oM3kSmCw ze;Uz05$Nne+Z+dHAS?9~+TwhUpVS|rfVC;!8wXEgu!E|V$>e>vrsv#u_ERtK%Hn+y z-lsaqB;S=EIt88Fwh!*JbSONc{sWc#-|a1-~XujLPWaT8h{`w-j{?p(A z-MOvUaCk3!YzH2Q720+8DW@k4u=WL34;aP2y_v%+Z}ao|u&$%+WwoBb&ml*dx%7KY z*4J0g!L4I0er9LZq4c4Mv-CgVQ?JKzWOxlucpzHmjRoHKJ?;U{RFU8 zp(i8wtA)I`1Yec7waKAhf?iZzGy1nSMJ!sjU$q#Dlj?65?8BCV3+;Ov`MdnKCgA>h zL+DHuf9oonE4sk<`o41UcV}9gcs+VXc^&l%nvoyKMSz?7uh@9E&JONl|EricetXS+ z>V#g3de}R325`TeMGu=UoXPC&rJp{|OF!S+ORxH)twjUQ^s}{r9 zpF{hB9q0$i-EQ#P6Fls}j?T%F&q=>&aG?FP_B3I8{Vn)HzJ%Emfg2Og=lQ%RiCeH< z?K_6>X^lT5?fm8B{!+w5ro$(SKbSo)b32`PQ3oEWA9UongY0iLJW`4M4aXhCJI4O9 zrjGXaEO?|Bd4m@?kFjVwIk{g$6Zv`Y{(v=hJtmF={Dyx5oRt(NB>U-4b8Qwr<3>W`VaBY^(14x#ZW;1>%tgc*Mz6RJa5GW{whzmss5LsOm%~Gl%v= z=kk8yYqjU`ZsQwx*k0D>Q9t(BE8rP^QjOsZ*41i%E3?dZp5_1M{Q=(V=>_^D@ctlp zKa&03k56X4-yFbm!jWx__QmQg)Y1O7@(%FKg=aeY+_E>ay^pQ^$9OKFFM@c(+(8cx z@Ih-PMS31~pOVf(JcZ0CuJklAr23K1S+8_p9enHXyaZpaBcAKY`AuOCo#DNZIb@G7 z0?#~Kd$GfF+~ROCG4sg*o>fm|WEh?|w5ZE8c)q9up3CW_1;6-@f@kf)QoLKWrH;RU z)dA1-|XYUIU&w{2WtX&bt(+3+upl(95b74cqm};8{6v#bLxd z%YwcZvQ79FIpX*C)1R3$ovJ04jwsc=Qw42!`wn>P&Aa!(qpBZMtjWYqcxRZWs>$(* zUdvgl^oaTih4*k%I;^$XoylXZs=rn)QaYIZeOhNc6RcHz6Xnaw4^qBWXW@)Z?6A%R z>p8HeeU7l2eVC~$Fh0ZR zF+Rn(>+gqhmomP~xPI@kVtkbGX2wN~@M~@*<0Qt184DPH$rxk&1!Gg%=9v_` ziN>)}=xFEPSMP4C4>P=7ZTX=YevqCx>>M!9ju)@OkK&E9(LEh&KW|}9a}F5ZQeG>{ zzTsyM?Nh}ICWZs7!jWPujyGJ+?s#~lGwait zg)By$S;$~iZDEx0LB@XM(+z(?hcJJQ_$U08BxWo-s>~@w;-#a}(ekeK(K!&*rkvMsxdm5InIU7#&3fD$!uh` zo3Syq=N~IsrS=XU00v*M+z0H^-=d$xr>h-&cdz|>v)0Aj;qwJQ5nTiMmRuz{{sJ)PhEiTBOZ=~ zbeNuZym|w;cK9{8joEvP+1D6-R+Ngh=`?ha;ko$XJU1crFPw*Gjl%VC^w|IUJUsB5 z^YGxc<9YapI1g|3=Z9e+2I*^qDXq&gjY`(b>@{^DsKa zY(G=yBc=Y|-?!k^KiR$o9(-oxKEShVop1^t*RC!-XzpjvCnuYS-FOwBQSy`xZ8rxp z#hFEOXPEAFD1(PGj1fVz71V=9s6Y23f+5oeU$t{7C8dwG^Go@d5dhW zLA_pg!?%sa>YF^Xwb!e12D5+HE4~fS_s{B{WzR0-SyT5M zv-MumXXd;(c$Q9EPuxVZWO`D8H{G{35ItsM9neUp6{#9v6=5vt6IC6?{DG%Tj5WGBXBGHjL*cTWm}wtYpJ&VF=N3x zXuXwD_fT$T)E&CU4nZ&1Kcj!p7gq5)BVX{It83ReBeSlgU6=YVJKL%=aJpMt`%`=~ z>hVV$#+NBzzOoKo3LbTTlh!qad!coIlk(bIplz3g?IXgTuVQ-MNMHHwb4z2ZmEUdz zC&K$3;N8H1?2C5I__LDNJ zRS%>Kc&D-F(0iim+vsE(zSH?qhmUODGbAs|;3M2uMZDF_yS0a3ulE~VbXxjwE&VcC zgJNFP7@B!x%U|Q?Mr2ZZ@$ddc`Y&PlOm_Xd!T0n`fBnq!`u|Jr8J<6%XAE9Sb4{+U ziT~$0+>}_nm$3IxkE?L*RP|RMfNN9B2Ol4*x4P{-_-!xzHkt7?#&Z~#GEQLh8OJkT z$JhkSI;UagPGtHYz7Wmn7t&A0pK|h5ZQ-cL_Y{qEztI3_gpXhGM&fJ!Kxp(hG*a!r zAZQc^fBE2UHvVfJzIlrG=&ZG~_=pC z@C$Opo5T=np?mGckF-CRqcc8MC$zyVe_44p`N{*}tHpC5T4)QtYM6Q zYY1nzF~6CUxzAy~JA%0*yiaRY@33d~1@V$VCzNA5-PtYI(m{a%2 zw)G6lY~{UKz;Gcj9P!*%z#G-@hU7Gly;u|LlRm|ls41zGU&_0gD}%ZE2eLYl`v%{r z8|uG_|1=o8u^CxuJ=g=behhh#!Pk__|ilj;?CEe_pvA^?89F z>1xFrI0rP9b3mnh?~~*4N3fTB(T|UJPna6PC0)peL8q!LVj{p;$KSt6FFnH>0sfNU zPkn;tSE=UI-V;$8A$9_63&DeGOCJOmrk)*qlp<3*_?~J|W%HENRxSHTU{Fp*v2JRA zYH489+JjGeujylZubEq)dV|H0fB9_h5)V8~4xB##e3FBr6tX}aMY|XTa;zAHiElBl z>qVzLpnB0|Gsij9P$W{e$BFVd+H0N6|L^WbJf3GAO$6gBz^K@X({qllcc9lyz6HE@ z?B{`w%Nf82o0kKR=fwHsnGtyp>6HE_(uW~F(x3NXsD=v}iL(ZDjj^}8p^<#c27Wg* z3Uq;FNqu|Hr50ATODX81J=+ZEWBQwi=7~cG^(43+zjP%r<+{HSHzMwJ4E$Bb`Xo!U z8Ku`8|L*K?hPcknkDQCItC`>GqFJr6aGfQ_pUSy{c^)Iqw|FN!Pfw{TcwTxujMr_< z*HLGEkH4u$m!W&T^#_{+y`?#a;3M_t{CWRu?|Ideq0>yQ&D;!c^&`kuCI0WZ#0u08 zWdr|P#^2(|UnRebr+)BATb~Q%w3hL^wWqPAo4{9B>SPR#1ASEjjU@-}j#Fx6Dpof3 zG z(>~8FD)m;&cd6p{iU0=9ZRlBUs}5St$>!c=)_*GRP!6yReB3nc^R~0i;+YU1 z8`?Bm{wsmb$_egg?>r{R3o2KcW^R&2=?3c3T#k4O{HPv!N#f3|#hii4K+aV+q`IP9 z^pfOZqIeQ`oF6ll=X8JUoCCxKc`yBE|0URx=qKfJI-@_Y1~%Ce_EPDg5prG;>HS--yJ`VL+0w3L$MsplI zW`1xY{ZW7}kY8}L{vc=a&TxMbol(^|e5j513p!^$i1U;>&x6iS zZ<0TQZ`~O_W3NRI%X~i@oa%gp&Qr?v%dd6odmh{#X8(ajJ!Qi3BmNZ5h*w)!N-QkR z0bK`zSNT?FV@DSQhx#r*4h*ub2|lXD*Sx=3@ww?&{3JfZbYd7&Z%&$+mV9T`IXbyp z^T5H}18Z!L)-ZnwC(>!6ccr6q0E=vceEtEzqCH0zFv#B@#3)~X@Bn)E6b|*XhghAZ zegw_L#~d!Mtp7Z>qit9V45oi$xz!``sgY~W2lTZ%+tCEQQo`KL;K{|W*z;68#`hGz zGJBp#xgB$p0dzvr2s-^*`-ZRkPu6 zHInZ<4V>8OR)0Zt4%+*pXDz*wmR|M1X?O=-7w@3Q(-U~NxpVnK(aG}1*%u!)_56p( zg-f2a?l4a$`I~s!-68d9B#}OucL85IImy}x$xS0RL-0CS-+%SkuV@>6N3hMRCBGclxMS)<-Q%zYUo+`G+H+ z#f|yH{hq+Mr{DNm)jjrt4lfjq^i}()^Ty^pG``sI{|RCzE*=yM;z7)%ccwYVteWXO z-kFEo35SiyT?Dy{@LqI%MM+|`ALG5B64NR_7X8or6$|VJtrY|BjxT6(^_+QAoZ@}v z)S3&SMILl!-?qwY$o3Uq`91%Gj!WfFS9PIJJa{lXz`I`rXJ*|2j7~Rf0!HPbh(A>f z$s6vY3({LycNgF@v8S>#{I0-vfOj0j9LE5k{OZ2a5x~d&i0Ld~i|{uWXKSg6=JbS4 z(hbKlO856*Tr9f5U)qN?0;hC@&O;iwkQ?K-1v+aB`y!nOGB7M3-eQXoT|h=UxE%*ov5o1ZHO4(KD{SXe9@y-hQ(7`KC=7SO^hy2<=_*JmE&`J z$X|DEU!$#gjGZFJEqx~2{x~q=<1tU0P0~E8f_aR7Vx7uc7x3=c$Z|rx62Qk5{4SqR zy`H5T*YQ8&W1)MnyE$Q*iUm4EcU@k^+&YVPHFHlQXH-bOsEItB`U$9S=(a3AytnQr z)`z=S{V}f9epr`DcTa)xa2{47}S`z4i zJZ!6S(TYz^W32;$`%1nW$F90N%VeLNu8mJrpRTrjsPOqy=HKS#FSqABrN`7?&FHcM zbSrCCzmbi|dkZ>Y^GI?Y{o3oMYVNm_oa!94cx_l;TVr!BvNb<1!!N(c<{a~S!S@%j zR~>}iBu5zK_XywhkXOYc6^o?LqVacYI_yi3zuK*X@Xz?}r^6EI(oDWTB9UHs>K6;O zAIXQdv4QA;I&2*NpKSOtFJo&la$xY+Z23CI-on%}ReJuQ($e>JcD^(Cdkb9ERqCwf z46}ym=!5C_YuAniX8yOmAd&t9b86qX1K76%hwkN)9+OY`9Js9IW9PDGfwiwNwboTp zALSlDc(P?j2>HteCkuM+4jk&?h$mvvQAD0Pl~0*PM4j z@8~ST&FGy}sx2QWzge|u(yQT`t-pO}_Z2%BYv7q}jO8Ic6vlBmJZfZ`no!BKvA^+7 zhxwj&lzQgub0siU0Z%osNan-wlEu$PbKYkz=l`|Zs}s;G>`{{J31@fq{x*^OWo5sl z3mT}On~y!pfUe@-dEy2Bp2y$iqbO%&;0<(LGk+KVy54DT^BtqV!I|`T9{S)#YE=92 z4v(Gz;b-glUC+ASGuoTq8x3kzd0uf5V@G-?(kHk&*Luqzk{ffU!<;BFZ+qu+9d!P< zDY81v-Pp<*xt_%y>uAh^F2LT@1=&GPo4aG@kk#JEr~0R5u>K9l!~5W7BQ=Lv$Z1PH zHJ-@vrh)8%1|h#gS=%sd(<$sbMqq=#hOCanZk`68k7mzO?X5lqzElrj#es6+hd!)9 zcB=<6+5;Zy2~YKeX3kDYm*lV?)ZVTaxZ4Xn21n&q<_fUmCa#YyQaqNL?}|R<$N7rK zzJe|4i!D-2_9Mgh3HqXW=FU*nD5%C)x+o3}bl>f1

C^#k>812it7yi}JE@;JSwY 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Òs1~bAMBHDRvlInz2|b0xqL5OVfJnZcynMK`xJUm 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

}Ow<(Zq1p|ay9kds5`Q)@BvDs8n=k57O1j)#|- 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

#;kL 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�WLc*Xx_!LBR3zKQ3Lz}K=4`RYTN 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 rnPc@yz+Rk4Dg|` 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

Ve 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

-zY=@pv&#XkJ0<&Q;c86J2#JpuSdL>sc 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 za⁡jcW~Tm@snQxY~Wjh{I((MsF2nbmKPBz^F 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 !j~1UIe%>^3 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

+Slz>C;`~IG~%m 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�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�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

    vJtq^ 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

    ksh!s@_T0;$A510Y74N@nJpxD(KPC zI?6B{;{0G0RYqcuvb_uh120f!4_$7IwNZa1)wQSZrSu+}U8rxPAm$s49H-^m;XoW=^lAxgAt~X3JePv5n4Wocrl#+bNn(7g8GY3ZHJL$r>uz zlW3=CHSBZYPKs@(SRxVRd&uDg_SAk-N#!R)QL5TaP4rF=#dcHRA~x&hYiN9C;T8(- zrW2854IKgh(=i`?^kIrGByldYor-Jr?xW(}6g=&8P#K=_{TEZ8q(BW7pMJlYzPXjcPVf!dS50T1__LR3W*huga339bhz1fBPZQSdMQ3^+ zqp59lDG_WS+^HG~CLNmGMw#$;8hEX@xIgKqg`I>m^AFJg>I0{{sS|#S`4Qhn^XXU* z{oX@LZ&JG`)B1jZ?~#v(!IWQA)1j18K&b%y&i-b?d0%C35Xu>#hV#i6DE$!pKrl|D zaP3Eb^c2N+!ybY!(}4#mP|>@AhAXMIKDCkl=wanIai6O6BAo1SfTB+3R{Dz_%AYiE zq0WWGM*6Q0!~b8wcQ(SmhYx<7sxWT)?H8zc7x;B%7tK`C=pzRor}R#WCDVuL(oXm_ zELP`sQh9seVfyKI#rHpdNb!AcH~ib)FVOj|*b+Ke&i&dmv0b!ro6^^0B?W#z*1&#$ zDtYlmN>tLd@tRN2;x-x`PaNcPyXrq42fr(+s6O3I!EN|T)iZVU`c8`b5ALEnkRNe8 zX@pa2Pwl5uh-0m(=cv4rF3(U8ox{8;Q&DQ%Neh81+t^M=5?6N8UqOECM}G}2m;Gol z=9M_}F{;~5X(#wRmF=Wtl3-lBX*v~&kh7b=Lg*0h&!2bvFH`##s=ktWg(kLAz)AM7 zJO}DiF$(RX*)YD$AMKX|t#yREVduhEKThi^m7Wg(kN+apMG!&o;BlJWiJxFST0wse z{zXESg!enfg9jg`7k5)K5qXMEZGj$)-%o?pxPk=d(y*JVj()w7M&WPU@v`~l3W_fH zqjZM-AnY!K!{9{4%l*KMUsp)HTn9hF-C$gA3szc|n{r+zQb zZ^F5Ppa}TH$%8b!nFf>Vkd(nrYTm2kJRulM+$Lvt^{GvSyln3KejK=OfqxnQDB(`h zY>*yf{Z1A@UQ>`~Wah)vzl|Dy9Db6{RUmKqvu+Ak(^zZZ*9iB1`cDQwMo(5LJDc7? zGw;Gqky=b8@G{6uHSBl&3!G0~8&7_THo^|sUk~k|%)6;lj$@}5oEAF0P5A-jWu+IB zTPewSkQ7|oN^}ul(tAHXS>Ky0Xufs)8EV=AKBn)XL^TcieV-?!L_?9_m+8_L8gSlu zfb+JY(9tIHLtjqAeC@5lm$%+4>+I*`odbHl|rW- zXW?}!cu4uL;fLw$c;W1A6| zf}f(f%~XCd@e=cUB;o%O(}7f?gzc;3V(cY4vl;nK@VEFrNvst=DjVBOa|@|wD76Fr zI`lj(ZlTOq4n9fo2cVC!a;n`7`jg#My_qJ{i5~jd1Imt@9-y&U?0))(2ay*g6Lex5 z`9JgfFXMhc>?3)YmL8x+XQrDLHp9-YApUJeo_6vXs=1%Wf_N7fsj&Zaq?N+uG|6`J z9~{K5Gk4)$8wJ{e2dEly-hZ`%G7nH^*m;6#HY@*j$e|&p#-Zs4>0BTZU_60v0_*cC zrALDg()r-g4nC(Zj*Rc+`K1?NufMlN>3z9_SBHVL@_wqm82T{n)Z=zOpwM$64QtPWw00 zsR{}{yY-WVxL56~KtAHozF!|dO7sBDob>Ofp{+FLB-e7@Jm`k+nfvh- z3-t%+Km`q5^4HV&1IX8cAEC>j(--mMJp>vHtlv%xRg?;+4$%?pIkCNt!KE_afHxTq z-9-)MG?l7(lrF%JoeZs~MWooLpN;d~ypngmzLlCEptAZvEycIfRLob(`G46vsh4QD zie~)#U!b}NC|pk;=KRS2H`ovDgdcu4Rz?4?N#!d8mDKRmLKBtVPw8~HhiV_fMc9LQ z_h=JkC{jk%SjRY5LbQNA%B$~wn2PVGcO`qDT{2ub7p;QdX{#MlQIYyP+kVpDA((D#WrxNSw zGW>MS8|$e5ewwH6e3+&lq}lPA=V_4jEc_Uy;Q##ZVKMR`U068%Jk4&#wX2he|5aFT z)Hl-nCYsG8qV)N4rFY=>h4B8@sq8)qwL+PGQK97i8yi(VgZqT%owqkqRXKj*JMt-x z^Ck7pZS+gdk4__wRwA#x@*3f;N`~zvzL_eIZmH*cMI{wj-!0rnDZdYPdmmj2p4m@R zmB{DP9dvCI&2yYwKtB2|lHp4m!OwO0&R)dh2!U_gX(F9LP}xp(zQQn_x({|8>!yMG z@U)nNJj(=5Ge)Mq=k9;qECzKp{N#r>yMMyjuxu5)%SZ5urqPa~} zeP;Y)bZR5koA7tjn<$+Keu5evptBkJB$Y$XX#`)at1c(L^AsJ!o*3)>IQqSb{O#QR z)Zi@m=~^YtejomKz7p%)cec`>mn%R0JDZiCPHdvd1>ZjE-$WA$=K%F?LSE#2nmVD^ ziSQFNb06g6dzR-{RR6}S6xxKZj=(yndOHn;p&uF08;O0Hnzzz$GKS5Daysxttc#$p z7sikF&~1qS^~nFr(H_R;)&YmcGd1f8cb_j@i#<*8`{_g`^fWDQg#5wJL?w+!=*!$M zbta6B)vbI)xP$(B3r#1SdnmJ!>h@Rc<9ze1<3sYX5%N3zIMrc&6As-<;~POA^2(9T zShu~4^~`-#`tEZrR8@&M^$zwA;P=>Hj3K|MIQbBLa|4~Cw|#ssWZFp_ra}1U1w5oG zY2Q1(Ff}5djo?dKk7>9%uSUe|J71* zHsTficb=i8GKxK!KEnK)oAE!z`iOm&k5TOgy5wN60Q4#ee8&*4c)tblc_=eeL+`4`#&!1G&htCBaJm-vGqKJ&8D%}LT6gAd8md74bZ{%hw$QmJDMBF!>(Xbd**`cZ z-@Aj)bT7}W`#23^KendzLHY{p^I`();(L*w_U@;ddugsdwU_p6q0vYR`v8b<2_Nn{ zJCwTOuc4U@R5Fy>Psht(e~6>s$Meb9V-zf>g_P4xqg&LvB~VVK9hoEaSFl&skFru) zN}SnEP8ltAjvpkP1&ljbufMf{=H5Ww{W7*1!id{<-lNtt=Qq-PCiFQf+CT@=5JKa< z^JCsot2_2#Gw^QJu2}Vu`Ipw}RR;DqJ^cd;CbE>tJgo*1 zkG<3>wR9)u`!%ee-h{m995&YuB7eN+y()VUKlxci-r}jTwO1cgDfnk8`LJq4>XrW5 z2h?%oQEx_^@2bZB-MJd|e%RZU!U5(F-qEr;)qR`r`wqizUyT|s#h+3WZ&K@pLshCB z`EtDM9cmCi-`jL7r_@2Dz^}hYefa&ql?)n2U%pUJ;Z{bfQO&tTGM zMf{#de9PR0pGnQ&Jil5ktf^MjQKK%Uo1Tl+;p?PLu}9S(<2-|Y3wzY_(#6|U7w5~m zyWm%4N9gx+sViBvSPeg)Zcqz%tBudU-mFIVLoXc->fo(L{|V9m`~m3y-bOWtpS3zx z_NdypT_ujazE8cfPvX*89P6%^Z&Nijm}2j_T`gj3`tkW^)aCtZa-MPdAohzes3P?C zO7b}4LgJNUn8fyD-}9UAR+sjxiA=smwN$H`*N;7{eqcZ5LnNv318V4sx>M~z9>F~K z>$i)ZQU{=?(jy9?K<}&Feiuw9byU?sq}=yb)mSGK>ebbKYJ5HezW_Y-daGJF0M|{v ziw6hEFCtGJ#yr@Od_iG+>h57{+l0^ZI+^lCKugUsLh>c<*7kH2rRM zIe~od<$dbs64<9M?NgTzszM?8F|}5s+B4bb)!?0~^5pzch17XrE%lgMgk9$|-><%t zP~%=2C(HX0mkQW-zf&bIe63oo;0qKN3VHP~Qr|=8Fj;`4itkj9SBpLm-X{9QS>Ej0 zt8jMY#aABv1oOOw;+2D{5%i0gw7|;oLg_=Q7W_Q8?_+A_4z)i2a<^L8i}fhZ@B89v zxtM>4I)9tUD~73y`)YCgeDl$-+^!m-mwm_Hqy~|4WD4)VyuJ}p}_J1eVqlI=gb0^k= z@e}IO0ksyt636C~T6;8exB6-1*C}kaj^JqJrH9U|M{1zQS6bA}UOYptU3-zY!HDMX zP^FRmpH^*qu}^gFF4c;q-F&u2jqSny_G@oeKZ_KI`9UJCx)@h6FD|#Nb*S3C*r!oQ zp75MepHS;q>K435)zB?CAIbKqIq2tPssZ=%Rl{pu6TY7UzxXCL{r9TXFJK?05%b}z zNUkt1Rqgw|Q|cOiF8I~#t+0=Za)^QLd$aI8uVu4V2}sRY(F*;5Kza+OWl zEbU0|-(eicOR+BwKa8JyMx`;|uBCDQgCn=pmG`RSh<_J8x}W*OXrYA7-P=_~?7|BQ z=f-0rBZoOZU(Fvqq8_|M)pg<=U;*nz<|oO$i0dWT`5v5ys3Em@3(oyseNmA!&Pxxy`K=?j<-px4#H$a~b+ z5E?tMeyZMseUWsZ`W%jKyyRo*65?X=<$iT(k819S*Qon$L*6u!S0(86iNY~8aZoKh zjw1l@HS4`p&+*AQAo7=@>Q?ReEd1Wv)R%6NI9Q2PE&1hlt7}y%H9!aVa@^1Ld+F3x@J6KV-ZIE9z+ z+t-kPM`}=AJAgd+B=Q-!viBKmnkI0bqB3eafp|6j2{nSa8UMmt)$pzOxso)_1(^5X zrJt~$>I=yf^R=pu{2=r9;`H?M>PxqZJ!O$Ezq-Fu-MR;Mlsc<$=W#-LI~BIh+Pr*D zjli$c_h8?s3hVMicPZ}x_URE9k#Bj2zI;GEn1COYKCa@oO5TrrbbaL9rThsS>g5tPnKA!fP%o;LgLs9|xwokzj)L>^?@==dU8&dJt2Pd(OR1NiQkSaKWcmX3 z<9DlxEd2D(;Wzp8$JG2DHFmBH`-8~uI`iMJYHm?iUz@+1_t3^OS>%6J;G-;|Cih`o zn7&2bg|l|XxArR8|7<{>oiB95>5%_j*rP62W1S0OC-$iMwZgmA1p4`EF{Lt$$HkAU z%e#?hzKW#&R>UdqKK15XRKtbrt?Kr;>_3&NuzoExs8wtYPd5$mPV-0xz>QnDpBz_M z(&gr-->!OY#d>-A(`o^E$ZJsY|Ek73gU!&^n{l3Wv`0&Th#P!RY-L_!MyV7 zWBH6K0`K(;IFv-Y&g}gvTZR6Aqd~n^E&KKP-4X{{ZdU903)nomRgHIz43b{uv7djZ z`iVUjZP3riqYWl)UA5fRj&bxrg z2lg3z^wg7%nr<;-HVw(nP|3n^^o!yY|+*>dt`#P7^8<|p-s z?s-a0?ZbTw^(h4w1~b#Gs&2m;{Gq~|RSy1^ed$A#cfKP&$nlj_$D5e9Odi~a!y(vN zsc>4gR;i)u-iOq}KJ34qJE(rHTBSOUen73GUApO{s@jWvuHq-vBfHdcK9BixpBlZ8 zd5bFUQ9>ncb zf4l0tS+#p>XVpu)WWHV9sVZ|52)8}#y-y1@Gei# zdG*-a)n(j`iosZB;wpc#_%=1ZLzR;I)9UZ`Vts`CVI4;Sg|*WP>xQvcG4Et|sl}J) zA5n|DRk4)Gsa52cM^gy0`>;+s@M-naAjSLvTdVrsL~0lEWA91jVGHu5LpQ6>#l?PL z7kWO(?Sub#I8=rG=8OGmZ5RCZm3OM!cT4>9;;P~h@|yLX*spl?N!rD5X8O1qL_YIa z@ds66znaQpUkLe8#cK-l-(K9GX-X;u`c1F5s{-`>n8JBNh3c8k-_HC9cK;yblV0x? zcFKD2OFLyB6I<;1oIDGA`RdxU>WQ1-?=O9?>e?rH$@6=$PA($Z-iPy!)Csk`16wWG zyqds#Jb&&fHM|e|7N5a=kzH6Xcf6>)U6>Cu?^d{Ckmx8ptFG-*U57kuj_kxbVZK$x zE7j1*D+tCFYVeihJJs<$xSE1DN6;5=f3!1 zwOodAeG~V>Ag?RmdY4+lyuy1xl{cw)42z!mn_*W2*xW2v6Uk%PgfCaa^BDK5uxI+i z4Cd!Azm8v!-=Qu(T6m}W&^LH$hWUNuDW;1eDMx6<$RGtJ~%Re zNS)gwegS{e=TX^?{(;^z&%V9yY-dNV_w1P?r~6dy#VkSi=pNv6U++LJ0Pkc4pKaTY zf!v9n?!IhyKcQ!{ThQt3>lo0qPMz&P-4UclVqLlZZcWkjobB&Dlf(Z5opzsjKJdgw zooD-lZB7zKl!5Lb`Q9^~edoKnUH^T5|M!32#@3o4UD4lt;&gYe=WLfkc?tE8qpwrF zXSz;kB&Ci3_EfH`ulMAM6CaV$_2#wObG_(k`R{^! zNZV7r-F;mrI?fLssXKN4%>DRIO%SJ}tLwz`9etqvzX2zYgmm^vkE0=6X`c_leExJ7 zx*_gZhjBm*cP~S*j%>F7?BEFzm9`O%Z|OV2+rW{hx?u+$Cwu#Pb1xq0>OR$RzAtxT zp!eA`9l7)US{CaDS95Sg_~;(Y_G>=K{)vwMX9vunL3=KY-_zas+=@kf)khuJm`~ z@B!ar0=(76plm<1aN>oI{xgU}xMPmGHs`Ygo&6m!8Gop1EL0zn6PX14TnI-RJDWlM zFQfiZisZ;qxLnr(FmH!Qy+zKwVH^`3@Ia@{8+OhP)aee}QZ zH^DLHx=&|MbeudX!kG!x8Q!feqwQFzzP}S7buk2!Hoa#~owfXSh3dPy`#N6i?$UAa z!~mir-AtuIIM4U?=gxy)KUS{%bwrna-DjT7_0X+VMX0Ux-_;G>_38ksmeJPNDWq)# z!hYvMb+#=&`z8ELZc(pA9P~6}a94n9VJc?P7OE!uC z5FV`^LOB74>hAC8>;04s&uaPG!LjRsoIUwTh!Ap_L|v1gQ#?MHJ<{1R(5>DK+IDPD zVU~Xqv+9xVzV6c;0osj(Xl~+BWh3>RH+0WBj{9Se1JCxOW0csn`mAkFo$H38b?UO( z))}4q^1*kG|0+0E5!%VKT`#iTQm9T7)dy#l#^E(2Zkp1QQ)a6h+8DKDG zQCDo|%TK0{Ud}bXJXBu@Cmhq+d26WN^4E#P3z9=tZq4!qix>0-w6C)8KV%%NP1IliW+-Moh6ETEi|+^nE^&0AyYG}N4^{y4^&~?^@_M%4 ztRCh<^;_rw{rv@SIA*<0F%#QJs9i+2#;AYP;K-7z5BfNH_B@t4y zeB%kO0jNJOgm=2T|JiPdr`D1~^#M9e5Ktbn_0EQn3!P^)$M;oV56UR0d(01^I-$#X z)B5f37WKgp-xI12(mry!qyIS*9gzQo@Z37cPhv2Jnh=igqVp^caEm%Ozn?jK1}UKQ z1z|3%1;^{pmqFj14&j_XBbw8Fs?ktgXiRP%$%b%zxrNtZSpS9aw&cZ%T7BER_hRx( z9I&T$@k6OH^=l8|!*lg5|C(S||96$&GWEL&$M^SehlSq@-l3mV?Ar$3zP~;Ux9`~q z)7vP0n0S7FQGVjBrryx?-oG{7XuF2T!|i68zq@uLkC}Gc$S3(|m~NeZ4vgQli^^@J z>Be-uH>fW@a^v=e?+e#Q`|s%u*GJ_wGHU9LoE!A>=5a;ajeQ~9u0=n;ak~W0K(*dY ze{uc1xm|P|nUNchWB&8udi8H;n9hFxw(`fr_0jQUe(c8eYd^|*Z1N5Ki2h8TlF!t~ zwz0>$-!SdAsb5>Xaed~GZd_mYKW|*` zRoqx!>J92=%5K~~A8Ft6FCj)>pB01qOnYNTGY9w_upjKYn)+Q&ll$_v#u=BIEh z++Xn{TlbgNacwgn`6nXyhL4^vhWOag{)sRjQ9o#ZHq3|m^wxBv?c#%Bx>5Vj{@ji0 zC%+M{kJ9&Sy^(wST!b$JU-?g4!;8N_d)q9x#VC9mdtcXhzMn<)yZ(z|dydwtUkcYx zemes{dQTg{2Z(KhUsaHQ1;%`^OH^S|syF$)x z@&9@R_f4eH1A`sN1njLtVuZ}=)C*xzQpqW)LXc-zyB-yY^WYOl#ieUyH| z)*HU+J{sZ6z~fIv;Kn|!{}{2BjcGhjS^Kv2)}NE#6XrKs-}46b^WS^p_AMVX^@i_7 z{k&PuQT-;`!*rwd$&ZKYqkK>6dZo6r+x8A=Z{-rDKhhnhAFW?J6|Rr!dB)~{MiJ5a zF}vO~a#7Eb-e$Q($F(wP`n{L_g7w9dy>332;ZZrx0nZZ!WW z;X7zITK^4RG4-b3Vg0n@X&(~JXHU{L+^Uvp@s+EiSJ36xXbg3 z(`UPmJkIMeCvb}kw=;0qUAAE+=p&t{b0Ao5>4fl!XXxu)XV0F}s2#Sw>|zJ#b(}eK zHV3ho{ulK=SxWsBzQ@6GpM3E9AG%0=R(&a2Z~C9W(&c4l0^{;fa%L3Xh5 z7U}2w89DRq?(*!FB=1!J+0)+H{@!PK+r@*F&i8feA$qy99`^aWy0a$+&f|I=leRr5V;eOLz8GVjD@gso5Rg3;CI{mb9c$pV^ zb3Jb{65*+3%DZpCd-%QHeH|%}cQ6LL4v#!Ti)IYHeSHt`Zellod;!<@cAI`C%|7h3 z?g#H1H1N_n>3>ecld887LvDoQHu4rx@^XyRi2Rbk;%r;nD!SZQ%ULfn0CyJnx)( z(iSfD01YbGpH?c^*k$E2(<*Wv*8FbPYeB;|>vi7X+wl%RNjga<=cry*48H9*Z~9gG zb92851Go4|{hW1s={l-q)`$hkgnomEj!KhC6;Zox1v(Mv3RbMae9Sxvu zxz$JFDQQRXvrjX=IRm%-*}R|> zX}_kQH;<=M`-49ZSbjYNxBXdvZ8z}n`0;xRX8blUj*c^{+xh+5aSj`J6u%JZ-}>#0 zfm^xEMes`c8Nc>;PWw~L#ufUlHDV~*fT5tFj?&0ON1ISm1|-1^szUEj}p){H$Y>Q6s!OFjL>8O(J^VGtdjQ8DX}BWESv zRJMuTTRo@sb6k1)bF)7-7`XLE8~2NSq?2;vK(BaK6*j&V4c$TgIjw(_hX|CfEKAJN zAemo3eI19r7kYX-d#K6Ny#xH#5Y`!%??ppD|2^bmMA^LJyQWWOkat>s zdo&%`k^U?w8|QWY2@X1tBXD-sIiE=^w`Nh(b$Q>Sp(}j)@n%HB{kS-zpG(f3ti9aZ zfA$4XboRTIP*A_a+Ru&nB^^87{P$9B_}vEmxu*2-7a&f4I$4qo$qctsFOj{I-5!>t z`05IlE-CMc9JIw{CYFOaEPVz{o{TkUHx{C2I(xgt7(p9lr`2EH+&dZ5{rhs6G|v_< zZSaZ)9*uj85&Sj%jC(FU9A949b;x(cC+sU6=hjrYapc=I`^wq7$OLi2taBuDq^Zhs zd<$WbLWPY_PR>Ht+2NWQ@3j65+TjiT#z`OFZ0PMc*=L0wvvRC#7k!Id{wZ`d!#k`U z6%5^s{tVKEEO_~_8=i}$5}st~74r8Zupb?fX+jKHEBr8V@9WZo;2l`KOu!~ouXm~!yDwY`Vr|jgf2yNX59EksPA(s^ z@po9$_5FU%^j9$OsC~~ExSjv9C&`~5@4kDk!g|YpLdKcUpT7U6o~C8Gp>P(#G8nsM zP$U;T=eq|EYax8{{6J27{s5vt6BK+pE8mRJ-^Iu<_xIWN3yNTIc#&@aO&1aT$L}^9A@WX=(F~jkn9Q=rJ_YN@O}rH^VDZ`J9C*$uYM)MfqM%i(cOuIq-8TGG_Ui>Ke zPaF(nxidPR^~iXNS}*vLz5d+7{tevvRfB%^^Z1V&g{8M?-(%p`fAad-=I4-u*@ymz zo1gADkmp3^!+;cl>GGWH39%=oKQUjwO9qg7`bm6mxEC=?cKPs~8O&1JIQ3r98Lp%6 zV{H2{{)cJZ#4~&==iGS)NUy_tw)c5#9l39tVC&pp3~v|jhBY6)edRO4UqQn+=if6C z{H(#B-v)ohz-_*6H=>kow^`o_1GoB08u~8Y8GZdDrQq@`~MMoGlt%}fk)@XxUTo@aMCeq}m@;r{S5Fx}+6~;&x9efaQ~bDL z?NIEh=<@P6RD$%g)1C)xp-Eymdr6pk?JZrDd)nW}v&LZP**HDfDf;pBXJp^_4eU$K zHgcE=+_~2CNCnMVS4!4J*p}m24znM&+5;-o7efuf)1p^eK;ub?ANIt_8!o?>i0dh z$xeqObPI;=oYq@9X4moGt&wU3~nT(z6_*3Np&bJU*lk$x&o`>}2C zrz7|!{fzjiKk>VeCSSDiX6-rhn|JfejpE9~v=5WVcYRl~$Gm0c!6!IrY&GX>r(iLU zo#hdJE#Ec{ts8kv>QBVSw@5?D(7GA15JoEyC!azz$I1h;ZZDyM+4M5 z1X?be##4%nr^VQ@?00O=dm41TpO4%yj=^56eOtZRIHlvpcgKB59(A7-KO570q};i+ zk%yf`f+J6PTtw-&Ido&EA+ShuZ~1UD3|8w%Z?({n!lwJWajxi{wEGq|PII5N!|qt= zZ{*?yD|o9CtR|Y*q%^<2y=1h%!T$~1`lFpcvIcJDmfr?%EJD{abf>q$pNrs^^s`-G zWSpP=Lx-%bis#J6&;N0vhCP}4B-$>bTIBwsi33G5&N2O&b@Py(N1n1TTj9pHo)oyB z&(y%}=i9ixsN4H`NofDY@1PlYR4_unN`hI>})zYEw_WtBNfg^a`f138&LjZ~=G6@9eO+e8xK?<808M z{y5FEe-Ffr^P}CJ=kW$NbS6R_@cO&Yo$uvP&v3sN*Sip~jld}nxe2qw#!Kw?+8}R4 zgEIq!o~=^ofg}FDmon#9bDB?Izb0P#tADSvzZ>V$IH*Ak?9nRWDjwH=I2F2eoZXL2 zXuAHmGp3)Ufk*wPMZ-6*kHqfsZe64G^9EdzAAA3;VCdTTVCR_`4Nti|jLJiC`(rf@X|_O1oU_j4omCpYUl$4+*z?R(7^rMtgol_xO~0D`(>PS1|HQ* zDS|&J=fP@y8~nJg_vxn$zUVO>v-GVV?5DNkf5-@-j`9uTw{(erlu)%+ab9WW7rRe> zpJ8l|)VqCjrR9b5D+71@?-D@D)1NymU;h+S0VQY0J-S~IH}hQH=xxlvZCsb(?D zU)a?lV=iwjn)Zv4_VPU9w>SBGFdx(5*hU+FYfk8g zin@N@t$S`Vd^)|F{xN2_rhbm*sfL*7Nt&Ndxa{`Dvxyjuo?h&Y-`z;Ro;VMgI-ZSqt>rt}?0z=Qx8nOFspn`ui>7$ zg6B)H+w1?`_J`l%16~4S_Q!>H@&Sh>r^l1Vc<|!)O?V>DC42|0P16hVB@$x)8?aSR z*GKq*ACwk-eF}Z>2K@{L?0_02ht%D=(NoH`qh9gjE&6+Cc+Zs6cRBD`6VrA*`QL0m zf?qV_yR-%V@n3>u9lo_gPaTFmk2=0~82Xf4Ocj5W(o%S-c(|WQqu=o@`q>zT-Tgrr zztYf|*aDw=Oh)j>^m{Ipn%V-t9`;gL2-C0on(%pf3;bH($0PV9!~~YvE%2$Q!QT(l z_uvC8S2e!)aZG!D93F_5U4I_-2RkkNUbtPIexD28&$UHA3;z!Kh~gVNSP0-#+qB3w z@HPIbPoL1?pB27(9NgFI66|ov@w>y>IcXI?C+$k}mL4+({`eH$tp;6iaJ~U&Jq&d0=A;{7YX%Jp0dK{4vCK-LIJsz5<)D^v5Bu zl*1a5qF@^ z8iyzIUC+NI*MJA`xa6*l;0+r+6@JI3R{^;lj^Nc9|E>+-9sd`I&k;Nuf5(5@r`L%5 zp)rEDV)X0<@HXII%@MrP56L*P=6j?2@JM>C`Z=i{(pf+yG6dK(#uqp6qgqRt*AW|7 zDkAV1=$hsFZwa4A@&7&uvrXfrKsScSU8d9Qdf<-0|5@@HKdFww4mgi-{;!1`x*WVh z!x{HEUpG6rkAD%i+^_|_0`OV~r`_Yn6ivVJ2s~r#X8k{rfAT|qm0C3O$+U)h>KI_N zu+uSvcMP$Nd~?=poP4dV39f4XvAZwOYSHIK6FV5$lslR6EKjrcUJLAX7TcPhlpnb6am9Gf> zVOJmS-y4qS3P7ZJyed~vdd{@}wfmnrZ#rt!$1R*4!kad=tdE9ecm82%>yql~A^^@|_q z2=xpf08Xo`XS51qR2Se|u6|df9(9Z#u3qGV8^&5{`dS}aBwRgj;E_J-5f@F~65pmi z{lh>)snGRSAJV!H^UIR{UU^#GtNo6#w!DHKRR=q(L5!X=^LLBJOL9emT4>bJO**)V z(!_vP7s$suMhks44msF zr{B-OH_i9z_i0SL-{56bqZG{d@Au*V8{jpqpHuL2D_2?^?9{AZa=Jc^xJA9liUmKJ zqos8m_Qm%ZwEh&7s_GFn$>ix$i=s*1ua^JCSS2 z#P!mz)BgQ_#>{-A3_kV9%`W7*6|0ExafAPu=9qpME9-+FUi&qn)8ydDLD2tY^;NWY z^hF<1137=0y`yZ=t`<4j#;@A(`1BSoK+aphtD&#?E#TuXWBgmdFXz#J0B)n!DAtr0 zHC*Iny)p?lC(U}ZZ=3ooa#$8GpdUuNI_PH!G1hba$-0)lzVPpnV@BwShM;GopS4-a zf&9>3{Wz30^>wjhP`tx znVLY1-vWLawDKArl#f_g9=6Alb@h_>Tl-r>>|*J0^;W)uv2OI83h*i32HQm2O2bbR z{GD){f3!IKa&WI(s9N~#!Y^BUws7bkF*&^%zntri{1*5_m{X5CxU2`*M-G12;NbL8 zrB>j(EZ2X@_ABtUyauaL4X0n*af{_4BJR3`wu4v;H^Q$L_4`qR@)f+IkN$a!O= zm%tk168JBEUF3We_P}g60iR&03A7{sXh-){gW#bV?b5m(?OaNYp~E;X@dNWB=5-ap zyLQ>?)%V{j#NmvAKL$RSr;^F5$jfUTKB4ez!(WwyTlv@v_d=7%^82|((PzZ{yLm(vxpTejgBt)5nF4-oIL30(q5Uv z)AHY@d0GO$`9Qs&pQ9e?pMWjrzh?RM=^jR(IR_8O@yoCe4HrHc2c%n^$GOU!$uLhcD~oG-SeZb=vQ*=7*uT!1F5F=Jd1dJF|~D z_%O?mgZuqYVa>MjA4M;=|IDWa|DwZ}{!`E)%dEzi@wOp8WlejRFQU&H%*C}4y2;N< z`@t>n7xIw%&xQGzGkI^1hD+Xi6Y{XK@-j7!aTbiduIcw%2|w51f0qN#HSmWS{p`zQ z*sN2F4(`ii8L~V2qz-+B@vJV$th?_*B;l-r?&xldJZo1iblSde@67OU&k}Xaw+3KEpVR8;7|EH_BvQvHC*)3i2jx) ziAVias6&_y?o)5kF(LjHjjon;eOlMkFIbO>qO5QMwoIGHT*gwT@o?`BI4lL|R+p~| zAD;yrvsPKw=(keCQ|hzmmvot9mX*cS{3zxp^qu+l((VFuNxgaacNOz)vxArEnA7qi zDp2B@UIz4b;Ys9rNM&#~L2eOm&@az(5{9ptpCWxvUBJH;1;7J*LSC_wiN`|$ysiN&GY`)cso65`Xw2*Kc7UU(iIp$s}Y7^K#R&`4g; z)hZpLvw6Jjn8&B!+n%Fi$3yv<@xa!rHr4y%ZG#+05q<>~7f6VLbKi&QPit#M*@A^1rq6wBr$9 zoF10?30Lp?k6@rJVqV_Whwaw->4@fo^Q5%L&$=pOZDr$-=a{a~qMmWC5;1O%wn)Y} zp3qb7u(%xs^uIG95>^+ z^t)C2DzsT0w|I8Gv7DtfZ(}BJEjm1(p2U5*XFz@y^5|dlO}~GB+`&Ef6FxS~{v1v$Xi5)RLfN9b8u$FW9Xnbv$VPq6gF50XwRv0W3e zp~An3%17`ly+!yw%Z$_WW_ztbM4_HWG0(0eC#b+YmBjy9=KeM52j^wqAN!!oF;^e9 zzn(L?xhlGGu;0ybB?H?y-iIC>9pBEySHMpW^N6e8%>O9(m~;JX>2KwO=!2#BB|Dxl zzjNS&WnR;veUOgj*Tyhrn3#tl_l$`H#~r=Rd|gA#Nx6DEE=vph4w!ptUH#_vs~Gp< z8;q;{ljIuv(_?mA;W*M@)_Wy4F3Sh?sJ#^0FVpk>HQ0ROvxwnX&m4C2qWI7k@G4z> zSdR0?-d0?H+spCrpi(yfF8nLY|7JN%Ar7qFSPnbZkt?t?-hfUmWKn;E`iURGxNlJ3 zjQOw9)mu5s{4$T+ie=sLNx513p`68brZJB;BW4x;r5$gW&KUa8#jKme4mp1?awo9H zBCS~YOs}Bjeu8u|SYI(MC|5gU<@}>ESW6s+F5>5*PuS`_=+^ci4v!L_>t(&JE6c!^ zS>gtM2s9*qVSafQa{r>>2jR;Y!;FUKUB8vmuZ|05Mx*t0{HZ%7+{z4SRXii5CA-D;>h~vNT2)nP*O;9Wjh(sCXstjor64v ziN}3N-;WvL6F&qn%DAo%%jaSza-l8YHP3=(6b`nQkxyQZ!XdtT(3y?GAvew|SGRzV zg8sEA9Q2RFz8im7#w+(PY=%=-2GdX%;kT2pF_z*FiQJDte->*4V{O*$Q?T=$dSAuX zQ7?QK?vQRL_cMGCNU4`}4G9M)flKSMg6>cGFvm;;jfIi)(GuNeHK0XaSWJ@dmP279<5{dRylCDj60 zE8=5ApdIDNe6kFQV$Ww_yO3q0ZYTXTVlGN){3QA*lRm)g(q|d}MIRlA4Wz?yv5%}- zcVE->LT3tcX$jD|jl6d(PmWep_vmg_KYv(!fV^UO2# zd$|+w%jt>dS#^-E>^t|sXItS9BR?SWIA^>;EKB;RMtxq_r`0)Fk@WAcZQ9Ytnvq+^ z$bSI$nC)6Eh{=6%?w8jadL5u=iXZicB9yix>-kEXr zVh`4?N+&@MrN`L|+spdf(g&-mWaEyb!?;7cvRKev4tDD3a6CfiK8J&Q|0XWhIXc2G zBbcRBgTAVCy>B;_=9zlD3R@U-dZeEoaDH0I00Cuki1J9nuYEsVfQ@7|T=W-=nxbLI z$=H#n@x;$&VK;f#AM+#a-R10O3^8!w`_SK~t^7qUoYSm~t1zB+U7ti;l5B|5VY&V( z;qxiP0X^?S*cHefHZ(kgxQKkh*`l?KGKM5Ii~M}>8BIntYkbZZm7B0tm{0=r;!NF6S_I{mgl~0tg9hqdY%q0satT^4#-2-670PmmJ+Pjmvnv4ExDyJh>ld z>0AZ<S~l>=y7T z*m2hu@Yx>p;NXlo91;45&3Fzj_fuGN6}C1NkQ<_s;$4C&$bWKx{E{C+@jqjCm)$sN z2dv}mO-K-Zv*cVmh6U-r4Kip8z$I1!20hMddiMSBgep>>%WE@#JYx@)b zUctJCW!3S=IG)n>Gz32!boiV#u>LV|=DNmbe5YO{*2#>4`>|!%$Ku}0XE47&b}Yp+ zQ9TKEJ7mBz?CN(wc6RoG{UAoM4C;FEGsa5JO|_UuH#8rz4q;2tEBHs7)efcV9Nq9b zr4BM?sdRK@eEFQfDWvhQ-55DnX?kh(QL}$7voF{B+_(4f7y8JTzi#N!&s(n>Ebm%G<78V`?UkN0chlF1YW)`=iBE zGET~S6|w88e&&4_^a@>1n|%G6gX{c46|iT+(iUic3Guff@H_>(UeM2*^~d?37CM~k zmT?C8nnIr!H9V#Kd-if4umQ2H4RNc=w4*+$x3Nym4s<8 z3$VzE?}h(iu4Gy5Bwje*qYWfrLoC-^J>#5MHKP-8YLG8o)cx>YAM3gP=baeV$I6xw zpDsB*WZtbrO?mkqwT?K@m`8jxb~AiZ#?b^C?1%Jgp|4R#pY7$FBGgmeNAZZ#?ArPD ztC*k1T|3$v=a4$6yYZIkO)ebdG5gf8==Qm({CsG<{Ths~ zT;KFzT`{HW(^wa6{XN_{*d)uP0A5&c>=VVz`)!&Z?lbHLQ0B1%p`K%^7VFQ1;Y;G; zE^UQ1X{@&mo!0Lo-~RVMW}pL>#t6K{*xi_h)7~W>uxIY;Ks~AtZReg5dhE}}gNqrA z%fM|s=mCr+vjzTj@Le0lH}dIm__Vij#CzB)bU1rlv>E0xJO`gP@jt2S8TZ&u z{NNJwRvmy_{}_c|U)6B>A@eG`CK3!y*Q{3yPfNeSbrq?5ZD@va&G99ExJS<~#E6ww zorIiSd&WcBj_{T-`)#F9h&&~JVCMupvs9UO_hP(aCwFTdSh-HPcH)p9mV#-=a}mzxu&|0t@S|!6m-s$r^9DI*;c3Cp$HD*ivK@Cn89NYP^fT>S#?MvYMf5vt>_4gNeSaA=eiRST=|W7H z+lmh4>zVw1^n1c`X)$s+Y~Z}-$W^v2vu%RUdzQ?%@&-A&4mvM{2|!4wSyead&Ug>sD>gRH|y4m4leP{0~c-R zdvFVQGwi9)!6|W1rJ-Y%OaRV#yC*B~w1#i~{@_Z7)HiQapEvVogQF|^AEdq70(m>Q ze6Pa;xh}+zB}31yLu4Hvt4JY7VOjd1$Vc)|sa-{kopmwD;HksNJ68krsBgnxS>D7mZ;N)9Vbj-jJAZw}7=jzn+U_SHt5m0quk8tr zFQfBO@_UoZWy;ISU{_6xd*7(t+tM|{pg7flm-Ji{WeF@dU z-!4H5FQLD&kANib3Gy&^olWzXTVdF@WK3;a*9FhJkMQ8 z30=lvu?yB?|KJI(F%iFXz2qI#WgU2AS##~EXR$@y4zZRc>Du}Fy$pJl8ZLRyD8{vJ z@a{#g$Og*`rv3E$Hp?y7u2ez8rTqqN!;Fi0lO0zT@{nrNJ~-Y9`4D+6ud<(fCTAOG#YA zx({-QyLP_6@sx=&%t5CM?~(pHpqEPM9cHD5VAEGMJOz4`IrqM#ZqDSrmtDQkwHTA8 zKH>Tm|I|B1;CHPDc7ngjK);sXWsJph?MPSRu;ur77eKDx9e5yB;VWow@c0)o29~6w%N&<&t%PFb zqlisON4LV&aKE_0wF}Fwgt0HdSLWVr$47hT_@S#5Jl3__EVtQa#3$WO^cj?!XZRg- zbbYyXA=c-%faf6V7S~@`Zav_IrQWsk<<7N6@6ja|y*CEpMGNBldi`;l{b zsf7)~pN3sK(XZ7JE~f-p)!(-k{oybR)Sr#AUM zjI$Hxk2k>MnyS*Q^N-h49%7GTZ+@T0A4Q(x=-doE`Zgtcx34WgFCrH@tm$~*8+v#S z>n7bU3Ht<>=+B;i&OK!Nqj6fDqaUVrcb|QS!&KF%f+KHS~ktc`@dr`m)^~-jwMSm15%KA}Xp45%2$Cz0bbv@-p`<44- z^|0Nmt{wf9Eqz@q!M{pQo|UKsu@e79I5AkB%^>Y*I>4(9XigP^UuPbl2`q@l}d7OHL_4H@bsZT+-zE52$<@AI|8+cTgD#anor-qtzPr6g+|bC*X^x;i(Ydlz;|eTqF2s!R<8;8VGiv*jmLRW z?)5}4X}XH@*__dH<^eli8>fZlG;mnzT)(0pa^#O1aj8l0sx_T7>}e}JXc)3*SvhR` zle0pf7VZ^721(bS=+VBDjN|0mDrMG5LjgLpn;@N0@RV}(VLgq&4ptTP zpTI9x-pc+ZZc&FEKld>fG@O3BIi7HSp9r+G{>pup^fvq!o8eoJKwhpLgbaC--_?g< zkFK4y53^!G{Uz$&@xyt6)t0Mu`t91W8Zy_uAe8=qR)2M&eFBxKwN=*Ms&Y6KijM~W&BS$ zI^p$phI0bSnB(92m*kywh;zp=e~rF5IBxO}n}W?1T>r98lX1bj%3v#v@F>iYRS!br zf%aC9*WkAs_mS>qJihJIMw3ckO7Wc7=f5PK@*TQRqpxll@fb zk8vCRXvUFn?I~Z%k0%(g3sdj8diu4{2X!}ZEZ<}KvhC}1ep-u#L#e5~iQ0K#TiZbI>tMdjPK$^MI%Ecwdb4 z*l!B|!rz;T4UM?|XfLcqY=1xIg}W^ua<7%}!?2Y)N6(*E$RpPt)$awLx*hM2%AR6E zj{tImPq5?z^|S|DKWygPWPm>TwHV~N5%gOk?L|V+o3YnM$2a4N)HcJ`8Z=$XpL(Yq z+Vxl2PST#kp1}Cq5f9$Pag+Zj9`|g(zpJAYScQ*lG?bxmtnIXXML2J_Rm3IAdp0oJUH*qI1 zc9sU$@8c1 zEr_$OJ}mDB#8;M#=11(?c@^MA*vb_As#dq>J<4*!A#43K+PI1_tAVQ#41*h%do88A?k;9aR`{y%RgXfOm-AJ%sxoe2`CS3k@BIiB!6 zfOBM`w!mkXfi&vsX^+07AHaFlHOOvU*Ylh(XxARz!UGJrSe+SX%WdR;^SNxD@i(RG z<=l-K4DERqIr7@A(yj^eVa$*k=nZu&S9QI7-_z=O7Q7csyXbplSIjwd+cx!s9}v2U zgY1{*bN=^Cx*o?FLbbpTK^83Ocj*r`rr{~0 zmUvX?U5>yrR2WLiz_rcY`Jewj7&4{JQ? zTc3i(R!m%|kHCjv11yaZ_`1<^a|FJId5xtt0xy{O))s+RB4)B2kHF*Lm8E%)9gn@& zQyyc~T!S2Pk75376TC}RB7YmFQf7X>Y~YM*v{Pox*P!QW4VU~#{ETxz*$!HH8)IAw ze^CZ^ldj|!KAuvZ-DlAC9^yUPLH;$GF6W1GCB7@~@ytTL%qNy_w)E_LCs-6iGyZAR z_454^!V0FJcm(df1(hhJn`GR_;J27f)qIl%tBiy57AW?$41TTSkMWoHT6Uv8R#tpe z+6`6;J;njbi#9oR7C){s z-%lvE!M4aVVh8Uht>N=J_!_E^ejHy2Cw-U?Hp&Gq=iE3ck3o;H&!T}dp2tBhgR?P~ zDF>(CD^=0V3l|OC(FfaYu$8JP9PYIQ{&HpPSL9X;n;X^7NxcrV_EZJ=G#WVN&Qb(# zEVT}9{RgsyO(eE}AAU3JKPKa}bb8FX>6(Mf`;J#kzB%jQ^1f!yyA^Pd2@U5ujC!%V zzUbH3$ylHr$H#U<;5qBy(odbyb87^irW2ynZ_`iO%p-NK9p?q$4g>Cmh_TztIFexN(Yqhy-F4MKf>B{5=MXQSkdIRz7WrMFj^J zJxrQ$bZPkJai$(ebCkoboloyF=9VePhsYbdpn8wFbRTkJ=)LfFmJiB1p^6kN$|VP9 z{1G`U(@r#8_~05-#)bUAwDSV>LHk>Sud`G-x;~$ykp0Yef_&h68;0J5gZuc)9_+;U z(W9^<<_BCYu~ZuTU>rM~!oJ{!(6@0cW%O`S!zDkTKpa~ATfut_{>(pl$cbe}!#y2G zyWpF{f#){(#Px8y*qq6aTLXB@u%r6GGxMBE)6V*RyBYU}qes2b;&JaDb+dot%Zbo+ z#157UGd{ad#W-0H{SP{PiIYW>Ush>+`XS{iKE*bJ;EAO=RL^-2--$u}Jb1Vazgzli z%ZKnswt3%pR>Nr@I{{(-C>D}>j8x$lo9e~7N=;Hf=IVC9ZpiDZrrJqn2F?V0PPC6dm3xu&^{+!p(Tu;dN^~zv=OVIx!4G?8f*UNeuCv35# znfE*cr+#QP*(Sj+IeL6=3TwDRxebvmwv+4FiEr6)h@B_U?D$=ntG0koV9sp&Ch^ni zi|{FCMZ5S35ez~m7wgB=c2~T zfDcCUO2Y|#KLvdGEuE@n$l+eZ7|7w0qq|$<2jBR^?|}6{>Jwn?`2Q{XcnR+(5jl}2 zcU}c+%-CPE#-luK&gA1(E{(M_3kYVgvJF!oys2JMxYYo*h3e2mZ?3(&Xi<{}=le zJC?H`>JIzpMxI4izYG0^`Kd?K%Wjg}d&Fli;2w;-#yk=NRvTfVoa-v>F&IlSH5(1yK1e^58HabXlV1>P5jMm!>hQLgb1QHQ%j8q`8Sg_bUNY;&Ne$=u zft_dX*Yo}SK}}vwyZUm(CjQC+=XdNAASNvwfIt6FOP65endMlsVyr0xxBFCS6IY6V zN_-CzlQL_bJMdV8d1YQd%l#$!-Zbu&mB-XH=CILwkRO=(0nGQ-x7xvRyV+N$F!kp` z_2B0*>96G4^Bglk0o9|(af+|Wc+No{_P3Ug13sbQDZEdN{nlxpZbzFEm(?gEu3qAZ z+;XDEFs~r4uDE_#e;X*soC4m<`>;Qg+@jyEd*OSIZn$5&PqU`!rquv!+y3&8PZ@j} zxy+V0F7m&bzY5G}1zn#+y+7`1_|QeyF5G{63gl3-u6{G!M%c)DfIsU^j=u`S3O@zH09&7EJwC@}Gj;kL!9F|18Fl*rK0m z^b-%!VPvwShn*oGo%v%cpPiwZV#LfR1y?Wf3(h8&Fo$@$U;loeyuX7ZVn5{!iYkYA zGKsz>60pxD_Q&rTF(zXkH2tjqk%gB5TB#QA#s^Bf#`n}cz>neis>YN3iyX$+ZrbrY zu@ZlaSVyqL4W2O}462zzSbzmks> z(U=1LV(H5vwk7>tqGyI9w!FE}) z8qWEQc88X+SZoU8&LH=z$LGv~^k?iM5CE%4b>fFu!O#`JN)M)U>g)RtKjwA|5i`L`gch z?|=2MnS|k2{EyxzziPvLq#3^Jnf~vgZt>UJXJMXv$~mpT`QF*Gy_Cw*?XYVzfA;;Z zjE8=jgC0iov)o@0f8j5DfxiRDt>F)=|AqMe?_4Df|8oxR^M4%tU)%y-58;iue#o)J z709lP_jpx{Z}x zLJl@^&5p~DuQjl#E&p3R2UO#g@;)fn&&eCS!!TUFtAp3>@T*ewW`A48 zY2#8dN$MDfgNvWH=t1E8!oZslKj@J&MvlidT;3bOeh;FSe#V*v1T^!ebp(w;_F^$yP7 z;AgNAmf8TE&m+hQbTM$gA0znwtISnP-ycs7ytHirzY1DI25#d3V++g5Z&*6QPo>Igflo6qpbQ$gonI=E+p$a-IQ^8?&$)x^+FA{_=NMuew5)l^j%E29 z!k3)0N&RKaEms3@J6pGcw@D4B9fi;9lN2(_kgE^d*&JdTOWe@4cE4u)YUPUXA?H%` z72HchJh*7!7Jt&%^O}Zp-e=sB$jW>!b*t`1)raU&=CO)V=xw2B^&s+28@{JB+?;bE zCQlo@1Edat<;{GX)NsZV+5_KXQy$}Gl1ljRVbD*)E?Ek{F8x?NH9RQr2Hl?dgU>g1 z)_2(ZMfJL!+y}CL%KqcVUK(9J^9Y<);@@Vt$O@PHD1~2>evj%}_>F;Ia&Y>S`2R9& zr_sP&d`Imi`1t&=w@z-j43iRyvVv&1cX!A5jl&)V9 z{^gv~)3!Ih7wt6M!?@tr@PR&uC-xb)e)P+1FL;OH3k&+0@{sfL0uv9ESqJye>&L-I zPScg~+FNy!x5d;d?4?b&qr80o<|?tsTo9$g^bgUhS;UJM{`_087DVpmX?&Z{VcloOy*lI5sesL|>1XDH;^&lc75-ZY;=!lZ^)urL z*>40reg zYU~?@rxordjeaBZE`@ua|1W!Q9~IYi<%#|ZkW`Y8RLDp|5|S`2`4yFnkoS@w2@RGl;BwD6tbM)gmemraY#ZkRWf#n8z+TKIwZ!Oi;NTAjC#Ey zqxBZ^mU^wiL-)`X)1-%KWd3_^t#|bScb~6)_St8DopaCW8+Urp zegsQJp<$k@fj%|(6g(eB$(XN>l_Bu18bsDdF^kYz^gn@dZ{%J1PFr;a{uJE9*_YsZ6pjvG2y-X-$;jAhOq@Uz zH?|@6B-;E#=MjCBM~8%V!BY-rMk;rWXywQ852rBY@$eoI7p@-heor=_D3cjy@R6gq z?LV1{?Bht!c=_{q@)0aJJGLP61oL}~(e@-_LFE+OPatoahp#%zvE-iqD*R7kQ8{uB zBOgOwELw$`5;R7_moQ$AiN^4I=zJ2lqa1DG?e@E?vG_O;QeQ>vah!dq>U-!b$5n55 z9Cu1E=XzlaqEBEr+WiH1PGR6bd0xiE<8X%Nzlp4J%)aXUDn=g1V8&2C!jB_=Xy}_b zTTZ&nt5|#jcU5-{&u>Aa%k>S=|16(q*@otipi7PM9=Bq2sy-X8979_yV1xUk=noIQ zh>DM*G^gVwj64Bl%=t-hFLYW*#EyS^6j5jQmvFlr14`L`ES%zzV?|?VeggIoKT=d4 z=J-_|M3{Wg5v)K-IYuKHUbH{L?emVG;mH%Ye&ggQzsH0l$GaJ`k0I*wK83(XQ62T2 zL02(G)T+P0z$0i31bb0(6idF`Zj?NX#X$INxKCj5q~lrmJ_L^veiMol<3ZP7!hQn5 z$j~mh9>s(wP$=IUMBOK!!azBqj#s~c(G#$bRk_i13Ry$mhw+0)a8(KT;XIBRNB0I) z9z#J#FpJ;oVaDJ66u*B%=}<>6Tpxiy==rk1XH~~5;C|8cA2|L!8b6HY>Z-NqB_CB) z)nViqu9o>P;JwF?R@8b03&-K`c07XdCy>>4vl34|fi8F1v$j|T1~Aqs-+dNzoXkhG z0;Q>;FM;vhv|GwgWSy%1E3sGcgAefvj?-)4I*f(D*k7Wt3`-HuH;`R~t3gLAV#iT1 zrfw5@3`V*O(Ov@O%dUR#%#0pq$9i;DAg{yKiS{yNO{)s(k0bh8@DcQ$!l2sm1^JGt zxaEVdA*%u|Uu-J^Cy|%YeI8k*s8HNtw3kA;721pu&Wqh+pF#Rb@>A&N$S=d3KW8t3 zr^xTIT5w;&)nN38=q*Cbue^gtxHUA)`frzDAn3}J_0w$cjUL=C!@xP;Eew1ZogTKw z{g>%uwr@!+z1OOYy_p=z&Me?aM1T>@Ezei4F0*SU-rAE zzlA$T;R*$g;>{BB>C0b2+X-a0gtiM`)q7%X{BECHtbg@Ikyq81Zv~Nl9OK9t#T%!1 zd`0dT@i!0Sdaz?9{Kt^r5qwSd4P@v1I#<>>N1UNnaGUcTHFOhqjzNt%MrA+i;Clft z0*_)g=)A%2h=H7^DE4~ZL*5}?(WADby%4cQXAh=II35{qqUUjrd)1hH*E{8` zS_NkT=^cIxuQ`cF3-`X2Aup6uhvvso?f3i=-#V?*u^BJnNC(Qb&R@GmY|s@AzKP7oNWbYZ zq|48-TkxI4tebi|^9c1(l@Fein2GS6^c(hj{{(@9Sa6eH@*YFKBZrgbG4e@O1*RTG z-pQgq(WmWY{y##=F}6SU1JPR}?v4RWalX&HUc!Gqjys;5KbG(KW*pus^n8fzdfyX% zP%_58hZ4%0XwXF^&Y_?FIMfo3Uq?UMAI7LJ6h!P4+D?YUIQt>wp9{Q;d?yNQ88lKJ zqbnDv!-_KM4gZJXI!U?s{(AUJFyd< zL|SM%pXU@HDE3eIAU|m++lAAoC}(5UBFD3*U0=c3QaI|OV>~wtjo!dFQ2IF1ro$iO zxfr-B^VIVw+~MGEM5%%txj*4KADD=_euj!i5kspY^ZvG@tQ*Z`3?8~$c#aF{^Q%w6 zc@oY#UItil5ZT?HLn1F1)pJiH|0q-+=WDD8;{(d~@WzL5J3#w}>##H3;a(g#hLJ#c z6EX^Pdt*hRZf{JTpq%Jdg#SvW)mr(kAbTwQ6`oH;xm!iM@0kDDTJT_zChw z#yHB3=;Pd52Io*tHKts+?fezzGv#uT?Q8NaL|WB1K97<^+(JG51vpD#Z<#)eHjW>1 zXq=WZ1l?Va2-^=1Z9=;fi~mXe4ss|b10e_g?Erj=IAsTr)l&5~>JO8TJtWSf7*K7s z$RghcTV6(VFZs(gjFJ5)Ep%?g#G|x}uQkbjk|pIN?QAZfy&k!N%6({bM;tttkM_$@ zHQdx2q2L$9)gA5#eiOZW(bo}u3xWNt-}ko2&jDN68H`Y0;)5!&%at*|7rwoiQ!#?~ zj-pNBII^97jP1uD<)7d63q&4A`h3cD%sj$l06U6gFQ#(M_YO+-qSsyY6U-mh?Y4IE zr|RB-DVj77b)3gY3GTR@U2q&mr{et?7;~oF|2e`Bqjc5DO`!jlR`&iO^c7*)6L<*G z6Uef4ds`drhW68m`}8V#f6ux`ghj>GR~aEarbIpO>sT;zkHvO#1P zVsNPJ5wVx@LPcNXISQ0Vk!vV;g!Gv&g8zi*j|SPF9Es$Nh&&udbR}kwV=x@rjo*+D zW!_W&OvGBM;VMRt>Tbh|0$h*zSHi`4F&3`J++Nyg=RVBy-=Mr7`xNp|pkL{(L+?IR z9-aIN7#leojoR@a_E65EL+lE8gWreugf3UPrJ>jFehYaeRC&%n!axZer@T+2tCXg& zbDhkutn%P`1WK?NjWzI`3;J1AFTi!2OA+tp^1K%60spfI6rp}R{5gN1>7>un-Eq zC3g8#w1fUrDZ&x7@tiqS1hEYZdvMiFJNfoO%4?S&G1{f7=Nw{tIledF2G{P}{XyCV z$KZUILC+tS&^~mPqq-ECIsD3s{vPenU&x-;aj){8jC->}`9rx{y+)<{ImRvURryFS zp#12d5$D8pS4)`Zm%)C{{jS(oy+Q}ZESk%r7vQG75`Ou4nJ-b*_9p&y55_a-C-J+F z_Gy%(rU1jS$)BR41T*hPJ>VWhrQGMk;6e1n_)(9q1Wwzn<2)}6B^fV&gGPvZy_7EpQE**-1$nd=V=WKi?g84p-#7|;5f=B@ZXoLz(pS*_ zsv)a6ud%&cM0{007I{^1renL*Gah((FT(T-BSm}h9P#NsZ9~rie&SMh6yGjEUKQtG z-U;N-|EdXB4{#p0aPi{8nzf&OHWxK6cm9YDZ@Q?b=B?wbUd2$QexR$I>4= zH=#2Zv6!PnRg@osFB04#c1LN4^96+SxXhgU4hD)4^i%KmGUh(* z_@u<~$A6)I2C)O^@<-@@A4H#feiRi4Fq$*HP3&dI`mPqth~<8dsG1^yU~kJ29voIwvorf0esUHd8j z-JIMH^EkPdeLU|GchK=9BKxuEes>!JyAkvS3edHO_O`1X)q82@raXtrz0?P`=Y;;j zqIo*M#pL&#_s~eZqZtgo>_umgdgsbMeY|Ina6UVF(02rBotzB(CaEtPpmRvMsj6oX zWIhbt#KsfI?x6kAMmxzH`J%Qw>y7>u{%J3wiYE)KXX!^lMd&`__q;B4c~*}1GblKK z{vr1$b{xT3kAE9{?62yt5PP{-jTE8lVIKeIyoJ7ej&C=W*AXmwx@o@_(LVOm9%MMo z>;5@>`{_4!e-pEhK(USgNbG|}|NGB~p1A6p{1FCN-wPoxs`tTB#>1M)A8A7;UqT7_ z`o&<7=d58tWxecTO~grJ}6AVo~g^ zqHiOdkIozFYgjBmRz_$ON{VS$+s=x9%dfIs7yIz)IOAyw=a)*mG^?2Y_~|D6pitK* z-N!Jh@MEdQeDntKO_Yc}8ajj6!zlQ#+}#?Z9{2lxiqa#fJg445-cc-|it&lvmzKe6mNDoJwj635ee}%i0`%yRfX)pa#*LUDJ2w&6uCX7>m2PwqQ7N93k^nLL! z`$O*C7&%OTHYEWq&eLeq>K%iF^QyM{6BsGPB8F&0a(w^J zO@CJW&WuY~+=U)j+1r?9{Af)16#5?KCl=vuvHKPr-Or02T)5_9-0v{wW5zykk8-2W z_Hz{M;d}^|P#L3h%+nxpZz+)LK`@7WS@!1=_gM;j@H8gG4hM~|BE}QM9@vFh&m@IV zA$q5&MCy0aue{lU*iqaKhF;+L78ssZzmA!G=yVS4z`|inxfy(@$e}z7{W%tBul;mv zqpU}c`yIWQDMr@r$S={B!y%xP-j+xC-%T^9mWQ)S#tC>1qu0Yr<+^E?Nt|j*p&kf!!Cr_Sw0r~oPWtgD%jG+}=Jy@k zflPX;r@K&nm~y~dB=M}dF_#yOlq2pj#{ZZ<@IL1u?HG5}iW> zSx4Cg@z=&D9h=dahkA)C(C-agQ)#~)qCdyU(7%iP75f~%QjF3uhvx5$`eU64lV3Av zC-eLJ!0hx_WV}Y$Fs3-(p`t&5cc+f$#9`#wKByJ`>s7ix&GVHo8us!Wra}zYs~6!c zrd^-$Wr5E|y&+679-;cGgwA)$0;A|8-?rGEfuC`h_k7QwU@sy)WgA6*XOGc8rCrDP z=ku7@jq85j>li*ndSv_(w-v_KoLlj&9lCy>%EqEE=ODOT+2{2Tf6jN`MmiVti$aY5 zQH~c+Ze;&aUD0F!VST$oPrG z*J}La*E{sPqb(JP@KWj*#=d~(cI$jG%lYqDS7G7+;|+9XI%!XaJ#T<;^6evdlJd+; zAr?76zjui7B+}14_BC|wMEVW?*D%1T8*?^`|900K`V_eTsX$TRK>2PA1iD8tT7dqB zz%Ni-NWXaU6rvnDW&SBl(67$form-TINR@`9ANvtNQUU;$}?jx%lO(`uoc0B7*(mC z{JFe7-G2lBT7;~Q=w%e-U_9160tf97W!i-s`;eZS^IgzH^Qb<`Ys&464?^OvIp=-c zt?@AGcTb<@`7O8}VLUH=2jddnzkur?Cj70rVsH1jy!pseD1X#TsLIy;_a}Dh{(D*; z^^PZ7=5s+A?G4HyyDg&=_9Kk54}Asn)6&PdKE$})9OfB+JVZScTZOIy#^28E$2Got z`0hSL|IpzeVpi1K0Iz^G{+a2bDp`M`eFX-Zf_*f(7u8g|9Hk4gahD?~0#cpSPXD zKj(725~`5f1QX#E@L7GnXfuHf9W^mbTq-i5M|4`9{93Q>T(^DI7pisaG{2-t-s|d z`1jL}+UUhdK5D}1S7kq^Pu59D|Iu(2gYY{TZ|oRBcpv>ruO08?AU(%-4QYFHx}gBs zLr1eT0RTkPGr9@`5oBl z(m0AnBn~wkP(CK#17&u9@LkQWaTfguqdU>-b-aUOj+56hj;T!c!}Sw1?qVD`m-avX zB3U=Apd7=Ir)0m^qHk;%1N$)-4RStH?uPLR^pdq>Wp!vIf0x~S1DSLMhg=0HK1983 zyNT+Z@VT9%JU5E-czz4A72NT9`85VZ%^r^vx5+o25QBr%f0Lot@ZDX|)0>CR9qj9V7mhs=&mKg7CiQ8FOSfueTUnM1oM8|jm$OHh%^^+eZe2tI`Is?b}QCI9Adf5_E6D5;vH5TrdHj=X?q zHkvz>ZwY^o#<)qciy;nK=i&Drx82@VJP#3_0opBY#$lBXFVA5^xvXEhsOQx{oyfff z-*gwIaxf5zei!Ln|DUJ5+L?{BFZy4_=w9ko>LJR{yDsl(1n4&mO@2w@PM#R;#wQt< znvQ;4{IiiU=bxc%JF><&8B4Yy?20jdwuf%$m(!K@5 zWf@<`Z#bXA^h+Y!b-yHJ@rCL^)#9k? zeirtfxE=_;A^V_)bLs3V?2j7wwCF)4d=;@`<=c# z#tTvyEZYXxID^UD$Cv(+<44$<%ecTigL2z(*6(}=_I+p*xvy@f-Yok%?A$9c3F?;| z6rT+LROWZ5H~3dvB*jE9`U-*>)HD9Kc%CF(gqw7lHzVd83()B!|2w~r_PtOtk9Z{R z>HH<*pKj_?@k2+6&vc0E8oSXO&e#w4UfPk@>JZxn|F5Z!)ZL7yu~W9~db~5d8%x1J zu6)zj=aPpx6!+i{?YUyslP88{CBc3 zB>3U*U%-S$uY{8@l7c3&OZn2!R?6u3t}hHpZFveGSD0IaFfU$RI9#o=-rB?ch&Ep z#=$A%8URB{S{#ViRN1vt5@TS9c+Z?pAoVBI`>aUmu`->#r8O>^7?E zMLx_qzi|ORhP;)@0@!nr*PYRW(k#YJZCt!&d?KiZ<=ens&!mcf+<^fX)+0X`GtnrG z3);oD$wu)98-0`S;s8xtyng_(EXEfY|5@0~{T?nKqO@Do@OMD|3rn0dlEpZi?{$=J zMOQfXHU>A)-d7a#JjCmOxbNZb>B3Cr`~Vdj&=++7C6s)wm%e`)YqrB)7JdWDRvt~- zL1#|t_gtdVVLSv3DrEvKzkW{a!A0f$3pli0pMUk4^t&CO2Qui_cn2{15bcpz7o9vT zHFBNx`d$Q;vUO<7#jwAdi})Fs0`=}5+IJG49~6JJ~Xr98_EwtARp!q`IEL;x-h# z>b#2oD??vzS=dQAlDh_rTX0_ zvBR4IZJ*Bs`9Sl3IL_0qdX#YUSq|rQ))qu>1-^>_@$+PCMCK;=Pbn8g4h5Z6UqMqg zW|g`Z#r{^N=`6cA<ftVXbS~?tbM1N^YR%6doiGTUqCkP(VUKrSX_@gj&2&q99O^c5Jom}AC;>Y zv2CdQKzS7d)b}?6HxQu+6Me(D6XRp~V&9JYl^13IUh{zRBjMwPY2_^1H=*|iO?ob6 zX!Ed!`CXxhWqRHy2V8&jQa(+AA))%pejx1a?oz; z;9_Ae`a-@6s9Vt-jy#2YMdZjiP-HkmXX>!9i+-Sb3hkMQhB{soeyZR2 z>#sYYh9dhgLwcQyeFRf$FyV3z;IB99@}+XKZqL!bOz#+?a@<8aFz)W>k*(wEXT;8F zbou@r+Sec&^$&|)x$`dNK*?qd`!e1TJG^%!WiuB;=zm5oQ5Z9Bm+?ioD8H4QPl+D9 zT~_rH(y348r%xi1&GnC}E_6P`eRK5tM;%=BnO`e>pBJ(nhM%GO$>;^x*Pv%Q%5mOF z`*f1=nM};Ma-M~I9sBvK4H$h0&B4GsLXQbI_fIu$<~X|tk+%bP&*5F+>$@Rdx>LO# zgX;X}g#RW~R}=EH5e^0!cjmYvhkhU9S}NmWiyJv_UEf6gLp+vR;ri!J`ir!mD37r* zM1O>#&7l9s7|%vpeeCCmZbu|GNhP`wJ>rkmtmeMLhq?cY{O0F+*?X(etjvE6OX-X+ zM(kL6h<>r#joEBWc*i~ox=5%~17Zh9$J9^4!T5u6jq9t_XF<;^IGc??T};K)CiIVa zo<~3B{RR&=$E~5=Onpv!K5NYX2FACd$1%NH)?em48Q0<52xmw4cZA-IkNgqT4D?^~ z{7mfPIe$tyvNLF}4;__xKI5PKAr>en9MeC?+;;B2QMt~t9mO|Pc6vMYBo}v;E$Ey9 z?Nr)>m%JYZMf%d?^EaW84%5*F_%~uM7X4E+ZPwSVpGfCa;kq@yfrAE^ z=i$lV(zE}I_-Agt47D7?Ko0kH1z!^XH`{jd(_)|XxyxR}1nszu-RF_QYqGsQ?qAq| z;po^U)H~>RIZN=`dOhxzMVDIEGgL+Fl6+MqB2OKw? zufewpJz@7S($>>{^`)aG8+U#^_8ER0&iE+zcSawg9<{xRAFQLDqjDb>>5rUDe6WpI zop65x?d3KPgS+{w5F2xlzwKO?c>fTF*Kxn3I~~J2DX-Oam`TS{>@>fN$)rB?hw;v4 zoo=y}xEhN7SoY=51-rkF;8yP2dztqAHp-)_cX4$i?VZ3zktgZ%%4X!HV_-hkj&w=4 zy^G*RoZU3pjDeN7-Jy(NfquGU@~;rs&iIY%94fXkp3nUgcG5Ma>^d0I@ApRw;M>mi z3dS$;w~^jBkLn$`6QNxZvx9EnA)&vvuWdXX{R)kosDu9O{1b4kq`Y?g7+cw|ZvR#= zM9}4p?MGiaJSv4pnD5~#3hkYkdqSmOzZ$W~xwm0oNx2#O2?BP;6(FxZdp9jjXMVm)Smz*BrY2wB*qBq zHn{Ah>y2^*w!r7{?uDKDN2#ho3H>pK!k}!Ryr2G4JiS)uC*Mx`vC}W0dL8Yyc?Q*Y zQeIEfNY6%b*{_CHl)hl>`Gb+{^Vxrue8e+T2o z)FbX9F6J|S7MLu;pYuv=E&jL_Zq?U-%7>6w#<Ci;BA@57Zvf28BE*uhip$LfWC z!yU=fIM2b@g7l*9 z{b=7o`S^Yq1zXVPoOWV19eBaTdbxBa`wDN`dpHUgPQZREZ@D`jr@@uH57J;?68(=(lAq7)k@;wJvIx@?sKY|X*jj^Xtu?35H zHyJM`odOKnJ++zoD#U$8E0Ld)5y0?9+Ci<~7r8~f)g<4H7w62sj>a@@F;)(tnf_~s zi~CvEa6bmu?P-_Wr`3A=HT^c(H%K`*?DPHzK5y&gri;%UZoX9KZEL!8vG77O+Me?X zh(8)G%X@Rv`5$b0dbruv498t_V6Q}bmO_tw|?ylst^^5*L$UsA=Fubk5>Joj9i z-h!pYx@PZXtyK%GzOA*PL2AC-)=JDQZCq}8=AyUlN^3*yGp(1d_^eo-yVBI$)^xGf z+r~oYt}JgUj=rUp3zzCGH8))RthF}jyM}_^-wREb>nxei39T&e@>+MPRmZtOqZ9bO z(QkkI+iIprLz1JGzg%fYlA_ZKyM7(R8t{`O0NsL_I~`1?L(|nfgn$dZPEdw5qXFQyT|{r5ajW zFSRm%z9oOd#nvYF$wF;@H)ToJEBjnSb93$aORX0g>W!?@ZuH+0xSokK+ePmMGOk{Z z1kuT*y-JzEKe!Cwx8%J*GLaH!w!mZ()si=KCC$o1-sUFnWwz~1PS*ylzM-zU z)_bMhLKrE|pl)?>|nT z^)_E=z~%q>+uxpPt8Z>PS6lnXx?p;yp^e|K5pMFbKCW7?g>Z%5`g$RX%n5u*%4_mV zpysIX41#}6)LSX?vbo{nGsK=mN1vr`tyXPJ_&r)OT(2%ZNE@Xs1J^UUX?Kxbr-*6N z^_B2iX>uNo-J34gYLg;PPGnm0v5MA9?J|H`txXrtU&6v~{*eCYloGjQ)*M|-jFV;T zc?RttP#^KXYRRX~h|hXko4gn6gvK6Ann|aGw7x8SsiRRSoW}WY$$t+&XtI_iEb_|i z!y1+o8GpWs17)!F4Etq{@9&Vg7`5bU;+$;qHfyu?tk5McGj#?~*sZTJjbJrQMQ0X})8QxS9Qa zU|no;+>-Bi%%8%hwpx-;@VjVBx<*h=CQ1@4{&S+w z+DK7YU8xhxQa9E3suP=Sj56;>H2b$sld!eE1{%?qDOlTZi)k{CF4xiMp`p`lqPT317Fb|FCz%beD9p;hmymVAl1ZrDd+$~T=iMLBvbc`rPxu@w9kSflqc zC;Wv=#6_c910}d=ybHamEqRmMx-9mIrLBBRUc;`6(|sq?WQ+{G9%r(JUnlykQD>PR zA^%&_=?{1>5I=ezadF&GUr1Amd)+Ph?y+TziPCAwqqU{WTwO|BI*&$c`UCAJZKNr1 zFHxfcPqK{JFGGYw`QNO^oX2*Sb89}2M%lQpB6CLCn)o0=t9$K7vlbv|$=BN8yVTlN ztC{F#4!_~l=F!K+oM+9K47XTt8nER11Lb(Ujb=+(Q!XsCjadJCv4qWWQgfs4F%40|Jk^}# zmkZA{2)~|dqS$z@u)g8E_eyh{RZ9T>fq75f>oI$q8(P~gi$zEQDE*2Ub+XfihMW;A zok7kd+C4yinw|VM^9!$1X3~W-xs~U_S?ba0c9CQizmsotx&((xOCD{U?rn>r8+hZt z>p1Bl1w)f*FSRnWNfDVjmyyqWmFD1?jyKzxG0IC{>zXfJ)*VA>kvj6967<(>zSahM zF+A_aQpUGr`Or;rT@wIXu)PBy}dXW(g`ahO(@iC9i5(#B2t zzpTE*xV2uP1Z%UTTXl{$4Gk7?Tk<6909rV;n&u(y`Idb5kxxcXbZNHqj|sd?JtCTs zk%bEvysfmDcut-rk7hT}y&(Ecb#1jA$@5L7YaO=ayNAA1I8xU?F;CpDV|3`_^nwc; z^k|L{s@YP4O(1sRfg59EMFFs+YkV7* zNtAzopP+-5W=IWdAWgO8xyaz59-CnkhE*A~q#JQatty#iCjb0LBaap_)>7#vvhVel zviGGABVhNAgRUL&EoHTM3hT?Xz>@1T=S89Ui{b4=XA?BI&v-($q#NU7a0Jf;v!==1 zHSDQGHaR)s_hh|GTllc=qTzm@P6V|dqH}=tKDVyBK2l6h-F7e!C^zz*CFG z-5cVj{bR{{&zvxfgM3RKtN)|NRK;}^f>GO8^6BmBVopo8GAVJq^LO{7k;bs5@91r% zEi;(NhhXCO!uyYh7Q*1>&P3fh9?R@L)L7DuKHor`=<_#rbQ= zr{F>9CI4)s8}-iq!yi_!{l6_Q=hNOT_;CNSJT=_XE$tiVrH;($<$lBc2J)Ec2EM5^ zM!MP0Dec`-?*sZ-@{a~S4@md@p7ep=lO8qG4LW)L=?|lmU&}}O8|7ljzTgvL_y+H$3anpiAkMi_c!X^tp?V=_zt3x%On8k^Fuv8SlG|bo0G1>77f> z@~nhWuSYA-O*_?6j~nR*{Bv5i1YOPiK_h=a`{|CiTd=3;(4jp|@$yd_HJDXQgDu-0gQ(P*bp!;6Pp83hj=(yCcu;^WfN9dK$tJ@I_`S~jdS%kA-=Aa=%q z;!JaE`JHimuju)qw-?a%O9|*f_?rA?)^8MFWeP4;s~@&9Bjai#!;&#in!Oj!)q4-u zH=Mijj4V#c<^n!xW_@4K^T+XjH0k~Mq<2G)*i5>(pOW!(phWvgx)^lbbNR%c`hq?6 zhxTZ$YFdf`H~Z75<-eCMehtnWv5avv^C$ltNGfmgf%*rQpG_+NX}zDoC!{}--`l>4 zk4eYJd0r)-73RBPKBZ_-%YO#HVCG+RxhCCASwOJ1kZZoUD} zWjz+@fruvOAuq&A!u)NRk-EVmpJm(BO9zSQ7uxz&3YrsuBvj~@`!mtA}`1=xJ zPRsis-zNj>tb{F`s+VXyz@6Co?mpCWbmeNmnz6Oujllv+A=v&!kSX=}*5IWSy?w=oUSAP6b*6CNyUT`l8~5{7rSR}HTt)W^-sg?_2!)M<7ZtSr zYF&J<-u?6k!(G2Ek1Lcjb#%w;YvUXLWHpSd1PvE2*ETWS|J;Rhml(j~&|r93x$~`; zF2qZrcUf9;oqBZNj0V%kkFQmEmX+hmU!&>i@T~G>X~}gm5@6y?+_IMCt-EwVx*$j| zgD2NvU3Fkw&4Snj_k|^B)OJY=@-jdlUItIDPa<5LE59?3-lmss?Q<6{U6GIhms_=! zyXs}-eB9#L#zjT;go_v@%hHnDHTu!e)_AFYc|WkM+_E|g^*7z`p5i{R`}8+H7-6QH zv1;o&M{rrW`{SjBbCS?%TvkqSs9nxb9J+FA9=;b_-wQb=*70AKmW)UJr8eOOKBm8# z>>s)xIm*-r`ycIFjda5fs?pvp{)Yi~KLB3w0J!S`@RA3>oezNLKLGA86}&BY8g^xJ z|6^J{M~b1IVTf_lOoVBdns%-cABg8O%O$59WQmtI^O^PkzWfHdpybsa!>okp6?x2h z%z8~c&2~*Z&34RkW<6%TW;;{Qbh1_lCXAn9?dOB}qT)Bj%>Ur@#@~}3`90~4|N6V@ zA28F64#%{2%Xk}b*Z-7yEbs^LLHp|8Jr7FO{O)u+5B9avBbm=?lG2moO0ye{^8DUI zo<;55X^y|`H|aV&xtvGie~yFE-;oE*hiEd~phI$fzHQ6?i#2ww5{SX#x7 z<>|?EaP0iu=_S7>-Sd0WJCo9r@elu=^x0hoenz~_?4LodG*_;kZpPcpbYq^SjVR0e zm)w5mqei+hUg`tnRC2jREni}s2R>MEe@wg$zexXK1l5>h)gOwtiN8^8{KvP9gviHbp6YQ78_^VS4`Y(S!+O?$mTuf{ zLlDo|(jLDC*W(3gtRi5{Yw^d$+NlsV&ZpdfoA=%DNG|Q^wd9uwN%UbI9<;#aMn#^# zs6EA+e9_|^;_=I!OcEan8|}<$a#8Njl9AKn913h{5vN|h-AFH5md*&A(a!=cJ#i0S z#0WH(8*qsuNvr0wWXN;q(}L?S=De1M*ZzteizPYw3HYPW8E@N2EO(2a%n83 zr`9vA(gN3^CFt8rUn>rm`)K9XVeS_vt^5|e1Y;QoxvzKTi3DEK5BEO)$EWiFc!do< z@W;y~@LC`*H(KB(Uj3}NA`WNFg;@3O(c1}F@G|MeGv|SLew|)Cl306Y%T0XsdIAQY z_1>qRO12S<=hy3*GUi)n9In?>Ve~5)uSX=4jE61dD*36zl3&IlXz-sBho=&%)4P;y z*yC`czlNL`xKI6qlrJNv68+NZH^#r$0@rG1UU|azt0#|iw&a(3%zout;8Ksvz-J_0 zkH|WmFG^X@-IFFhI)67BbW^qb!ml#!I=|XTs#)@$Je~1!LOV&>NEH-J6_Jh&m7lC9B+||5?!~Y%n?3OX5yWqK}QU{rnLNS;%z5JI^J@B zsNi8^S0;?{Z`R7Yc=EbvK*7k&#rV)}AiAs`GyRZW54+rJ)Z>WPvx4;`>hK$MoQ?O} znr=(=8{;zSGW#KP*73Yeo{L%fE&bq#rF3z;&c^eL9OQ&E=(iZppOB9-?;Y{{`n>QP z`L%=BS^f;AyVOJKqzXTeK5pWp^K*MHllj;UxvA&Z@JStJA3T=)QV-8n(w+(nTxxfi z^t!j6v@YT_^H`!?si)E4|JxS0)YE9-pQY8aoIg`UwhE2d4|lwr^iSu{1>&n{<%B<0 z#<@edO3Ie9O`bcVJ?e)9AK?$4Eva#b70Bl=G#A zKPPt94C#{<&zC}ouCK2v+&^HRXF32ho1Muwe z2-C+oCg~-5f34#&!#3690$2D)f4a1HSx*xAB%@8+hIEW-aNYhAy!AAjoXe{{X+}9~ z{mra@@!0bERqfrp-&&D#y0xb`UcXKk2V1r=rPJtNwNa0ZYmY*`Y}6B97bHAS=x)H1 z={I#$?|(A9_W|&l2f&@hdOdZdZ=9dl?!v=5+^bWq0VvO{W>d2*Nhv2aB2a>1+39y68g zoxpz2?VwzW z*d@p{O}#7DDR*@yOce!&Md0g>wiFWc7%9s1JbDMQ8 z95V6M+sQKOxvjzVcC6#dbN#d@950t>r;Bt6SlY2^<7P|gV>|Wn{3#k#HTa`f%P;d< z##wGWHb={5OXIwD#PL`@Z+Y&W_AC?#{`cbPSM>B?93RmqoS7WnQsUXKm2;B61j_kl zjMG3IADOQSJ2|jTudgy*PR7g7_oRt4j>q!(9L&<;CoSX|iT5XAKlhWC?OHkMk8VFZ4SrGM?TTDmZa-`Clie)eO1Y+$ceDIz z=F=@C-FlT=gc$Uh(CYKBAL|H}NP?Ze$^6WRZcXd8@;o^02_G=~Bjan@(|Vme+nM)| zNxINQ@XNwh9{k25KP{9YkFqXzydL3$M7nB>%anyK(oc?b${mi&+e*Iy9L_xt zY+q68(Vm)b;;r+Ui{<7xru`cHUVe8_X2{bSFPE5?a~$8r`?bfW z{hRf2dGT_I_IO4t&tW&mZ@HYUG3YqA&%`s)-gQaS>%;!r4#v~%%&l8_I#*R_ zXJk7JyQq%1%b!T5RxR(5lX??+G(YKmagR=q7M5`{r_;bE9EXcdsoO&1q(N3vI|D{L z)mr{UJLO65neqDcb^?ly-|alJ{X{#rH}M-34eqABEcBG|NVSP9bQ6bu@}tL~OYd&I zytyBU=c8+nPlHR`GL?TMYMGMC;+mf1*mY`@*|-b}hw8s&;uzjzruhgf^= zYH%0FL*~E4pd3gcK^w_0!^AD7trwbpBKgx8hZ&UATZ;L9^pF=~15r!4C<$_c(QE288LdD0Dhay1&s_=|lk{4L`S_Cxj$+Av_yr9^{E z|3to$TS)e1w&yeEgG)a+*+`}WuC|!8D^W|Z8{!iJ+4i9JxfM@@wcQN z^J&)dEA($gdVuF-F7JoW;DdAnF7y`tw`kB07PyRq-{^OY7X=ADtotCdiOXmluJiZo zMjewu3*1h6nR2%>4%g=;&nwg(R~)YE0hzPc`JdAQ7hY8emoxigTTFbUT?KwaevMk- zlArf+XwN_#E_|=o)J3{qjl*qP-Baw7Jia(w$44RT4)c5BaEY%dat@&OI4y9Y8;`Kp zp1e5RY&T2JBt)hKF4)K%9V9%qInghHsRll(1upq{4zczO#^GlD3YItqopHF#Cq?er z(4LxQ@GLn;ReLJqaI>B)EU^!z7PyIL9_uRB;4bom$SyMla_*z{ENxoe54XX0qZYW7 zt1#LR#NnbNm}2lzXB@8c7YU_3?H0I7#-DK)*54e5>vT|z z@vo1=bvpDKd{=FO3msy{JYIUp#9#8WV*Zt9&H@+wdks8i;_yU&M@hS29B$Lf$BcUN z3^{Rx@*`EFf|iV^v5!ZWO9{O;@Bp~)0q~Lsz|{=BU#6YFql2~Qt_IiTzGfv*fZic5 zs%!Q1S%!5ac$P8#GX_0G-wD6lID9fcOOoFO3gVy5GWF}McyfM-nno%lMf3H9 zVAa~Y9#<;id(@K^V{_Om7qPc@+AEyDZngO`kVdOW{i%XwnpHE79i^3x~{ zhl$igKbRd8#=Hy1;fZ#;sGf%7^$7klZ*3{#oUirq{JLD_y$sq@8HXqO)y#1!j>8l6 zXR=?T_o+Wm=$&HXsn;JhROLh*o~Y+8^N-)Bo^;}LHJ)Fur-HPX=WHCFsArt?ydAG6 zG5&q5KQo?Rr*qVphj-%nJg(;B&kH3W5)Q{# z{-`Hk^~K>L*Y(;8NQcZgzCs6G|4|#0DlEhPDh3_XE#=KzJbNAs|7OyklbAINJp@yJ z|D`=6TDn3!$wTC?Ov`(k@PQ$>PgBO**s9Sz1ec^{=|MofeOA;h8=ZQ`%b~X zN7T%W$mI>Zm+16%tXq%8=nbdb%ivcsh}8z(>k`UG*E$5S@wlAlpVq<639}mz3@iC) zTgQ7Hc%KvR1Ix?_@!r7oJpcY>Ubez}k(~1ds9cZXaI6rOyfVe(J|_3Vj5w}sLrn(K z=1=cH@j7_iRmb7qfb0Gt1$pZ*;PD+p=6WH(ZSZVBsVBh8WY+OM#W7w| zw2t?rhIu(F?;r5A9>H8X<|Ky5dqoN+JC4dd5ABYet+>4oQGfIh2G(H~DO(X-hghs^ zD;yh8;NfKx9P+L(^03HzSOOiqym}pa1Jk^JhOFRq?~r~Y<5VH&Be{LyN8wqAyXwiU zxayGmL3p42dK7zjIT3ku#&eqYBJ%zSrHq$Q@RPr)x@`z<;QeALyYU&`J0a)%w`=#Q z9YAS1s+FSSh@~SIc$Jqkr}LiUkdt;V8d0l!zAURlq33*CNX@_q!DgZEYO z-YiGQRdf-~;5JmSKIL>4&dPm2E?#Q74i#Z%J}P-NhjQ~UDtW($$8{9F zyw5^)C@4=UUc0>5-n!rQ&H`sx0+#W{&fI zAU`+FP&b7Aj$?4GhZ-Ksk$x{Z-#v_(HMrB@IV$5Fb`))a!v2QIk6CMJLXl3RYk9w5 znG;vji3cx19bSWUFE2+Y-Sa(cxo<5zVP4AGL;Aty6n^XXO!GeH^~f%t&qnzg_Ivsu z+SVek!{fw6I?E|L(Yyw8-q=xu*Wq?7l#3R^<({6-br_Ct6GQo0evkSq-V3sp_k8-d z3ElHOZUqITyW7iqq2%4EfcBRA8iO^oe3?H8uB_3&d-d=tzX(_0n7=Zr zY@z>x8M$P+JsqVTuHDF9!|!HudD%Me<#A+?f92jAm6w>TMq7Y*M^}?iyjz9ey28FZ zL{_tZ9$wzcPlE&Gi!Oe$t5og9-E{OsgZpsDj%vr`F?6m*5F3wS+|K*B%8tr?R|{^= zyLOIOw7W>|UmFf~^OC03Sc+5?N_xQU-3H%k-iORZz)a3N*m$4zTHc>rwFge#)8@XF zEpdm5NJg&QJ2vjG%9nXM?i$;QYPnZPaiWs#x{J6!O~%Q^%js65G!!k8`#bVI4n^(* zYIjVNeye$(8RZhy?p0@q?XBj0GDU^RwBt@pIf`_KxO`RYKi~Zd=i6G|@3xzl#Pc2% zzh^64YY_8rQI@uj-!;Tbi+K+T&g{V7@`^%{JGa+jFc9Wt_UXKb?1dt<^M0TJ$BA_7 zbIli`pSoda>@YfcFN)*z5%lp2>=@}?N`6JzE?l=`#veG0>#I-+%85MUJLKm)ScOhc zv>45+ct6^7G3r-QZnYl6>`H!jJ-;25cHS@RK8$jkpHdCyX@`H0+(VY{iSaVHl?Zsk$I!Qi_!aSz zL@M5lR41Hk_{nz;FSlETpex5I^m8M^OPk48N|=MT2Dd%zU+*g3BNO3eNW5PrW;=qx zmDC#{%1z$Ou0%B4y&V(e2iK8YsCM2P<;a7_&ijQQ;-%gzNbl}r zs9uTjY2P9Gt4Ozv6{DQ}0p(G^&ig%&?7`v+jD&NK!p|+!k#Mf~p|dLWIKwJku>jX8 zR&YK|@=`D16Bqk$=l!@vxk87Tpz~pjtl&6tKF_Vdl%JbL=h7%2*zUk;-t+i!5f;)A z47j+Td^Pf_$nRNp-m99shkhCcd_{*an#OUZdj7J z9xWaz5T{i&2Uw~D1)pQ>^mtbj|UUgUWw zk+8Z|#@`Vt+JiRUw-pE-LR%^tT`k8@!h73X)JJEfzFUWdp0R+9_o1bs+VB5=*n9u@ zIIpu#^ciU+jcwT;+e)ION;0ygWRf_}$Z=8;+;r5qt$IIhJ84`H)V-dur9>uUX>7@< z()Du3L9pVkfpKe!3R)PaURDbR#;pMXqKu1R1uMGatl1TdVaLUQC^{h>EV`(Mc7 z<9_w%=NM0rSCwMrNm);e7c@0`OiN|xkj3ay=ONi@VMTUPwk*yJSKAE4SXCMKSONU@f5Wo zp7~4PNkzOuBJv*9e_CF|`WpFqf$%+EyhkJU^~^IA3sNzMdFnD=c~QbRmZ_uV zL>(BK)6(-i71cbSg*}K5_}`K)i3G5Wsv@hxzN%PtYCkXD;pJ_jVkJoP8(1 zKV!Otac!^;-&qZG(LlYJm`150`=AV zG`#wc3>-f>pg&PUH}S3s!D&79zv`8q_@2;kx*zttH0pJ*c)2?)#Pbt2oIfrAc+Q27 zxVk&9rJ#(9_xckrZbYD6oJSv`R{^i}zS}myYrW&5*^vWzh1o#fr#=$rE zmJe_%eY>K~!>3*!d~_&%ls~s)KEg19{U&^8$;4XX!k;*xvI`gcA`8KL!i1(*+lA za-DtZB>T9FN3X-1n(+b`eFzx+-^F?IOT8@B1s=j*)BH`F~4( z6S7oWmwAP-_-J# zq+FD8UdkCMr=^^faze^6DF>zOld@OJZYd*DhNP^_>UI~UEJ`^oWlqX5DU(w6N*R-~ zRZ5a_={F=FrJRv6FXe=kV^R)EnUJzu%BYlKDVKj;%PmV;l5$4MNhz~Z4oaDjGA?CI z%7~OmlX6VTq?El<#-wbO zlBBHss>qeHDCM-2IVs1aOiI}+WlYLeDM`wuU(s?)QqD-3mvTbNjFf#+c1zhRow%1(w|7Zj_BHo)>x3s!U=NO*bfd=sV45 z=h4SR5A!~vvhdB{Wc%)qFPF9s}e6&0GMV;w*1pVK{vmo??U-ie+L(eS) zjr?VyFI)1(O{Rf>kstoNj=wG6OAq-@oRdNySEZYmcK2W-a5b2A#(eFp%%`~c{Ziuh zlJFI*_Nuy%ZZK%tTUw#LDn8wy(~rBqp#2e1r5m45S=-&JO4n|0 zH$?+Z-t-E+E#FHI`A**CgnrDDFY(ab7Y&&BO|Kx|N6+)5_-9Gz7gg!{ab)!5VXxk# z){!{ZqWY7c&Z}=+=%T80{lQIy{z>;Hhs|kl77cR~;f*d(sI5esWhad-z zxTH>;NWI>#c022<;D{DnT@A;_4=wl*B7Y1&Gw{{u$VrWyzy>1A;H$}jr&olhYtoMm z`{kJY6R;x}ADpkrk541jg!dnPttR}~$=Z5gx3MNYHlu68hX!7$2|x1MXiYeLHT<%J z@#LRE7*D!z6+8q9d-S+0ID%9Y4*HWT(AR{g2Zml59R!D)2mL4U#&zV4661+C@94S+ zSD%-WscwR}@ZpzVhBi8zy!vZ+wY{EKy`yP2pFruRAK)fG5O)^h)DdrAUB6f|;NXw& z;>pv`U?(=FhfnYiGhY3mv@+@CqXYPz%k7sQAn2X((L)oT7%(!+;SX$$_!z^D&y{4$(L;g>vj9Dq{};XB-!Vf=yLb)5dBhIbha z+24l$=*aL%{F3ddvs+z1sPPg;+xe&9HS*HX+xchcYr<>fr5^uG1Md4%9k>!?!;K(! zoJO9gP%3wN^ZR7FCLH5JO*qDd+VI08HQ^X9YQhz87{9Hmq14qM0CW}ZT&$@Jmws|c zp+?+z8aVh68s~kh35?S$+leQ}XRD6i1U-0+$G*C*y7_={*oVh>>Z`+FzB>HmtHTfe zx_YI*yYAp0qK7?s%5}7xjdtBd-qN zJCyuIKQK7s^6-fI#@~_GU-`t*ArHO40aPm=n;yTukFiBg{v1n<9s0!Z$k9*g4FYGp zMojSHUx9kY-%ntK^dOx1AIpnF(DP^t%HVSL1&Z=}&Y~*a^|G#4-`ARD$}TmxbnU{( z!b?17-5f6Rx*sPXRO!mo^{jjUzfF;mE$`&eNb2PQUf-#eqqE*0RPylqh$UCo-zb!r0I@QQaio7vPp058(^i*?)@MU!tc! z?xEin`&H?&U)A51p1!#EiM)&@PuKq?divvD5V`Y~TwPDP{ZsCP)wFMVx##|VS>%N0 z*lyQeU9Vv;58Jz}-t8HOdX=0oB`tZnzKUKd4DP-|PUK8ma&&!dy|g%Yd@PH+WlNr} zucDW7yQ^39cXWQlRq6Um*Voodi*xlF6L~pHp02N?m+4-vUPY0!Xvxv_HS}`Cxq5|v zSKAp?rE90IucDU~$3BshvE=Cb+Irb>oECXSOP;Q;qL&rNipUB5Cx71S`r3Ngaf~ZD zcs|CGr|Z>v>E-h-<9TO1pAb2DOOCEr>m_oeLmF{zUMz~diX~6iSJO**-q9;Euk)c> zm2N)h`rFXU%8QK1o3P~R`f7S9&pUd}h@6roN7vtmURGX2eoxyOQl-1je2;AF?83gz zA^f;x_9MH6UjGi2ch;Fcde40U7DT*Ya=t%`i23TcP11E4w^7Fvb-b2hF!m$lei6%m zO(%6M|9y2V|9y2V|9y2Vy!m#(xxc_dUDeHcCHni?4`Efheo)Iro<}~`Ir4GXW&98q z`jXl|twqnxyW`7*&}VAOhgU55`BmjJyvVAaMSq~}C@VhK4rhDK zZ%Cu@SF7;ZcKG?Q+>-v96#8COx^_79+7PGTjIAZ#%Ig`SpH^ku*pc2|qFd{CtMYZ`kC3r{P~`Qh()F|1CgDwrkqB(9f&VosV=q0YZH_6t-tY`u2;`L*!J{| z!$wZ8;>UZ#RO$NfDcyWyv*g7g(Z}dz_{W4lXX&Bq)pk53`*w!EB>Xd~bp7URvqm~o z5zlEMo>FrYI~>?5tipKj9-(&SGnqM z$H(Ux52l4ar%G2Zw-MEZ(~pWmuk*boJsaZWeOT#%@3AXBza45@xpSm*#NAtVe&38J zKjDoCia&-4Q2EEnxA+S1J_UF4G^6U(dFD2$leDdSY{3GA8P-_Rq5)X>(zQVKljKuF(~|5i(l8P z`Ss62?!N4_@E0w9U9ZK@%X*i8N%-l%u^q1dx?b%EXWvML*v}c+6Bd75 z`1>q=U9aX(9Ufr`&bXWv{z;2p*Q@!z-)g@o{EHU9u2;uVt)mXfUB5?<(EreWh^W%_ zgRWQ0;c*gDlsKZ}(df2{q|txDG~x?atXpL>1$N#P%}_;tM&zuw<5>z};v&shArUd@l6lYQ-% zg@4)N*Y#?C&F=2kMAUsA?sMdR&#Vu0y_#QsI(Gb*6n=e9FG1$M=%cJ9F8jVHFZ4N8 zW}J1wlbYPQuaf)xDt>)mit~pSzq+f%`opyU-CAB1f8(&0k7h749p2cz2OMN0IW69C=YCYsJ0*8N6_zM=lu2<`!)(1Qy>4}d_|0#={WlN5( zuO!Fwc!I3oqW@F-C9X=>FS=fBPy6%l@{RL@!k@MHb-kKjv%7gQE&N4`U)QVo+xPn0 zUlM*QvmLJfx?at%+1>V|iZ4uYi(l8P`P-jY6P1(KgTkM+_;tOSU$eX8(6sOuEq-0E z=5OEYZ+}Vn>4s&$s#o)CcDMbgqJ#YwzphvFw=4I%{u>njti`YE)%@?W_@{-xXz}ZM zHUIPP^7rc{;is=y_N#g||6Yr~ThU?vLzV8h_`GVy9asOgu2+q#W5PdZ@$a?x~uK$QQ?~`ALl|8 zUG@G-Md2gP_@wK2F2<6pc26*0nQ?4J+MiY>?yqJ4WT)Oz4VroFd&K{GKhzU)M8E{+s(>W4FkW^lLeUOAag;W-DEyrc7bZ|4Yp;X!ZwxN?MZ&Z#JTNmW*l2V(*^{r6Y3 zA1Sv2{j^1I`n&x*m7|x$#l$_dr0u9EIc~rDz!07X+g1JhOhoAI@j%lftt7rlq3czp zPwvyZYsej2SuW^ZxidnSx8!~(HG1^50R&mgcE+!gPp+$nORwW&^lp{+hma}}SFr~_ z0$?%e`orGuk12Y$pY@6y?I*~QJZ33q(RtqXaVs7<;mfMh9S@(wZ)Nd_yZ>Aix@lEb z=aGGW>A8sC&Sl|Ws%i&5L__AjF8o!UAJy_e=h;t82wk@-T|Yk;Q9TP1)#dE>W_@z; z9Ru-mYe4T`+vAPMar)nk@K2le#J}eEVY~n6{!r~F`ddBTnfTLRYkON&>H0y}tH<$= z!42r*?*5nX_gVb99_P;isLSNT$CP_M?&Jr=spl{a9(5iIo#*F=OrC2o&iJUrc*Z*w z9nbG5cn*X&0-U_V_{I{P^?2x(wtHFWjrfT_cXXJ)syndS${xMa$<7xb3d%K?h*r_<;+L?-f{M5(eYCsKcm3-;@C#`qEYPa`q zG<;s*hCZ{b;bjG{&WB~8H|vs+k`r_C)5I^L;I5tB(%#rVuza__vyr%*=XE}2-JfTL zFQZDgzsL1&#{tg}3-qv&-?~kfy>x$ z`b$FfAAHeNm3G`Zk3JWVAa*H^9fvMp;$Y%7WA(qB$jhqI^#=s-FH!*$m-x5X&k@HD zOTt%DrTcrOnLii*PU0eY^H}`jED!}-MGeMJX5B}MzB=ylpg-@EiVpUxGD~;wQ}PIT zyZiZQdH`c7{v3QQ()D~)!SFNuyHqZtbu@1LQEXzlVH#6%+`OWS&exp4?R=OPxRKMR z^b1o_!CgPRsMVsRl9!;h;yrBv5aF!HdquCPDm`&$b9X;)SxI%a-dYcQM^ED6 z*stV8$i#U<>SjKgk#_T{tnRv<A@nrwy{OiY^>Usg z*!#*Lj_P1{!mKlt9${Ki@@m-2&#sK{ZDr@kbDc+@>^$lOQGwg`#VvZ%@A?#c?e=nt z&h^jO*Zux6`~A~zQ=UC;lahz{3%^47Kv2VNfX?OU`8z23K|IQIo!dW6ea zU!`8=)1L15kQo^`*+1-_<9zw#(2>z64-fb24K8PWaCqQlK0X&P<48bd0lr`Lzu5kW zlfNa=XIhmRy1Pvi>Un1bN5lAjL5~yeG*_LsON!r}Z~9a_VIoyl_s3Sz!|12i>zMxp zZpQ8S3Up&?o`b$J9!6PJkDrdDjtt@v=Q=YVn{|g?SGnWY$UypKSnSM4i>kda&8RZz zj0@TysgV) zL{|GDZ|Sov?aT<=j&n)iCLgrF?E7wvhyTdqjK`j%+|Atk#Dv0!DWb}(wN4m4@wzhT zJNI@)p6q&_Uxe*htFRo~uY*dC8_$s3&*dyVSP5KBwq4W0Z|s_px}nS8Wqa`Zuhq`7 zsvCRVc}C9@$WzHfWrAmXio!$)bjF>y=o?dI!r_D2`~aOZj`gtixZ;ia{=wvVROuHX z(_dypURISky88~rCifFqc^w(7@^G}XpOeRA5HnP*PfALj>*q!B%aXv2zs$HmqL=Y& zSn7t(_%&|n-~CPP@8m!0`O5T{oV3@cN_YM@d2W|kk!#wIs{0x@FI8Od$vBe!R8;gi z1V&$Y<+{4eydIa76tr``JgQvkjuR2lpHzuF@b%Y$v7@-5)9zL`j#c@bP<*bRwIAI5 zcH@s}X=hOAjbDxbvkJbppC;6N>iQ+hDtg9WQgJ~3D|uOOf5jcC{&9Q+&OD+!Du$)k zA~D>)#Xqh_qdL=H&HZ|-71x-^Z?&E~^^11>J1O)TRU*HopJA7WLlg9@W7JJEzjZpY zy>nzcHWJhgvkqXBqnF(87A(C&YJVV1^9o*L-m>VIRXvRFf^h#t+(obLBT`CaSd z+N1X&u>Mi)xp81^!CAF`qo1F3c`T>uc+Zx=O+Oz~ z_3C|>NtNf=0GGJrh0hr`MP5nZrl0A0_5Pzub5B3%R{PGl|5f~mkK6B69^!@|buv9_ zvd|fKLUo)kacA5y_S^ZHQ1abzVNlxB`G$Ez{A}7$S%>+~*jE(#Nmcst!0jiasaNn2 zxzUkDIQQjdUue#)5{~);&5B<9>_APAwmo$I9#Le)T()csBUeA*e zRbn19aeG1Yn|yQl#12#7yI|_-RqrQ{Q5Uur%y*%u9wf>Nd^c890sP+}jMqQ=4E~A{ ze}|dr@yR!J-4*zDz?t4$7X-e|krSv-NANu&fqUD%*^U*Q!0mSD)OP@4v`ysmH_Aux z!KF(ZjWW5AX*(aAW5M_InNZ8Ne?K+_rP^ zT($fI@b8odZsfPX2WM))@4}CF1#Zi4cIerUt+Xh4dF|6~yS%Q9z}9_`Ggkx7@jK(d zIZhnc2(evzmHasT=)wc=Vp9Act-&{iAna3o?Egl{(-B~q9D#APSC-$YPkl=3Y4W&_ z1Bh!%;C3GG6S%iuU53pwXN|pXf9^*+X$P+JgY$J9Z5*rtPXk^Sxb5e#g7bIPP5;rk zRDvI_A#S5N-Tra((**SqJ|V8IeF~nS6s=QUZG{i?SM1}|3yP@Fg%w>KbUdK>Y4$+= zgvdW^jWd}a<94ww#J^{t%c!dJcmb~mfD!rg>U$(S-s%39lRUZTz+L~Gc>w;e0UrfC z>cCw;x808uzXG?%uZ17ce%av}ztWJCRPYGKQ^ez5qWwbGj$GjwWkm053LYos=d7$l z8t%Ub{E{a(&uIB3f69`V*DUzFz{f3kO!Dx8!0mk7FK{>Rf%@y<$^Kj2F2|eoGUHLw z1Lr)5OS=hypGH4ocoI7gci^{(f+y%WCODSk&kv>~S^!<;|K|3XZXHT*erTEye8N{= z7#Dxo*u~=^>w`TQz>5kVp|hx;LGEN# zJr4emqj!wD(M~U=fuEi*a`d>ttzSdilM2p!JTB-K7&js7lZe7c=rpi5VN>PbupCYA z_0BwSd`&BR<1_+0w6)ua=g25>imx`s@3->+co%<&mu~IsOtWBnsN6G@QXfu8|VpoQt6u$ zeM#hTzO($9|BK}(;NSI5z8iVHfG0r1SJ|f@%MH|DgI^cb_jEWudc2qr`X!-1;jB}1 zf4(l?=izaECulEw>S+K&B5y0?ao(FNspxo}8i1boo+NzCS48;R@i*(UEZ+y>`W@6u zo;u4vC35WXuute%uM3D%%u_#yfqPulV`S?!C*LdT0^feP~vdV zf`iq9p874=oc7c&V{dzpr=A8rLUU z@)scgf~Vew_@q7ceZa>(^*P`}p87TDbNw|}-oA~H=c&)4KIW;9qy4z2-U0p=PkkIQ zxqi}>w-fk+r#=gP#ys^~kiXwkPeZ>JPkkrsUmA7gwSm6isrNUdUwP`+(cXSfo%M@& z>MhW3X~dOx7xHF3^(o-TJ@pG{zt2UYGaiK3B^UJS@K7AHEF8Xv>@Q~opr_TL;!c$M9e$Z3j2l|+&p2pr& z&{N+Jn-&K=^5OG~p8717;#p6f$GHQZ`V=PMsHZ*(`FHzWd9%o|lBdq&-~~_pCfXnK z)GtEc{hs;-?)RSh9Q3(!#Fak|`SYIo9n_~h^>OfLJoQtMzt2;@34L2V^=9C29d_k& zT#KIiIP^W|sUHOWpr<|#d3!ze3(zNQ)o-R;`MkF`;Hlq5ecV$Yhd=u~^@E82DVYy(dxGVn@>KWC3 z^|~zWpUO&oonEJM*Dk>( zzS=x+t|uUauLA<-^(gNrnXB?KSDz`+&Uxz1kU6UA?tIk;U+{I%1LrkRTsC^+!rukh z9>8{5bWy%-#g!NM)6j><#Q@aW2l|`e%ldG88r}yV@pa9CyW`(p;AS1TrjLpI2@BpT zdQUs;)+7H^%k>w~?w#+^?V5d%W#kxNmmRnsrz0X~T*3AJOAGi9dg>S8$5v1MBI=bs z?PtDU*n|7Q7SYeXKbTZ>Y`@kn0{WY1bJPQebd2DDV<|f;@ZGro!Os-eF?44UWZ=CV@C3O`J=9XxnGq$^_wuJPxx$q_bWR0elO4616Rbu zzkqlxA8_TL0Zmr;YFLH=7()H&RJVHHy9Yjng9Xfr#RuDh*I&jTDE%9$w@HqJOZxVXn4da01 zL5tESPA{nYp$2SY+^_Zrrp1oY7yWt_#83Mycv9$FEV!9EZYKP4l##IMvIURxHX5#R z3*IYs9fNUU+v!?}#>??AErg&)X&cRPnb}5nLo}EwHqqq} z?LB*GBVkUSE*)>83yjZ0{}5fs^=zj-O*EId{UF_hen})P{B|b1WfLXW)A*6t!-V2 zsFz_s+E;$STzw&OV-wr6CzW}W&Ooos`HeIVKg0vu=vpK4C|pOQO>`}Ld>vg}NAtfiL_pHDjZs=W`v*KbOqmpGL^9v=B_bmCQaulMU1yxbiSvY=pg6H?iOH*|Qzg z9iq9&`8tZhUqzHlfQPpPX}poLbiA4Uzep+Mea5GaWi|Tk!}|7 zWB0j6*bBej3ex4+mWSwiBV9~hZKS=8)Y9|fW<1|RrN|A)ZJZ>k|8i_2%?4>U z9(aga8fi9hb|az7E+_Mk&{QKWWN$Q5xruUzi;vJ_W1i`@5O2Msn+M}Mx9E;mx|o5>y27o>34jtHe2kiXfjc>V|Wo^7Lpuq%FL z8-*H?uU!vP4E{^S9^o}uwvyOLGY!xq(MhfFOX||Yv=ecSU)@T#>Zww!bkJy!ZYI7K zpq2*2_tFMxZoqhOWfKJ(kmr|L*zT5|)MmN^{zNRycJI7e>ZFVH$fK(}sJoGxkGJEu zlOV>iN{}uz(8Lp%Ea!q$P8Qd(f5*$Xi9Utp-UBzbv)@mZDj}Lc|49|v=|Vl-Ey1tn zf;5xdvXL_NbdI_rG!DPS&u^tuLD+YD8(oASv+X-*zK&*NT@BP9WV(B3iunpn?6-wX zU_I>*qW=Xp)4m||Kixu;>|czJy^S;xFFZ))Ao^wdgVYhEj@w%{(}4!s`>F5_Lf4*+ z#E_&xI#bE6qezhUzZu(3bC^bdAk#tn>uIiXIzasmh#NY=P3Rd9Y^3Y;7|*XDZ`hxS z?d-QoF}s8Pmi<(=gWlIj=}NerF4rTz?VH$d*OK`SG=U-iFm=$KI=U8qD?sP!k+(NC z(iz~hDfGX3+Iyo1`Ckt^UTmSkMvC{Iewf=YT*|alKf_Ne{r8Obw9`eF^A#)#&~7}8 zaSNfy9p6Eh>nPjaRY!X;)x=ZVC=ES${OPEtwi{iWsg30v-%L{tTF++akx#Zz5M?sf zOm{KlCC;v6Jul}Y_s}iKt0Xtl%{urgc@JH$qhjLtCYlNAd9o0swp8*FYOAB2sYD%} zs-uN`34;xW^l)Gk$2)rEYA0P_dASzK25Bl;Zl^Kur!ts-0~l8^-d+#TLikGoTCAsB z1xED+X*7Jbo%Ub~ej|bY(13naewf1bRLMI`j*@ZwNO=oer;$_#>p32NaTB$`MS=I=M!bOrf14r{tb@PKZlkFH=(cR9 zI|0}o!Tc4Vy<4_#rkeqbf4EtLo-^_Dn`o&H{XdDxDS*5^zLjwN>R4)&&nDMCvHVq> zib!}4F{=a3ht#`>_`@FquMC`^-?eBUX&3$<*~JeBVygaG3$GqElW)HFA4-klbHs=7 z_CNZ5i;m^U^X+uF1}<~r5WaotHuStjgVPEpkBs8Y=tCo;yGB&u=(N?M^;vZ2Sn9;9 zM1T9we%rnBcy0IPRq&=gru$ioj_tzt4Dg-BS4J5BLl$0rR`k%wU@9|UTu6POd1tyiD)2_yIn4lwWTH*^gT|Z`($AqebIspT7D{zYmx{b>bDrkH237 z4;p3HFIqVL{nkS#1~NpSvT)`JR!=(6kVPZ8CtuVd`jCZZ-6Z8`w}q2jRj`|hV8=R%<7QvZVRXT+-T}(`Ut+O>-91Ye_6Er3D1F{Bb+|;)qnEa zujPzn296v}rH|s}0v=Icv}oC%&_^sF`e_SaV=Up$`r5#W5j@LGG-T1UJkCAV>mxOA z&UgU)KVXRDtM@1Q-w2jN>iXySdA@&(tcV}W`|;DCWj=?$uJ7*zFZ(soTl#)bZYKl( zAn@#8S#Z&(Z_+2PKKeiW@?w|Y9$)ttgiqw!dR8v3j!&$CkF0?&|NQFmr`NzI*TBcu zz()*T{9XDf%WncNyjdHb{akH$>lDK?m|oQtP!DF|&w#G4SeEwuFes8jh2@R>ezg)` z>=~vnIL`^+Bbx96@|I(`XA`J-syDffWpIv@aI;bYEyxY{jc%kci-~Z7+ ze7D{HZ_56Pqo2fk`dRjCm~yJbbLIj!e(da58-C7vAA6O*aNa`vX8iP$I^($OL&N-; zU4HeTR!poiMq!^@3>j790zbzW;Qs>osHWK?aQS0Dm>0F0n1mf*xM#>-aqBIv5xy-%k{t3{xS3uVqb^T4*&ktKy?Vq1=zWa znDEsnd@lf7PyC!U~_}uLFud0Xx>gyKKicSb0A^Oxhk2eUnN~jC#;7Ogk5W%Xsuz zh~Re&Pkk0TjCtyF$nArwuJ?^YXrrAYfY2^W-p~Fe>l=Z_`ns&@x?SVtyO7(j*-FyA^nT2J;sDd&;9%GyJdD54vA8BfjVULdTu+j&nZ% znH>@QKCIw6PA#Z63*8aW@$+vSs}}gB^yivCCGaAi73Zr((Z}hC8eal<8WcQGxL5M+ zl!uRTW5)juydJ(`415he+myT{ zZ<;zm{YcQXgKx6%XbUpJ3a@{!bY8Lm%JDzb_VVv*EVrAJ9oL+K$I;i#b5nTk5nU!L z=NT4+&;Grm^c9w;{d@{Om{)ZkKUj_)jW{L~;-70C`cc4c-q3cAsQ$^nUc_K^pm7>D z@HHy<<32ooj~98j6h49HX4y~t8=H~APYJ_=@I7Cxj+{mxO}Dgj$I+t+`1`z4uz`U5 z5xtK?);@Rq0S^E*Ufa;2>IzOkm zj;WPC<~dE~pO)vbZ~af^OW--<^`O!jqMu$);K}R^^|mW<)Z%IHBKq(d#iySu_2*Zd zf_UyZ z0Qbj(&}&-YhY@cR$zJdjR)EiWMXh-Yw(M!XImT9?w}G z=fEl8W)z&~i$+M$@nIacI@Og`^7J^_hUeACJ@o~|qeJoQe#_@h!qSeJr%T(loTA)^ zZ9$dKL6trATd3dk)Mw$dB~P8t8AVjxbM6aq=6QMkkF;IR@2!Ae2Ru^)&huw$4LF}C zNH4OS1igf@-`h{(R2K{aQh>}k{6D$|T?szoc`@|gSzer8tdfU513ilWP3z6`6#G2_ z+66qzdrHZViymeMRAX6yESKYDdTN{|C2z(Z{dgQ}@bq|$hVV@ZZL6zB`xp7V zmDRq<73OZnVz>B*#x8E(#TJ0$>)aacn|X26BgY+;;xr@k!~qA-c6i4P_z6DVGMZHg^$5c*l0#R$021L{wrSd`d!Zwd*PFd9=PruaoP`E20d_&5=+{L_78aA$W8?h zM(`Yxf^&Q@=>cxq&Pu;s`md(_df-D!uPMatngi$aCz@*(KE15`8G$@J!vy`OR6U9O zsGk3MyyiQcJ7~+qqfN<8fS<>IuOFEj5tO(E6&>rX{cR%4R6MU-f6K(3$5Yl%^M}#r z`I__vfp1abF1XOg|D{qDWb8-?xt4%~eXiO=Kh_rSH^-~;5t1qIjV|5!eIl-p0>Cse*> zOS&B%XHEau3wh@}a2-jc{w#E_jn1bv35@e#v2iwg~e4)_0VtWTMDQS|9>_<0M>OA!d{N85WHem+UT z{CrQNWn6|2b}IfP>|6)E`JR+V7^dM?v@dTWJ|(eZY~HJnrd75`9wZ#Rw#Ts)ZSfUV z_!yn{_~9CyxJUf+IcTvFT4dq91?0?Lfos2Mtys=J$8K(i^FKSRef-TTji~ zEzjleclevY|Co}XDFT6=@a@F!8h-X0%THi6KBiikLw+1k{0aDNy^1%-l)YwXIQF-o z|3QatgQDA@tn*Xef`4`vXal?-1(A==XDIXVDJ}V--3hZaoVc^<_h@bloJ=;cheNCA7}gl zjHhE_M^ec#evPU4PXRaX=&$dSnU`Z8ll;1Ph4tfk(j8YWK(EUlIP1+kZIHK9;AUOQ zxa-K}S%+Rf$NDHZ`l0`v2d>BMK!BecUr=yf#|F{9z7uAf@JJX zOL!DVUDp&pug60wUk!y`34=uZa^0chaf6>-`%4*vqm?B4^%% zH}i}dpJlwsE4*G$YF#j9!U_Q`;_&IXn0PJyrq=TX z#H$s%TlLri<#RHNi09pVu%b|Sy+6k53%246+Pg5zeC~c7!&?xCQyw_$#~FA4+qxB} z9bO-B=IJqZ9-xF9FQV-NaiEBFt9cI?-+pY%FM zX9Aydi3wcqck1lm^C`^^z5D$39mHei*R&k7|1~52xuxI{YDe3AuI#4J+524yft%-h z@w-Ma4gLCrpUvF~-7n8@JG`D^y87gU{}yJovX)F*MyE4cPY6JudO5H{za6JK|K+0~c%IKrclH!bq`eGGg~ zh2z85l+d$3)Cvpc^LfFfBZr}=i=O)&xVx^#GrM$A!L>gYu%N!6>YR`4kA@&`BAmkd zycfQ@30>om$7RQ59p4w!I2nKkqH2G*8#4JSeL>sP1FhLVyzZPr{#{n^IQDI<=d~qn z7ahF2ufyEayx7Mz>EQkRVe#WmrB?*<(RTsUznkm&UDz=7d9BxB_-%(X8o(w6k6>R) z_qQcay#q14<*8qQjTcm%_s98uIizHDW2eiEHx~teSnYQhd@pGARq@DMfKTsu>U-gf zJ(sk9c^{AE>-iaZ$T^Q|*+U;>zp8qSY`gAy=+1C1DF10Y@eC&gJ#}91%qn_qR~T05 z*(Oj|L=NyZCwR8Y#k+QeJn}javu00yKm2z2mt4E>)-Tw_D>aM@9By1;4?Uh8r-c>l zYVpvW0dK3Peg`gV^VDxa_iG-z?m;iomIdm@q<=;{^mxXVIz06Y$eZgPyEU&~V`{C5 zq8|D=#BZmkeg<~W{eo*ZTWz?bVt33#zkv46IP~mz9uHhDJS$FnJoFu)H_v^j{DsV= zi#pGrM*q{l3Iys-A$RfuH|LtlJpJQ3;tqQXabCS$>M)|C^vof^HlzhEIW}fO^yS}$`Cop90MC!Bt3~1U zelq(Z?a=c$TE|=9{0u5hvU_n2zRB`r{~7uvRh{>V`PZtACa0`d)b1spZJOjydAV~6HN$wufTUeie5+IeIoGJf_lzLpBrL+_A_7e7Ca+zrW9P; zfwLI2SL$Y+)hc|PZv=ZeK76GWoaaL{3f=UICJ@Ln8LraLXgj^<&-h$pPQms3;jV{4 z4`1;$Dso>?<5Md=h&H+Ba9H=Cscwm{?A#xui2p7yx6MF7IH*mUiuS&szbq2E8Y zPK_OU&538xDJOn7py)CxZrE``awF60@lY*f;MrUp0zm&k0H$FB&bsgxw}Q`1v3&l$ zkPYWdsaJVY61n>o-hJMnAo)`ixaQ+bz?g&oTO7Dv&m<&2um2RcQ+Sl8fW3fKnkjTO zUq^lT6j=7`1GI`nfQkTRwh2O>PGLS0cP#Iaj!X=e5Ih zAYXct_Ttg;$QSUizR+FUNTtl_P8!3b-${Ce5}RoHcm#(DHd8LYCBpk4*9+U9rn${{ zjvkwzalmN{&JS#%Qoe96eIL&K#IaWx-ArSd$aXrlg^DkA-AjedG?P330O9Ov;ms`0 zX>39}XFCY%=zco8fiP!I6why=<;|4N(gQTnOu2Gl7wy|j2jj8Lw8ZC=dLH5aJXbva zC=E7Kf42A(WjEsI&90r)2KvN{xYyoF#n?xJgm*n;^F284&`cM?c#b{4nZ{$M?D0k0`yD7d2e!jAsmYS*D6KqguDs99$l`9WYeiKdRu5{5`>!~kZ?xd}JzAN(#-*3#7FgDJt$2p=Kk5U3TEG=5B1J%bVz6zWgLDG{ZkzworZpUeOfjr0!;#{+-Gb)V7h%(WPy4b0bYB zue4DTkNEdo?O;F6R&sdmALn(pT)l_y{T7nB?d<fW;*mPwLeB@ zaO8tt#D3j6N_-*t499me+m7>7o2ih`-OGLmrhedln%{^`sY~}0j+*pmuo+v#`K0it z9^><4cOSmeNue-~n!gyN$!6qzPlWdXTE~lfIKOtrab5!bKcDD&jL(-%W_tE;JkxwG zDb9R1?&a~exd;8Mh!o7eRnPaZ!JaR4(3y2~@WmTDXdLI-iiGoAIG@&&+eY)q%To3M z!sBSC{yuykMRBBrZr@L>%`{W!dYB69=~`FMeS|amqZz!kF3$bz(r&tpb8bC2ytoHP zGxAyVgAirQxyLAoBQ)h3PpWnz$G6egW*U7XfkQAjH~40zla`whcl5W#jg-p;o}fF; zeEtvTsn#RjU)jR#ax<0i)8 zn{@g~%5I?e`Ft03ug5vH7x(bkcQJgnp8H{M96!Fagedr>Og*0?%f3+w67Cx+$@X@2 zo-q8ir>JEEMLvDIfub0vUVH=gZ=iDI#KV-s(Z$4jaPFarV!84?{C?)(jl&Nz|Ne4v zw^|=}z0kq-ZdCR+IreoL{f!u-YjwU8NQFt z)8Pi{#ks%m*~iNl=Phx|heBJ&$Zb{;#LrLTo#q&pNZ~^e!r(pTv8D^m`$l*P}R>R*c<8p$#-u zDRxm7=fk)^V$HRX{Co#xa87YElI_fTOeJ4I|G@ddL;yGMobOj3q`m84@98l6?Q$md zB=1L^iie-3&^k)S&OgrQBv0jTZ>F8iR4AUkm*&^eR6h9-O*PTf)+^g-9(Gm&k5MRu z$u1Y*e2HEu;BXbrl}1i)rCbvY;^|RJApXhhPR{F00_Q2)HqgxO7ZHEtTmA;lWv!#$ zBxc=w1IEX~vwTi+uCO)CYqV^!yp?c|c`BBA2cJJ(2zNcr_m!vU>izWV8}z&o!+Fun zrHAMe#|PtjjL+#|9>F?!s$6)4{ctn)#*-9AKgc65ux&P4poh4fSWjUaRiJMrj5(j} z%VAuEp5+SOcLM)pQkXw*#4XVk=JTnUe723s>nWSL{Wv8t&R5!TNDJqqB3(Eq)IgJT z8!LUBqfCZlv>3uUsk4yRh&W{HD6)<^IFIiFp1Jf6nruW~?(U>4&Yu;xJVt#RkUv*i z`JC)rZtF9&XFWx4UkXwZ=hO)E&n=u6Ivj7{bIQ5=*><|a=XKBSp=&rQ^z2pm9dUd4 z^d7>It_zX#kMTLQ=$q6)pKa8B!8#&M$M3^;CiM6{jU#D=_T79=GMzZTmCm7mq&^RS z1Zlo_^-*5`&eG?fru`x6xb)UL_?+%S?gS3s1!=kxdz8suFo4t>UIQJE4-^u4}Z~jH8o@VQ@6u~%y@pYL} zQJ%-H$IJK9Qa${Dd9!srT_~1ge9m;TzX1Q@2x_!~^AB_U7Lspv(nJvX73-uRj-F)> z<2O?bq2CJEQxxZbDR2+Z8`HFkGNrF+q;g+mB`byw*lkz8(Rq~jfT%Z$m2(UDf0jw#F8Lc zZsYT}p{s9Te8;)c@|Imx!uinN8?D^$Lub*Ca4vD4-g=A*=mLea4|0B{i#RWtZ@{?w zwTL=@n2cbaX~g-n#4d`~W4x$5MWF^-cp(3*z-B`JDl%~Z;4S5{8_9AA_3&tjc52AawYRt zlaCsP)id{@OYiaZC5FaJmzz;l^DhAsI3S056Hjy z*zTwKymh?&(hdqEuS;3r5r=rsPRa#wP7mWY&Pk?=`K^3TGMBuvmG4nA#mtj*w-I`O zDM}NBb9fjR(O0U*z*e=zmxz^-HX=g_MIuj@aChX!yDFmKU}4vgT5 zcK3kKw1xlV>#wE2MmY<93||>MbVPr&bkxGVf-^qp;ZM*(7yiQN*h`~e*>&vILnG=B zCc=@n69fIUXEi!}c$(V}yEJ~=UcnRj_+n9o&%^0w^cDWdA+`+nUoPCyq346C49lE# zaf+vZ7zh2}vZF5_8fMF;T)bBPgRW1R|CEbY{G-DVaPr6?>8&%QxGJ6Q z^-~s&(i?4zTkyewlQ=;+dh`fzgBGs;=xay&5!i$USAKHzLMNBZjjl@PWVjRG<$v_s zJDlMIz9)w`nXg;8Bi{1`VD1XE67aWX6fKH}UCk}C%Q_;d3+h0MfF4V#~ z^N9L74rOc6IPuh(f6$`QW3m%E+H2uQ2M0!ZvgvT)#(oOBFlF!XtI~l$e`ncmYs&9W zr@;k_jvYB;!IU429l%ezc%zFuhpCwidyg)S(#`miC)_?4SIy7qtmi;S$EZv1%7X8q zin^Thqyx{Q9>bl1x}0;S(MM~;v(MCq7i~H6dzyVtwy&T0-E*?``O@XrSI18pJoe7{ zn*6=m`b>Ac6WD6I2A{1B?_B}DRN;M3j~ubf);sqtrd!#rh{22Ay-l_CrmYryh4zwB zzn^SBhaO)Y-~Ghu_=Jix>=AvJo~^By-EQ)oB3Jlko~zAg`>zl8j$Z%Sawk8yI=*yp zb$ra=MX$w=y*<668NXax@51Qn_`XjGUfM1E)Z1$}pZD{HzWDa|D!=9DOa69kKHI;A zKM=kZ`fckP`0Rqe-NKixcE$c;$%3zt-=#lZU7z_s^5e5ViS$ALlb&etD(8v&I{d*J_VLCZDjkSZjRh z{fy5a!P3`OAD_Daesz4@;HBMZRridG0#Dwlt&iPr7XO#DCwzVX`1bh56rCF%+s+tC zUWnX8BiF0-oV3T^74l(P(Yfu}?^&1$`P<8EsNG)PhOf|GxY;i+sp{4Gw{EQ6&Y}%p zp`F|&e>=3fw!Fd$@YZl``q&Ea-WA|WHhcwr!(06NW>wwemlgOX4c`j*(mf(~1$_Cw z)$y78SH~wF@Z;_L$y#{3pUl5Q_$8kUZCtOm+m<`8=vL0#?gv-bYpKJJxAiKj^&#Yo zUV~~qQmvQGmo@7a(?1`x>=F394PPNXgJzv0d{MQoSzC{swf?d7T;3`6i`?laEj?Gz zr>N*w@%ygT{W=}&1ChUps!`Zoi+R-%(rd`4!-U-&vbJZ^KvcYxrH#{tEb+=U2xk-n}}0!r&z?akV~P z+b@%59W8vVFVwa(z5<-~S@bK|7guy{p4)NFu7RI_@9Oq1uYr%h&(Cj#Gd3}WEQa{80M$GFUf)zy

    Kp4?&5I-k*{FrB`xVa{Z_H?cD^pJfzJ<%e3MTZ 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 hb`;+Y_A5|aOneHdzBKk%7SE-BVZL(jr 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

    ^Vjb+2e+Fs5Y8-w29*p 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

    Z@*76u<#!!DTj5DizZ}MIECB+h05&Tfj-hzWk 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

    bM(Eu0S~Kb)q2uw@4EZ{~#r5*|;gy0j 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

      T6miNh9>KjP_*8N{=q<0$QNKfLA@ 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%0AV24Bln{xcW(1U2;0zBT+kEb)Wz@clJ2-P7Jr zTb}P5a@G6i?#7So8Sl?0a`oi!Rh&OE{2(`u4tII#u<-Zhi~Uo-4lmEWy~3l@JuOeo z{zt2i9US$`hU57@&K(l<7rD+~@)R#Tf9#(*G{*mw$4?0Vk`wwnnn(Gv>7JG^=lI^I zK0LnvD2kzfXx#r&k-#VP1i@y&%G~LtgmyZAb@CBZnIsSXZ_x`{6 zU#Yj$=Upu3kMlB|-mCuI-xpTpTsgeKu+H1@V4tY(#yvimJA5Ly`Fx(>t2tr+JGi%J ztp5<#jGy8u^)63vpT{_{c=TK26qh-}MIPZC=Q+(q9_$hMO5EiNm*hQxTk7X=lYhr` zzMTvFAZPjSoaEQIw|nIIh}--vH+h~+9FICL&P91w=Cb;FT;Odu%e!)l59Gmak>_}B z@wq(CS8d48I6^1i|u^$$47Uvs|{dFJ|2^gqRm@&vEM4PKWkyfqj3S3JT8 zaQD}--*KFl_iS#cU%@55g-7`Q;e39Q6Z|swc8&es=PCY*Cwa~#-2c1?*Lg+m?;Y!{ z%@y@6d6akN9Ph_zK88EiJCj@d+v%S6J~g_;>fb$oCb+*v_^;eke}fC^vo9I*3tz1E z-TWoEvu(`JasSJx|7^OaJwH>!yj=EtJJI;oIx+uBPHin8PuZ`-P3wQb!#oQw75U2Q zn+|P$nKNs|`ln6zw0sqLu2LV&8}$dcv{3ks;rv;`UvQ1*SvvMFCZoPIPw?8DwElLS z=Y6=!#|`K6g`Ab=Mjqh@ImiFtJio^U{@yb3@`60dD{+-K8hXj-Zzs;I9zKXmd@7Ig z<=o{vxVL7^|0`$K3ctcR{)CG>+p>|r#)}W_dRm?Pyd`G~vHosc=Oekt=Wt>37=H~n zw+cVb3HQe<(>?8aYP#P(QSUAk<5Stl+jBnGTKbemW%y!vxk@ACU3xH^Y0(YV73d4rVHy>v?R=1HXITZ^tz*bBRyj0$;)-d@HB2| z`Sq?HsaC0hxZuPpAVnN<5S_QIsZ(!&3*NcrhEGRY`=Ma z9PZ1z(sWPTzhnOb5BJ}jr>uXr`2+KB;SN7xeBS==a>M*tM`FLK{g$5YY55Yf9RA(; z8R7Q*;q`cux8^4QipTf>uJLhP;d8jeS8{=GxXk-=k&op(pUoqD1*iFDPVk?&cVG1LH=g2`c#_}aasD6I zd5%@1{|f(*M|lO#^V*!{Ejh)%Z(r{6(cI=Ud4ezFF}{gwd>@zj2`=)Boa1*n z!(VcWXZuO?KbVZX3vrj1<2J9w6TCT(@lIUh-*B0a;v%2HIsPqY_(o3hB=_%$ylw7q zhg;m^CJ(s5$?~&Z$)49c$a+7c12H(R~{wtUG z1upQvd4xabG|#$v^q=4bxcA4%y9`h98a&CH@;L9vb>5pRd<2j3X`JIrIL+7d;I7DX zH~084Zt_34!EbSyKjSRVyhik&;`uqjOLOba*nf3y@+Ms49k|SUagh(>ET6(DzKGj@ zi2bhR3BHRf{3sXrc^=_6Imw@L=Z;u^rZuDg7SG2MyabQ)DqP_WxWwCWj(6h>AIwQU zkvkKS=X@ULtGUj1aD^Y@B0s}9?sA6voa96<`tRQ!`=@w{Gd#&7T;)8MxyVH>agHmT z;Tos-Jf6BO^8Ah``F3vdgWTZ1bCqA?5`V}={)Tfr_gd};UW^B~MxK?q%j@w3Z^L7} zE7$k{F7t6b%I9#NujCBh%1Qn+_iu@OPjQ=H;R*hL$M|a=<+*+u{pWcR&hm(lhZ4NFXPm5;hQ+QZ1_G-EFFG=Cl(IB z$fZ>HUC!{A+?prqv#%5VPw+xK&dYIy*WytwaDhj8gv*@aDyO*42_EDA+>x)zU7qAg zZgZ16JjOk)@qf9(Gp`%{7kPdj;iWmnt8;&@$hQf1d558Aj{08Q=EHe{PvtSbcsSmA z*K&TQSnn>*@}r#O=ea*)jDM3m{3*A1ruCx#CeO!pUW&`S8W(wEo|N}zoKxR}(|jlo zW{7+zbB8bFNxp{1`A)9!BV6X^xWI34mOtTfd1qKZ`cJCQ%f0VKz9qQLt8$Y!iIK{u`y1aMrAQAZ<;x0eKZT=Tm%3JjxGoo~Jm=uX36{-~@lg{W&8492>;( z=&AwDGj#G41!vR%40peotJ9%jbqidF0CQ=|lf6d=EFr!mn}r z!0;@a#QKxBgqPsdt>FT9ZV2zknH$6BbMdC|pLkOJwPF3{s3$g!{Yv&0VheT;vWyXS;I;P!*zZ#j2ec>c{I?*#vN zx~J{ev;L;)gF9pV&Rn`HT;VpK$|HY_`eoeY+quP$a)cgK1&79wwk)6+dI zZ^!ktl6q-8#&64oX86Ei-SItx>wFDQJ`m&Y<(%{TJQwbX`n%k8{Ab!c^3|QsB{|{x z-H->a-@Uo${M3iz)tfvn-`}{+A904~+#>c*@^V~rJhtRMAI5q2&)Gb@ey`z<<9#1j z_%*J&KW5o7_HR30KjKmM-@2T^JyftT#V*Im>Ncn7(FW;eDQ$LN%{97*aEu7;AdCGdv z@C3iX4gQQPJnPocUy&E$5nf@sr$2xHyYP3<-;H>D5dJk!d>lTSr@jhb$fKWxZ=3FE z=Wj&*$2sf#y>5K#%NRf4N$bzMP2{P35%m=~Y5W$`J$-%a?WI2cX^cO9X#HHumCvI- zVSZZwkE+>7#@w~;TCwN)z%^%~};VIsZCwXrk=VQ3e4Q^ZiT5j^>a6CWBW$q4by-&Hw z$?YP4ju+uHk4*Qp>of6w9RIEP7RRq_e9HJ!Ik{l;KW=>5_{rgT^?#_>K8p4K!{hdw zWBb^@t-dtZ{}bca=Lz14`+VqhPdk4_$Kzb};)gN+MjrO}S5Djib*>x#&2an&F@KSt zMZWQVc-`rqwqN2m@%QX4Ie$!e7tZp5oZ=ICaCD5nh`W3PPw{=+;-|RDT^{34xW=>m zJo1(~&7-_L7kFJB;UcGb4^HwCJUA-)IfHwA1$X#%Zt=t1pau1qn|P_$RqMD#|8CuILq5|ig)KhDe@f7U9NMRFXtxT#tnXm ztNc8d_}`q7_X{ql&smE8vb;E_cvbHII`VG99UkQt@5fC(p6h%*SNK{U<$E|O@8g_T zf0;A<5hr+t-J+lFu90_sZgG~!d2O!oHeBZ2xWI>TmQUxw!Li?OIjMdN_kR`j2f4$~ za*N;MCJ(r4{n>Yq{w8@59_N+0&Uvoz_B_gaa)FQF5w3HZFXJTN!u?A0_W*Z!id+0T zH~CX;@GN^oe>F~XnV07Ruftj1hErVP{y~xN5bp9RJjIvr1UGq{@8dc@$rXN;OWfxI z&#-6om*e?3%S&^L*W?6m&iwy|CRInPtNkYoaV1M z$#d@&{q_%tyczEBs@&#{d4hN3F)nkBkLEI;&7*u3=lOQd@L&A(?jKNsWw#e>i5?)@};I5+rWp0eKETwgoJzr=l>d0+eU2#>BDld9Zx= z0xqo-zKPSTgdgVGYT*~TzGnDit~y_{9}s!VyaZ>Q@1Jsux99P7W4(R3$tMlxuNU>p zIM09JEI+}O^<(_&Jj!2kdZVb%dtl_vZ4zFdYp(wdxx&Ak?rGOo-SgxS_4c=Me_p_& zKaTY#xbFNt#|`KAYtGIe~T<-+fCa+&Z#2giPcWy70u&+~Y9 z9^EkN$8de)@I{<(f8NX^o)>@RY$C>Yxx)YBy#9Z1h~vLvj9-NtuE!#0JTEF-oFT@a z%axJvbv&^~_1IO*~Il=Zrkta6>=)@PzeF=a%dH#-W{$Cx-K_{|;w4 zS#`W!A8SnawC7#(&UpXYgtK>rf5CP2eYwoXamx7fIKfwQ-}pPZ$d7T3U*I&q!wLQ$ z_x=$1<~l0+8NP32dAu0c!v@nmt-r4EyKr8JZkOvpV{27jk{d&9rS9y6Z^Lm`(?YVPdthYC}_-JnOIb7qbxy*m$?gg>lagtZ!{`s-~2HfBsxXNWN@v&Us22VC(y=!@#C%M5-a+SMW;!nB2 z$>a3Hi*TApxO-mgzY&k~FSyG4agk5p9AC&OzJUkl#`=HaF8`g|{00~KbI$P`$45U| zUX0VcDkphU9-I^V|B}0WAW!j0Jjs`ElW*b%KfqOfmPh$*PV*N$I6Lypbwc#h;2&{` zSLXt6&Kdp{C;4Emo)zn#$|e3S=lND{pBdvH;t779>)hiCf5rVXVt%R?{d9OKZgY;u zcq^`PiSv9IXSvS(dhB-vxA=B$@*`a37r4alae=?(H2>hl=qJI;a_{ume{G)PZF!9M z;2Iyv6+V-5d=+Q-51iz`@YHFs|BF1yA996fI4Sav@&cUYFS&b6>^Jx6(NCL~;0CY372bj~yelX85S}Fle>q<`hVpyeu?Y+5s&hWXGTAH zUXZiAJogWa_1EJrZ_kswH;?ntT;p@O!oTM{-_03*f;)%C{;%>Rf6R5B`K;)tzzcDX zSK=gZ!2LsF{T+Ccf5YQ^9M}1L&hd4e=6i?Z503Sp;wrz!CH|NTJj>b9&qO8WFU(`S zGS_%RF7S?=<$bw(P^@=6Pw@p@=j(^_`M%-&1NFmg{ufX1XI$ag&WV0Tc~Q>rDxBg? zxOG76w-Yz{0Iu?hT;hwl$W0#M`#H^1oZvTkYX8`Oz>_@ZxzW!UXSmL*afu6D}qPa)!U*B+uK3e)@Ywo@KbmYjKXZ=8-*O{BE4) z!#TlcaBue*e^} zJ)Gbtxc95r|5cvik9m@3xiI<}=Y_e>D|3Z6D&s@?FO*zL%T) z6xaD*T;b0+$Fp4&{iJzO?(Q7>t->wdgloJLm-zrL{xasDz&XBv2RlXmdhYOjJkC#Z zgJ0(=|CdL3_KTyR5nhZlyeg-7Qyz>)o?mj458yFAk?VXhSNTRR^PjoM&v1_4;w*o` zDW2<+=x6YY$oC`e^6K2+0#|t#E^&p6d^CaKJ=TV;NvgjwrY3^)6?&ht3`oEuxl_%c`dST6B-+|9=LYq-t#@C5&j$M`j_@h4p7Suc-%iu^;)@sByf z8*!3Y|H}oQ{fg*kgcsv9ugYC{H{pc( zPTX52@*lucd?HWs#XQb8a-ILo6@G?C`7O@#7o6p}u8e-B-{u^D$qjkux+?m~sQ-wQygK)niu{{%hkwN_KA4+) zDmVDIT;*H2#1CUG$USrMS0bs;pwU%{h1 z!R^gszehN){sL$DJx=krJXj*;|6n}&>GHDN=Cyf(x8*V3gKK;wm-#H7l=mtws{es= z{1?vfi=5;Sx&NccKf~3Lzrzb~iY|6$GMw{ zysvPZ|HBhJ^Y5ddFU2-@sG+C!XZL^Eki3b^e^w^3Hy3 z^ixq^j7ND@&hw_6BSWCz_Ez!}D>Hv)o@O@~^`kF7jZrsPDlo z^&`2-XK{mn$5pzsf28m6RKgCJ@7nkJyl=}-rKgpY;pAIj=Egs<}Z_EuIcSj+giE zoKSy*d-F&B&v}aHxF!0TeNZ01xJiyw7r% z-{v-d$rC*Htw&sMIMNaab+)qXRDtGv7Zt*xb`7Um7o2&dXm$=Vad1t&M`bqHu+}|YfEXOro zhs(Sz7kPIc;lnx2r}N~-vHoQ|&bM-dTU_PmxWsRBk-y*+&-sVwFTsm*cca*URi5Ha zc#?m?2dkGpEJ;`R|MU+s3cNefw>}spDh(9z3eQV|n6`s9(ZO z^@(9!KTmPVdY^FqgqXkJpCV63p4GVJ`YCe5{DV2|e!7wi`uj6i`87_+_xW(X`(d8@ zWB;b{%MLByCft^156+u^5>J|cHBXp-KTnze0@o_h|3{p0|EK;Oc_z(Yk=x}MzX>M~ z441fgT|5tu;fp#^zi7Ir{r4=RJ`Zo_+@9Y-98OI}{d&&wgPi9MR~(Q3aG7U+F!EG?6a6pAEnbIH z`$l~SF7kog;M2Ly<2>Mdd1Sv>?^!PKdpyQ7wIbgXFUmb$gERZbdfRf1%UnDl>L+sA z^>7)F@SR-XC%MFLah1Q}1~2$fs#gbrEOyR?hKXxX7<@iwE4{ z?>`**`n)_R-CrAVhIio{AI?QSm&<$ur@bGvxWWJACV$K=p5u|o*WsnO&+Bs1^K?hf z@Ijp8Iv4qBF7tg{^3cpoWpfq%m#K8dS*IXCz&Zt_#y z;npT7;nK7ya%`WSWb8!xtP;@8;|f`xxig6@fTd>dH)jm8oUBG zd1G$zuejuW;0UhrdEDS8H~ArM@r&HyPk7Ad@tl8+d_+wUZt;2a$Z-5be4f9|*}sQB&e)E^db9m!+KkCmiOVr4Ke<7F7r4~ z@qL_Y#`qU_oImB{jZt6tsmL>acX>ycGWR(8eFn9sV8XZ;J7M<|eBm5O7-V87M_t<}mx8yP(#ksd) z{M9_p5Awu2QGb;)?}xwT!N0BEt4KK}U$A4p?;OoyQ!%o49WMC%I?6_qeFPxu1>w^Ulxm+>n2B?&^OZ zE;yd2a^3N~j?3~s#u<73&Dq;D37Snuv(onPdF z?=LexAN!SVkM%R$=5=|*^J+&<+!5ms;WD4gQ+x~ehTl&(>HE$9cvOA4e?*?fgR%a0 zoN~V(&E-Et{c7%Vn)kl4KNWtGTOWi!j|L9*OY_ zycp}Zc^w{kH0r@J`TyW%JDhkq_RsSYTs3}e?()uDcp~N>!?nMKf6EiQza3Zj0PgTx&Ghg(Whhl?Ei}WTf7SA{XVoK zxBcF7Hcyn|{kF}0@Bi;{#qa;~z8>oj{64e7bWeLIsZ_-EYYGB@~GuJZX@;_G>Y|HNsY;v~Pt z{WBupm)zlb-irJ!UW%K%7B_esuJZ0Y%13gZ&*l_g%?ZAnd-cfoH=g1yxA-%j;Mw1f z{Nubh*LgLr@Mb*9J9C~ZoaIwF$(M2e^vHWVclc3m^FMilKjbl<;op(J$_sLdSL6b3 zz**jrQ@kH1xW>KHBJaiAd=Xr0= z@-f^yCDv+X!JUB7dTa|mf8ISWWT<3#1&!=&gFXvt@)}P=G zKgMJHBG>sNF7Zt7MgAf$#A#lcle`hPPKfht!apENJa30{YLheW>Zc#8MtNj`?h zxWP5Pj>~)>7y0j;<2O0OUvQG={!irZ9US?VToO_;}9n1)SpRd2n>(yN|p4 zG`IP6p5)KC$+LYD{WN${F7hgz=S?`vJ8_B+;K5Om??mqM#XQ9~@+AM6n>@u0ev_*_ z;4;toY4lU%4Ci?@9^nFKco$A`g$LE>=M?Vp7`ORmp5zC4oS)+czs*(tV!EgOdyTQ# z*7@%H=z^bxyGw-E;zBpR@BWg+kI8o|ZpxPMoi%dQ1Ib&RhRwF7kgl@m{Q-8pQr1ygYaQ6ZMTbGYIcG9RGE= z$|b&l%il!(7S7ES$LBAc;V!3Ujry0v`N{BnUqrsd?BSJpa*l9;lXHc4=LR3kJ-%c( ze(o4Q!5w~r+s^-+ocn%^|At37{bl5<@~S*JUyR?12fR0rE*bS2Pw-`&SSspwahjjz zGWWQ~GyE^|w0IHj@EY9XA`f_9E-oGWpTZTsid#I%>1AU4vs~i$xyrMAH7(z?>$l{2 zkeTl3|DM+MyB1G<9M{iYT>cH0sD z%X|}0ei(V49Rrk+z+~~*pPjQm}JFLsImFNekYIfi#$3*toQY>o(M0QnB%+i)%rBn+lITJg^%Hm^Et*%$LC(o zEfDKC~z%|bDg`DQ=Im!2OZ#?on$y59qPw>Y)&NC;YpBgX7C0?HMye?X>C-` z+~s|_&Bt+*8(imWxXO3)D7QJsFL9bbU zhEL_e6|w&qclc(Wx_<`Ygd8as|{st%czud1!zS-uA{yMw}4^EHzkB4>MkSBQu9^*1s`4}GM zb2-OXbDHns!D+GoU%A6C@+5!2W1N^f`l<2{c$Amn9IwS`-inKk=dL_BHS!$H9X^Fy zd?`2iCa&|Jxy(~s;5T@L|I2BfZJy|Fa7yG^ggg9WZt;fP+?8o&vo95%UtCGpT$|eij#Z?_l}GGALTZ` zz!T2*JKR+Nit9Yje9>Q-m*4`g&RH&Sig)Jzv61IMF7k<-&Y=kqvU%Qe1-6Y{pXe_5>eBA1N+fb*PK zDEi6p4>-xoaPRO~Z!MnUt$31u&EtFs*ZEYg@ECXGy@^NF|I9g_;tapRN&YYQ4~x9B zE$n*aMR<~b%;UTv*LVjmahWINJ(>&Z=kN%RbBgce{-KfYFWljO@+7~{}6&@TC`A+68U&1ZEk(+!!H~8;d;n%sypK*?pi@3k!U6|AA zEAimq$d~61|BPF_H#hkxuJhSk=HGFF|G*>s7^k?yC3)ZFK_&8i%^glH8vV6+Ngn4l zxW=1viFe@wAH-QciIaRW_YR6YP0q`EAGg(?;tB3@gFoRa&$3wbGs+8bj#uO~ug`-6 zBhU8S<-NGgRnE$LCO6fuduK7&X3a?bOuoaF~O#n15IlF0W4_xLlO;#rr7{w6rhbzYt;ybc$68_scw(|iaI zE{;5>aECA9Hs8QazLy*PH?Hz4T;h*7&)-`z`b+ZZzlrg4FBSXs_YbeYW3z_0 z<#d1b@76nnt6zrC;>Ne(n>fRN<@Wor-n(4>B0SsDv46Q0UXI&$hPUJF{oyK?whmu1 ztgjWmcQ`*2{dPECi2A2Pe;#?~SSI$Lx<2Yl4gGP{H{|T6QQwU#xmf@Bp)ZK~Wjy*; z_%81KH~ciG9t!ul{&IN9Wg}0Qf6in1s2{?UbI1M{@gNnxn|t$wU*XOV!e8^$N73Jc z+1PKLEu#KoF8)0B+mfqGM13DFxxUWe#5^(nI<9>`{17+)6@G&UkB5`X#s2wc!z0}P zHoOC;UJW0`9p~dxp7<>44{~$O@N3-5hG$ql_DhdMKUwa-8THMF^)JKwaq_G1C0zI> z{0P?;i1m8I@pFaeTp{)={X540ggftrf6k4E!^d-bk?^HFwO#m+TzVw@!gNpj_Y(!5 z$N%BXjq$vhZN=C>yLXIVgWH>gf5wA-!v}Kei0~QQJU@IBj~^6%niGeGKjV>8!t<{b z`xg!fug;ls!oT3`>ESA;j}BkTmBYjL4eP%SzrfWQ;&^|{*{q zc+pj2|Au^PaZSDwx9^Mj$8r7p(f`#v$V9!x&3VJGaevY9H$3{IaAwumzr1{S9UfUR z*58%WD~C_w_77wHbzECG`~)Xfi18ot_)6iqexhINt;7J5x~Kp9+ZiM8rku6@p4{{KeJq!q?~AzjX`KICIM0uA z%K3en6Z|QU_`IKU^~h7X{}q>bzBM9m()F?;w|QgExt@37to!RQF1WwW=Hlv+?^>?${oGq4>d$k@=hgc> z`O~P+v}WXM@giJbH|nc#e*N%PoXLmx54v+2`<9|LJ&-?Q@pTf1hV*C}{=DWDXPY&(#>`k8Xe)|Nj~^53z0dtq!ZZCe@+D3UFT%Nc zcr`BYR$S&iIdw*iKbG_7hA-kG-@+Aslyly1U*=K%l(QGbdULKFdB=Gv?vF)%9Ui?b z{Bv&e{yf5`@WkaY{tB*L5x$E%SB0PC!tcUw^7wf8D;~WyJl{Hzx6LbZ?zX6J%wxO@ zXZ{fN!??(2bN|7pU(0pxyZ7@LKhLRljDMfg>NBnDc=94#dosqa#_6ZRTk!<%$*C8k zek>38BA$9F>bG#t`}(6i_FmLq=1KmP+dSubk$3FF7{3(Pcpc7pfBrcay|3-h2|k5; zbH?Z26~)c)vQ9Cl-w3brBEv7Vaz_^+!49`}E6P zd>GNrXQ**}n%{V<*cn>Z=6h4_J zJimX>CG-Ex1^GMN_5R-H>H@LeoSR3UvieG#IW+29a^bY_Z@7DA_;ju{!q;&s7k-r6 zYlYwA#tq@ww}}1Q-nX;dZAN`#uJG>MH~&N~lw*98^ZSIK7}l>3zsrN`!pSXT|H9JY zrMY-v_-CBGF?=W|uL)nqU4Dr3FGu|guKRxS{jD5t&+{L1-u1mTH+g@~EfmkIvv@KY z>tD~6g~AVWe%0{H+9Olzb5B>KOE%_AHf;l7q8@;>$lAn-}if5UOU#GwHW(#b`CGkwR-qxJh&}f9eTy^ zh1{Gqd?$B2FP`R}`~Mwo%pK#C+r|DV-|v?l+V|JZc(6%~-<$KkkDkY!b)tR?kL&L# zuKXqH?{fW)@QmBX{!{aZm*L_~;VrrC`@|ufc7878lHWrnhvWS|^AaaEj`hCxv)HfY zdA&F%eSWOVUEdG(=Bn=}|Bs9N3{$N-+W?F;*vCG0>|@71cI?=(V-0rf*wI*s(TExq zjb-epQL&T6GIp%NK6dP5EJ2NmQRBq=o#T7+=lhlGzMi%Adfv^3;fyEeY#wpHZswNf z`zh`&7UzA!!wZCG*&)vFZ698WOBaPVF)mCM{)$J&!t?DI=OvxD z7WcM_JkL$nJC;3nH7rFo6EB?dnH)8#)JH`2>IpXtbHLhLke9p}q zK9U>h@Sk|h=huz>+@Bwx<*M%=UrhF-?`M^R&iVDfhfTA$&c~>6d19_0koa8fjA`|mn z%;S7LxA{(P@?$*0FL8z6=OXtw$G`9}&%9gQpA;{^NnVC~>qXx+xx<@ri}T#%1Gvt| za*a>t3SY=2zK#q0H_q}SoaPsJkl*Dbf6f!@#ymfAmuJ{L?#CF<%cHy$kMJ;;c~j2w zPCU%}@em)yNj{aw*NJ}T^C;K3%6D*yAL2Ye#~FT`ll&R?){gVO=P{mckGLPBJU7>Q z2`=-hT;Pp3!`t%^@67{z1W&9LeJVW8=W&~_;wIn5HNKB4+~zF5&T0Ob2l-o0@YH+8 z{phY4{buJjFTzb;k*l2H5^uu=-jj2D2oLk`c#zNH1YgR%HKJdGJA4nf_(^W?t6bv` zxy)a4fv5a!+>aa&@GvjLDPEqFybkwjxXUf-@pTWCr_*% z=Rd~d{1UhMeQt7(NB9@6@XUp{KSf@Ehj>{Y;I(*Swdk`sk8_^K_<(-CbgVy?TYNe< z_(HDnbzJ7Zae*Jzt6^!L6a_|4@HDKgTtGo6Gze7x;V5@N|2}{Ydd3CwWQkEg9#p z#x;F6;*NZKZt>pS;3N9`xxytrk8^w#r};J>;0L(3MD%-x$M{Vy>)Yj~{5!7kwEM*U zDDj+}ia%t%#JFcJW zdpeKFFXSd)$2I;Nm-rFR@fZ*DdpyWr@I)&5{KOreasRjq2o{xL0#5_xJhgatoZ_Eweo@=}pm-%qc@kyNKvv`n4 zILSBg#LCg{PVVxf+~F~9^SeCC|K{=i(AC$^~ALbG#mBcq>lxZalyT za)OWJ?n*K5={&}N<`!SW4ZeeG`~a8vX)bVwGyE|R@i#okQy%R3;Q^jlG5RjZU0#+u zye79e%T3;qM|dBu@)2C(Q@FtAaF#FUG&d%D(%N-9_vEqp!bfq^`g1s8{cT)YCe}aBg~9Mg+}J)m#bMEJ zVu$d;Tv;NQ?B!FJh(`#Kb(j858U8OxXrip*L#0I%&l}>?`6(;UjM~q{(%#jSU<~AG0y-m z%HzB`C$q7B3(oRyxxQKCM{&>l=?qS95&7klJ?Z%v^m%%Rd}z7IALH86;kUTBcKE;j z^;?IRJ39L3IM=uL=OLVRf6n2A`*|JL_+Bo0y`JOT3~}Da++H^P6OT?E9y})cv^^io z@r37X18!~@>v!hT%;AH%=lygF*Efp%avt;fayM6}jQlws@P7S_OY25H{jvJ36CUD} z=V=2T_VaCT&iXt(m7DTwxy+ApZT-0ZIFGIn{*EgPgcmz5`sC*i@63r@_)so+eyZHv zH1Zq!`6l6Kx#{!opPcde`yG#XJ_pKieqEno&iQ$>C6~5}>+i>-JBQEU&UWEzxHnh$ zL7rGV{2pgLFF*0%6p=4=eDoPxGQ1g2EEXbdyEuPhwdlJ97l*>@ zaB8XW4xFAod`N%&G~qvT#^?LZJixDT)$8{~f4%Q7Go2WHx?cZfx#|9F##!_1$pt=& z%dvlZU@r0rJj7>mw;lUOxXm|mgYV`lKhfX+kJ$f8e?Nb~HU1B$d5V+c zehlyc_nwUFEyQEIJU4lre(rv5!6Wirxy(h*^RYb4r}4xSasCB7&UJ3_?UOy}&lma4 zmihJdeS%jxHT))z9u@wHlRVEUvA=m}RG6keP=?%#&o+CK6FIK5-|Jg$2_Zs);6B7c#q{7v6` zMLzh4IKQ`Bcx7(x9NwKe)PpzyX_;L>DIdLHsO z#Gf}$;=;}0b2!Ua@etp^1Ki^An_~Zq+~$9BlfUK>p8Ai`r^0h`ftTQ6UY&<{Qy$ko{dJs>Kf)RN-{LX%<7=LfCZzy1G|H{?HXm1jFU z&hH*x{`LFBf_*o`%W;R-<%ab+uJYboki9Dk3Ih>MT%}M?%cMpnwk8zt{vL7#?fO12`s~X^K9+M_zQ+z8Y`62EVWVeA};U^oaK9XnE$~k z?(hJA!U_JKdpE~CGyFN`?eP5E;^nx>>+%S1!xb)Yk&oaU|DK2W0#5ODJivGI#7)un z2_EOyxXu6KCQopUr@JubE%Usb=Vds{YjK*l5t7yc?JK5H9dZoaJ+Qn6Ks`zMTj8 zAx`iM+`S?CkMkIR#Vwxl;+VI=vvZXf;}WmR1>Tsmyb}-e0i5D8C;3dCxIX$`%3Z#R zJA5Cv_!(~U+g#_*xynCtiD$Va<}YxHbDZX3UY}FE9VdAop7=}5b2N|h>D=avd6aMD zI*)RVpW-sV$wmH@v-|_6dB%~LH^mF^058uI*G2#Jc${-Q#(VK7AIWw816TP%F7aQu zz;|($pX4;Z&MEG4lK;oOYoq`4m&Uvuo{!tSERXU!+~BRb#(Q#^59cCRILGJnFkj0l z{yQi6aqe9c{a@uV{+L_*9XC07SF{0NWmOI+a(xX9mdj;Fai=FRY2Jj6@#0I$XqS4ZDXc$|0UF)s2bAJ26@i)(y2 zm-$vM@`Ie?=Xsdl;}rKe$%!js-riNwe^&1BBHZGYxyBoDnRnzO@6UNYjx${4G+)Yt zd^0EbKJH!_eV^emew#=6bFTAGT;rLqjQK0P5SKX31zw-Cyd9@`A5QU6oaEEEcSZES zh&y}(kMccS=Qh{)4KDMiT;v}(&of@-`Q`;U&CBs1ugeMEhP#(X{{naT2yXGI+~7ZR zmH)yezKiqxBxm?_9^!xTAWv|Dr@K1l?Oqmr=jAb8hFiQgH+U`n=Qzvn@-TnNL!7ua<{jW!dE(;ey9jrAWgg>=c$9bKI`7X_K8{OV z0Oxpl&hWZC$Xj!gf6Ehpj=qQU zI9IsM=W~;<`x5IOBi)m89tcP zd?F9>Ih^Dxc)S+uJe0b<{lS#iW_6z9M8tXyeOx56;ATT+&eG&?Zo4} zKezcfZgQ2Yd?}asX3q2doZ)9V&F}Caf58d*(>xCk^3t5(wYc}E=({C% zcn@yzVcg)8xyI*mnXl#|H#x_T@G!r`L;L{`@;98|X>N{ryJtuLIeCni;89+k8=U1D z@4{t1hztBX9_BxBim&7(-_E_WqTj>Z;TO2Y|El-xWKD&mN(%v z@61Uqa_`LOdpvjeOm6dK+~iw$gdgAvKgUIWmvj6jXE<@I=b2~aL0*ItyfXKy(SJkk z@DAMK{kX};@(7>76&~Rt-^4k-kB9gf9^kh*!Jl*YjOhClkMYd6#r&hZ5H~o@HC~^~ zyd4*KAI|d8oZ{0t$rp3)kJ0Z&?(jX_;x;$<4X*L0T;d-%&oka0^JaJf9^&PBfY;-R z)1zOGJG>XS`3P?EsXW4e<_iCXi+mSn_(>k(*Lje;oZ$a)_q6Cc{T(rHo9E*uFT*3e zHdlBnF7lq7@?+?-M@7&?Xxy`TgD1Xd#{*G&$Y{tB0o`(y(G-r7& zPV<&L$a`>-598jc(f<@4=Nh;98gBC6xXzDpm0#f!f5dtIFAwu?{u=Y9c#xC46!(4~ zeb?j;Z^13zof~{8*Z5>E^Lbq0I%oN>oZ?40$uD!S68%2p4u8unp7w7sZba zhk1}U<0S9Oy_2K=!Q9~!xy9#jgRkNm-@#>Wae-gtEdP_!{522o)OW_b6DLK#IeDCy z;5M($P0sQN@4^*6hztBX&hno)%~$du-_8ksn7b!N-!UHJ_j#26!*!nOu9&yRb8wj# z=OVAhIo^~roaZ4vkO%k#PVm{>{ay6Gf;)U0xA-A$@C!V`<6PmdxX4r9?Rnmy0~c$MYzk#dW@%YkVtL_(3l5^PK1RILkdA<|*!pc~d+aCwWmG zKR)JJh1vpjHb%%A3k zd5~A)1aHXQW25g5JjVNRosZ=zpTT(^;SArz3BHfJ$HaNhaGl@gDu2!;{+aVU%Y89# zhEqJmEAjwuz!OKu`P*}c_vIEJ!wvo;kMJd2;RYA^Ue58;oaVQ9kpImI{)u}>Mc+uc9*FTi8GJdg5vT<08Dd9TTy^#4yN&A0fkf8YL89vci_@&9}$|K+5}pXT&7 z;U16jTn|OxO1~c`{u=!^n(RsE4<8@DWU+VAYZht@j z%;Q_f`Z*qn{ykor6P}+85AaT$;zPK!LtO7vuKqSW!o!8|?c9|=&K-V}dwa+F9yj+5 zPy1-}o#6SobWr3gah|iBI5hG-dHj&@(Of({d=@vk&Y2@4zniQ4EZ6y;+~tXWo{#lYD&M$dBQc&xf=7ULf*ocyyuglU$lV{2BK)3{UyE^F0sq z^Z1^Tug=3;gtzJE+l3F|s`q=XZ?D&#oH#7jzsa3aIPpZBKkWUyASc$3d~F{0{@Rrr z^F)3em-Y`|%7vrD_w;k?U*)vVhp)K2O01vh$>=j7U!Di{i+md%;iGuS{kWuW@6U%h zu~qEZ0o<;XYU zkzK+?ZtfI5hqH@?@8Hq_;TL&u_3+o6^!YgFQ*qwVYLTzXE${zbx$XUR8kZK2_1AO3 z>;E_pc)dU5iS=UrZ=R0x5}xlNPVX4`PMlgJd=i(J3fH;n{D-)*QsnP(edF-YJmG#X z_Dq~V?(=#>PP$+Fa4Hx3&*$Pk;UCCD|m?S-~oP=Cti>9U*)R4|Kf4^_uS^0UWoacoZ=B)nJc^r7kL-X z@gY3Sr*Mid;3QwqC4KMV?rSm6)7<8FxX3-u@>F9n&k)bWNnVOOug3M)=26~;M|f{8 z^D&&$_YBUHrKex*Kv*S<`O@}Iewed{3Q?YlrP0Ry_e$rIe9?eC3#G~CO3I29^nF)`6$lw zA34L9@(|z3Nq(5SFGjzYc#J>d-p7%D$4&Y4FUNc%yZ~1?%>~|&GrSY0_&`qbiQFBF z^UvckzLuMOS3lSHA6%2a$z}eW3!Hc*=E?BvJj6?IlGotw3(;>&9^>C~laJ&YpU$KD zUd&Z)aLM}nInU2?hTrEDf5S=s&8wcr=cDhu+~MW8#Tl;i_FU!txu|cMOY*Zh&sXs< z|CLkxI4Aja?mZWMKjjYp#4R3pE#_>- z-}|`3&+#aabDh8DDo^`*%#+r4kW2DqILGVu*YmbK!25FVndo;MkMUXD6X*GU&hm3S z#P9MT_qg+Z^qKOlm@mt7@DMM-Ngn2j@z}pPcX)Sh^I_cJQ@G0KbCIv(EZ@Z`ev*^i z;qH6U=TmO;k37mVza8_|y}wdi;gz_+8}W$!J91Wj0H^tQ9^kWi;;HC&C3pA^9_2^4 z&M$L?KjI>P$6224ok{ae`h9V7wdE6&{wJ|0m$nXXzysHY_u|xexWZMwnkz3v{s0fR z!W|x6Er59PuSaa;c{IQQ?!XL>KL-+L>(0@q&& z=eV(U_%Lqf!!^$7e>30uP2`VqW%=-j+#L(gG9Kp-uN+>Q^9O`C;f~j%z!Pgl{yQ#P zU+3P6kw3!Cr^8*&KNgpvfNeg9s0vL`(VldKAJg}<;mf#n zR`{O2uM5A#rB}nB^Z3T$8UGpQjeZ_pm`B|IHMxFEu}ENw-;BOe>&&Qdoy>}i~Y~?&^F=ExN%H)`VZs0VXxoP zoI5k}&AG8d_@K$2^!oL@UZ=^EUf-)Yy=$z0u%EmBt31S?bC#$1$m_9c>|cP3neeKd z<*hieQRMq^lTYHx7Li}nw|Q>k#*UFc!PT9^?{L=p?^_<`nLdubW4pxq#ksS4cpc8} z5#EvOd?=6X75V9$-Y z%g6AL=jR+QoDlo3=fv;A4|17bWJW1m}(lzr$lkhri{felvX%eUqm|zBniT5MHOBdq3^SEk2a%KEF=q zCSTd#@AKm>uALXxe~!!Nhd<&L|HK`h^HY5&H}8u_Z6;jOrGW#s#D=lbwTobq{j5f}M39^)rC zs$|c`dPUk#d$t^$s?&8|Z zvHv-4@JF0`HS(Xh`bK!p&!cahm*asqBj1?E-U{!*Z9azcA4Pr+XFd*J&lCJ0H$RK~ z)&BZV!k_oo%cuEbQol(*Un;)8E-=}Xz7KTPj`f@K#NWaPaLec6g-`8Aoz1ja0eQNK=`Zc-h_1J++M@N1bx7G@u*E9s4igS^L!iU71oROtM~2o-_w+xp!%a?J&^L`I^ z_lWgxaO$1#*IZjCJo|TXero;jFb}*J-iO;;h0p4*cfTLtrq}mlF6cMoL|lK2SK`zK zalJjbHy%E@@4tkv=&wI1d_R|u4Zp#OgTvqTeNlLx|Hb(k@4vOU`fTL8@Tm9SaXeCu zyf)dBKA$^39P{g+*DvSll*j(+o4CZIoacXVhF{|${)iL&4R@!A>reH4oIl31@hC6M zbxw1Y*W)s8#RcA-hxuSm@d=#dGr5patsaet~jKNoo!&hZ*N%vm1boq6KNIDda`c|RP(4L*&l{AVulwVda_ za)w(x?!4!Dl;7q$f67&!nCwa4pE8dv^6UF^mY>4&kA)YT>`CwEVdt&Ib??8N^_k~l z{oeA1{CIi&$;i*)CSSuXzKh5BDIVu{xW`{{;vaGSX?~9W13V9>csWk<`kdh%ImZWb zfluPGXXCu{CwtQUDY>6F$g__}-sY11A9LCLp7NLI+rR&FbJ_l7CwtQM6T2Pp>+3Vj z$#;+Z)tmCfJK>$V%f-HTjr}L^82^b!`6{k+ldJqFm-rRV^T(Xw2_E9<6Eprg&j8QQ zWBM+~6T3v;^?01OobO+JQ4_zbS_rCj7&IL8n2Fu%YlexFD6{SPPQQ%@1|_43hw zF7EIUkMf#4!dr5M_v8YXIK!uMiZA2@-@tW!@8R*Cqu*29;-le7qZ^zHSrMYVT+FazVIm-ne;v+f9r*U`d=yx%iZ>U0w~9WibDKBg2JgmIK9q}m3TOFz9^&h`qwk%Zlt0PcEu&9|+x#gv_(!ht z%+tlZMNV;+SK=Ywh?Be%cejZ1i`>@t_`c<5bAzwsD&N6HeuSHw$Ms+CuirHM5tsNo z&hvEB$9x%{kB4|U9@TeU9+2mFVv{&;Zyx8Pxy^s%29I!!Z{{*TzSYCBJRBr^WVVZd=HOtn_K(_H~CYp z^AB9(8E1}pE4%=gcsVZcx}4)}IKu@_^ASA2r}9K6=KC{`^Iv$3@8T9e$qjy;NBCb{ zeiJkN7S-*ygMiOQ0}fB z{ZHmGK95Ja&UOAPSNTyc@ynd&5Bt{l8_vk5nLFkk;<7C<92cywa+WXUG~djFd_O1nS?;b8^Sr}j`~{ElFI?w=d1C%5FU$k_uE-_%2At>Z zIm7$%5Ff(>{70S`j=q=hI5)V>_i~e;<`I626Z(F}75R@`+%v;`S)Dn3pmf$afa{YA%21f_%)tbHTwRG$9aO=Jl*^;@0h;x za8tfCkMLSt;VrqydvJ~q<6%C9Q(WUDU&FmsqW|Bx!;f)O-

      536=(oRuD&zDgJVZRnyY?}) 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ྍ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ð48woQ#Jo-LicS8mo})(S*#mhA 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 D)l8@b literal 0 HcmV?d00001 diff --git a/bsconfig.json b/bsconfig.json index 25a15763..0f498d8f 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -8,7 +8,7 @@ "suffix": ".bs.js", "sources": [ { - "dir": "bucklescript", + "dir": "rescript-runtime", "subdirs": true } ], diff --git a/bucklescript/GraphQL_PPX.bs.js b/bucklescript/GraphQL_PPX.bs.js deleted file mode 100644 index 60058f0d..00000000 --- a/bucklescript/GraphQL_PPX.bs.js +++ /dev/null @@ -1,42 +0,0 @@ -// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE - - -function deepMerge(json1, json2) { - var match_000 = json1 === null; - var match_001 = Array.isArray(json1); - var match_002 = typeof json1 === "object"; - var match_000$1 = json2 === null; - var match_001$1 = Array.isArray(json2); - var match_002$1 = typeof json2 === "object"; - if (match_001) { - if (match_001$1) { - return json1.map((function (el1, idx) { - var el2 = json2[idx]; - if (typeof el2 === "object") { - return deepMerge(el1, el2); - } else { - return el2; - } - })); - } else { - return json2; - } - } else if (match_000 || !(match_002 && !(match_000$1 || match_001$1 || !match_002$1))) { - return json2; - } else { - var obj1 = Object.assign({ }, json1); - Object.keys(json2).forEach((function (key) { - var existingVal = obj1[key]; - var newVal = json2[key]; - obj1[key] = typeof existingVal !== "object" ? newVal : deepMerge(existingVal, newVal); - return /* () */0; - })); - return obj1; - } -} - -export { - deepMerge , - -} -/* No side effect */ diff --git a/bucklescript/GraphQL_PPX.re b/bucklescript/GraphQL_PPX.re deleted file mode 100644 index d72cee06..00000000 --- a/bucklescript/GraphQL_PPX.re +++ /dev/null @@ -1,52 +0,0 @@ -// will be inlined by bucklescript -let%private clone: Js.Dict.t('a) => Js.Dict.t('a) = - a => Obj.magic(Js.Obj.assign(Obj.magic(Js.Obj.empty()), Obj.magic(a))); - -// merging two json objects deeply -let rec deepMerge = (json1: Js.Json.t, json2: Js.Json.t) => { - switch ( - ( - Obj.magic(json1) == Js.null, - Js_array2.isArray(json1), - Js.typeof(json1) == "object", - ), - ( - Obj.magic(json2) == Js.null, - Js_array2.isArray(json2), - Js.typeof(json2) == "object", - ), - ) { - // merge two arrays - | ((_, true, _), (_, true, _)) => ( - Obj.magic( - Js.Array.mapi( - (el1, idx) => { - let el2 = Js.Array.unsafe_get(Obj.magic(json2), idx); - // it cannot be undefined, because two arrays should always be the - // same length in graphql responses - Js.typeof(el2) == "object" ? deepMerge(el1, el2) : el2; - }, - Obj.magic(json1), - ), - ): Js.Json.t - ) - // two objects that are not null and not arrays - | ((false, false, true), (false, false, true)) => - let obj1 = clone(Obj.magic(json1)); - let obj2 = Obj.magic(json2); - Js.Dict.keys(obj2) - |> Js.Array.forEach(key => { - let existingVal: Js.Json.t = Js.Dict.unsafeGet(obj1, key); - let newVal: Js.Json.t = Js.Dict.unsafeGet(obj2, key); - Js.Dict.set( - obj1, - key, - Js.typeof(existingVal) != "object" - ? newVal : Obj.magic(deepMerge(existingVal, newVal)), - ); - }); - Obj.magic(obj1); - // object that becomes null - | ((_, _, _), (_, _, _)) => json2 - }; -}; diff --git a/build_m1.sh b/build_m1.sh new file mode 100755 index 00000000..a720884c --- /dev/null +++ b/build_m1.sh @@ -0,0 +1,4 @@ +#!/bin/bash +esy b +mkdir -p bin +cp _build/default/src/bin/bin.exe binaries/darwin-arm64/bin.exe diff --git a/convert_to_ml.sh b/convert_to_ml.sh new file mode 100755 index 00000000..4e359451 --- /dev/null +++ b/convert_to_ml.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo FILE: $1 +FILE=$1 +NO_EXT="${FILE%.*}" +esy x refmt --parse re -p ml $FILE > $NO_EXT.mlx && rm $FILE &&mv $NO_EXT.mlx $NO_EXT.ml diff --git a/copyPlatformBinaryInPlace.js b/copyPlatformBinaryInPlace.js index 4d53f8dd..e54372ef 100644 --- a/copyPlatformBinaryInPlace.js +++ b/copyPlatformBinaryInPlace.js @@ -13,11 +13,6 @@ if (platform === "win32") { platform = "win"; } -// Workaround for darwin arm64 to use Rosetta for now -if (platform === "darwin" && arch === "arm64") { - arch = "x64"; -} - copyBinary("bin/graphql-ppx-" + platform + "-" + arch + ".exe", "ppx"); function copyBinary(filename, destFilename) { diff --git a/documentation/docs/installation-on-bucklescript.md b/documentation/docs/installation-on-rescript.md similarity index 100% rename from documentation/docs/installation-on-bucklescript.md rename to documentation/docs/installation-on-rescript.md diff --git a/dune b/dune index 293ddaed..22497090 100644 --- a/dune +++ b/dune @@ -1 +1 @@ -(dirs src tests_native tests_bucklescript) +(dirs src tests_native snapshot_tests) diff --git a/dune-workspace b/dune-workspace index 50da1a36..9f28c516 100644 --- a/dune-workspace +++ b/dune-workspace @@ -1,3 +1,8 @@ (lang dune 1.1) -(env (release-static (flags (:standard -ccopt -static)))) +(env + (release-static + (flags + (:standard -ccopt -static))) + (release + (flags (:standard)))) diff --git a/esy.json b/esy.json index 2b2b10d8..07aa87f3 100644 --- a/esy.json +++ b/esy.json @@ -2,28 +2,23 @@ "name": "graphql_ppx", "description": "Used for native Reason/OCaml using latest version of OCaml", "scripts": { - "watch": "esy refmterr dune build --promote-install-files --root . --watch", + "watch": "esy dune build --promote-install-files --root . --watch", "format": "esy dune build @fmt --auto-promote", "release-static": "dune build --root . --only-packages '#{self.name}' --ignore-promoted-rules --no-config --profile release-static", - "test": "dune exec tests_bucklescript/tests/RunTests.exe --" + "test": "./tests.sh" }, "dependencies": { - "@opam/dune": "*", - "@opam/ppxlib": ">=0.21.0", - "@opam/reason": ">=3.6.0", - "@opam/yojson": "*" + "@opam/ppxlib": ">=0.21.0" }, "devDependencies": { - "@opam/ocaml-lsp-server": "*", + "@opam/dune": "*", + "@opam/ocaml-lsp-server": "1.10.1", "@opam/merlin": "*", - "@opam/alcotest": "*", - "ocaml": "~4.12.0", - "@reason-native/rely": "jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "refmterr": "jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18" + "ocaml": "4.13.1000" }, "esy": { "build": "dune build -p #{self.name}", - "buildDev": "refmterr dune build --promote-install-files --root .", + "buildDev": "dune build --promote-install-files --root .", "buildsInSource": "_build" } } diff --git a/esy.lock/index.json b/esy.lock/index.json index 9aecf31a..f7c1acc5 100644 --- a/esy.lock/index.json +++ b/esy.lock/index.json @@ -1,39 +1,15 @@ { - "checksum": "fb4a23bfcaedeeb94cbb5006ff140c93", + "checksum": "9bf1352af64a084601aabd3bd6f70a67", "root": "graphql_ppx@link-dev:./esy.json", "node": { - "refmterr@github:jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "refmterr@github:jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "refmterr", - "version": - "github:jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@reason-native/console@github:jfrolich/reason-native:console.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@opam/reason@opam:3.7.0@494dd52d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/atdgen@opam:2.2.1@6ace3080" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/reason@opam:3.7.0@494dd52d" - ] - }, - "ocaml@4.12.0@d41d8cd9": { - "id": "ocaml@4.12.0@d41d8cd9", + "ocaml@4.13.1000@d41d8cd9": { + "id": "ocaml@4.13.1000@d41d8cd9", "name": "ocaml", - "version": "4.12.0", + "version": "4.13.1000", "source": { "type": "install", "source": [ - "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.12.0.tgz#sha1:2a979f37535faaded8aa3fdf82b6f16f2c71e284" + "archive:https://registry.npmjs.org/ocaml/-/ocaml-4.13.1000.tgz#sha1:0a90128c74d5a3dd6d30e82a759694eb0a05859f" ] }, "overrides": [], @@ -46,124 +22,14 @@ "version": "link-dev:./esy.json", "source": { "type": "link-dev", "path": ".", "manifest": "esy.json" }, "overrides": [], - "dependencies": [ - "@opam/yojson@opam:1.7.0@69d87312", - "@opam/reason@opam:3.7.0@494dd52d", - "@opam/ppxlib@opam:0.22.2@61009929", "@opam/dune@opam:2.9.0@489e77a9" - ], + "dependencies": [ "@opam/ppxlib@opam:0.24.0@4c00d6db" ], "devDependencies": [ - "refmterr@github:jfrolich/reason-native:refmterr.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "ocaml@4.12.0@d41d8cd9", - "@reason-native/rely@github:jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@opam/ocaml-lsp-server@opam:1.7.0@2cdbe0ed", - "@opam/merlin@opam:4.2-412@845ccff0", - "@opam/alcotest@opam:1.4.0@827862b4" + "ocaml@4.13.1000@d41d8cd9", + "@opam/ocaml-lsp-server@opam:1.10.1@48c84271", + "@opam/merlin@opam:4.4-413@72d13f31", + "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@reason-native/rely@github:jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "@reason-native/rely@github:jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "@reason-native/rely", - "version": - "github:jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:rely.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@reason-native/file-context-printer@github:jfrolich/reason-native:file-context-printer.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@reason-native/cli@github:jfrolich/reason-native:cli.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@opam/stdlib-shims@opam:0.3.0@0d088929", - "@opam/reason@opam:3.7.0@494dd52d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9" - ], - "devDependencies": [] - }, - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "@reason-native/pastel", - "version": - "github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/reason@opam:3.7.0@494dd52d", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9" - ], - "devDependencies": [] - }, - "@reason-native/file-context-printer@github:jfrolich/reason-native:file-context-printer.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "@reason-native/file-context-printer@github:jfrolich/reason-native:file-context-printer.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "@reason-native/file-context-printer", - "version": - "github:jfrolich/reason-native:file-context-printer.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:file-context-printer.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@opam/reason@opam:3.7.0@494dd52d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9" - ], - "devDependencies": [] - }, - "@reason-native/console@github:jfrolich/reason-native:console.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "@reason-native/console@github:jfrolich/reason-native:console.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "@reason-native/console", - "version": - "github:jfrolich/reason-native:console.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:console.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/reason@opam:3.7.0@494dd52d", - "@opam/dune@opam:2.9.0@489e77a9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, - "@reason-native/cli@github:jfrolich/reason-native:cli.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9": { - "id": - "@reason-native/cli@github:jfrolich/reason-native:cli.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "name": "@reason-native/cli", - "version": - "github:jfrolich/reason-native:cli.json#08085a4048974b06aaf3aab918b677b39dea3d18", - "source": { - "type": "install", - "source": [ - "github:jfrolich/reason-native:cli.json#08085a4048974b06aaf3aab918b677b39dea3d18" - ] - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", - "@reason-native/pastel@github:jfrolich/reason-native:pastel.json#08085a4048974b06aaf3aab918b677b39dea3d18@d41d8cd9", - "@opam/reason@opam:3.7.0@494dd52d", "@opam/re@opam:1.9.0@9373f267", - "@opam/dune@opam:2.9.0@489e77a9" - ], - "devDependencies": [] - }, "@opam/yojson@opam:1.7.0@69d87312": { "id": "@opam/yojson@opam:1.7.0@69d87312", "name": "@opam/yojson", @@ -182,143 +48,64 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/cppo@opam:1.6.7@57a6d52c", + "ocaml@4.13.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/cppo@opam:1.6.8@7e48217d", "@opam/biniou@opam:1.2.1@420bda02", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02" - ] - }, - "@opam/uutf@opam:1.0.2@4440868f": { - "id": "@opam/uutf@opam:1.0.2@4440868f", - "name": "@opam/uutf", - "version": "opam:1.0.2", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/a7/a7c542405a39630c689a82bd7ef2292c#md5:a7c542405a39630c689a82bd7ef2292c", - "archive:http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz#md5:a7c542405a39630c689a82bd7ef2292c" - ], - "opam": { - "name": "uutf", - "version": "1.0.2", - "path": "esy.lock/opam/uutf.1.0.2" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea", - "@opam/topkg@opam:1.0.3@e4e10f1c", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "@opam/cmdliner@opam:1.0.4@93208aac", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/uchar@opam:0.0.2@c8218eea" + "ocaml@4.13.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/biniou@opam:1.2.1@420bda02" ] }, - "@opam/uuidm@opam:0.9.7@bf725775": { - "id": "@opam/uuidm@opam:0.9.7@bf725775", - "name": "@opam/uuidm", - "version": "opam:0.9.7", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/54/54658248e3981d8c05237d0a4277ccd3#md5:54658248e3981d8c05237d0a4277ccd3", - "archive:https://erratique.ch/software/uuidm/releases/uuidm-0.9.7.tbz#md5:54658248e3981d8c05237d0a4277ccd3" - ], - "opam": { - "name": "uuidm", - "version": "0.9.7", - "path": "esy.lock/opam/uuidm.0.9.7" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "@opam/cmdliner@opam:1.0.4@93208aac", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, - "@opam/uchar@opam:0.0.2@c8218eea": { - "id": "@opam/uchar@opam:0.0.2@c8218eea", - "name": "@opam/uchar", - "version": "opam:0.0.2", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/c9/c9ba2c738d264c420c642f7bb1cf4a36#md5:c9ba2c738d264c420c642f7bb1cf4a36", - "archive:https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz#md5:c9ba2c738d264c420c642f7bb1cf4a36" - ], - "opam": { - "name": "uchar", - "version": "0.0.2", - "path": "esy.lock/opam/uchar.0.0.2" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, - "@opam/topkg@opam:1.0.3@e4e10f1c": { - "id": "@opam/topkg@opam:1.0.3@e4e10f1c", - "name": "@opam/topkg", - "version": "opam:1.0.3", + "@opam/stdlib-shims@opam:0.3.0@72c7bc98": { + "id": "@opam/stdlib-shims@opam:0.3.0@72c7bc98", + "name": "@opam/stdlib-shims", + "version": "opam:0.3.0", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/md5/e2/e285f7a296d77ee7d831ba9a6bfb396f#md5:e285f7a296d77ee7d831ba9a6bfb396f", - "archive:http://erratique.ch/software/topkg/releases/topkg-1.0.3.tbz#md5:e285f7a296d77ee7d831ba9a6bfb396f" + "archive:https://opam.ocaml.org/cache/sha256/ba/babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a", + "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a" ], "opam": { - "name": "topkg", - "version": "1.0.3", - "path": "esy.lock/opam/topkg.1.0.3" + "name": "stdlib-shims", + "version": "0.3.0", + "path": "esy.lock/opam/stdlib-shims.0.3.0" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/ocamlbuild@opam:0.14.0@6ac75d03" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/stdlib-shims@opam:0.3.0@0d088929": { - "id": "@opam/stdlib-shims@opam:0.3.0@0d088929", - "name": "@opam/stdlib-shims", - "version": "opam:0.3.0", + "@opam/spawn@opam:v0.15.0@4a27a4cb": { + "id": "@opam/spawn@opam:v0.15.0@4a27a4cb", + "name": "@opam/spawn", + "version": "opam:v0.15.0", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/ba/babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a", - "archive:https://github.com/ocaml/stdlib-shims/releases/download/0.3.0/stdlib-shims-0.3.0.tbz#sha256:babf72d3917b86f707885f0c5528e36c63fccb698f4b46cf2bab5c7ccdd6d84a" + "archive:https://opam.ocaml.org/cache/sha256/31/310fb2a50ac7f64c738182cbabd9d27c1aeae1a08107fe14da8d35a87cbb57c7#sha256:310fb2a50ac7f64c738182cbabd9d27c1aeae1a08107fe14da8d35a87cbb57c7", + "archive:https://github.com/janestreet/spawn/archive/v0.15.0.tar.gz#sha256:310fb2a50ac7f64c738182cbabd9d27c1aeae1a08107fe14da8d35a87cbb57c7" ], "opam": { - "name": "stdlib-shims", - "version": "0.3.0", - "path": "esy.lock/opam/stdlib-shims.0.3.0" + "name": "spawn", + "version": "v0.15.0", + "path": "esy.lock/opam/spawn.v0.15.0" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, "@opam/sexplib0@opam:v0.14.0@155c136c": { @@ -339,11 +126,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, "@opam/seq@opam:base@d8d7de1d": { @@ -361,9 +148,9 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + "devDependencies": [ "ocaml@4.13.1000@d41d8cd9" ] }, "@opam/result@opam:1.5@1c6a6533": { "id": "@opam/result@opam:1.5@1c6a6533", @@ -383,105 +170,69 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/reason@opam:3.7.0@494dd52d": { - "id": "@opam/reason@opam:3.7.0@494dd52d", - "name": "@opam/reason", - "version": "opam:3.7.0", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/7e/7eb8cbbff8565b93ebfabf4eca7254d4#md5:7eb8cbbff8565b93ebfabf4eca7254d4", - "archive:https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.7.0.tgz#md5:7eb8cbbff8565b93ebfabf4eca7254d4" - ], - "opam": { - "name": "reason", - "version": "3.7.0", - "path": "esy.lock/opam/reason.3.7.0" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", - "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/merlin-extend@opam:0.6@88755c91", - "@opam/menhir@opam:20210419@11c42419", - "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.0@489e77a9", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/result@opam:1.5@1c6a6533", - "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", - "@opam/merlin-extend@opam:0.6@88755c91", - "@opam/menhir@opam:20210419@11c42419", - "@opam/fix@opam:20201120@0b212fb9", "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/re@opam:1.9.0@9373f267": { - "id": "@opam/re@opam:1.9.0@9373f267", + "@opam/re@opam:1.10.3@0585c65d": { + "id": "@opam/re@opam:1.10.3@0585c65d", "name": "@opam/re", - "version": "opam:1.9.0", + "version": "opam:1.10.3", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/md5/bd/bddaed4f386a22cace7850c9c7dac296#md5:bddaed4f386a22cace7850c9c7dac296", - "archive:https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz#md5:bddaed4f386a22cace7850c9c7dac296" + "archive:https://opam.ocaml.org/cache/sha256/84/846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb", + "archive:https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz#sha256:846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" ], "opam": { "name": "re", - "version": "1.9.0", - "path": "esy.lock/opam/re.1.9.0" + "version": "1.10.3", + "path": "esy.lock/opam/re.1.10.3" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", - "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/seq@opam:base@d8d7de1d", + "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/ppxlib@opam:0.22.2@61009929": { - "id": "@opam/ppxlib@opam:0.22.2@61009929", + "@opam/ppxlib@opam:0.24.0@4c00d6db": { + "id": "@opam/ppxlib@opam:0.24.0@4c00d6db", "name": "@opam/ppxlib", - "version": "opam:0.22.2", + "version": "opam:0.24.0", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/d0/d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a#sha256:d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a", - "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.22.2/ppxlib-0.22.2.tbz#sha256:d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a" + "archive:https://opam.ocaml.org/cache/sha256/77/7766027c2ecd0f5b3b460e9212a70709c6744278113eb91f317c56c41e7a90c8#sha256:7766027c2ecd0f5b3b460e9212a70709c6744278113eb91f317c56c41e7a90c8", + "archive:https://github.com/ocaml-ppx/ppxlib/releases/download/0.24.0/ppxlib-0.24.0.tbz#sha256:7766027c2ecd0f5b3b460e9212a70709c6744278113eb91f317c56c41e7a90c8" ], "opam": { "name": "ppxlib", - "version": "0.22.2", - "path": "esy.lock/opam/ppxlib.0.22.2" + "version": "0.24.0", + "path": "esy.lock/opam/ppxlib.0.24.0" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@0d088929", + "ocaml@4.13.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98", "@opam/sexplib0@opam:v0.14.0@155c136c", - "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", - "@opam/ocaml-migrate-parsetree@opam:2.2.0@d1434b92", - "@opam/ocaml-compiler-libs@opam:v0.12.3@316a19dc", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", + "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@0d088929", + "ocaml@4.13.1000@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@72c7bc98", "@opam/sexplib0@opam:v0.14.0@155c136c", - "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", - "@opam/ocaml-migrate-parsetree@opam:2.2.0@d1434b92", - "@opam/ocaml-compiler-libs@opam:v0.12.3@316a19dc", - "@opam/dune@opam:2.9.0@489e77a9" + "@opam/ppx_derivers@opam:1.2.1@e2cbad12", + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", + "@opam/dune@opam:2.9.3@f57a6d69" ] }, "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997": { @@ -502,16 +253,16 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/ppx_derivers@opam:1.2.1@ecf0aa45": { - "id": "@opam/ppx_derivers@opam:1.2.1@ecf0aa45", + "@opam/ppx_derivers@opam:1.2.1@e2cbad12": { + "id": "@opam/ppx_derivers@opam:1.2.1@e2cbad12", "name": "@opam/ppx_derivers", "version": "opam:1.2.1", "source": { @@ -528,11 +279,11 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, "@opam/pp@opam:1.1.2@89ad03b5": { @@ -553,345 +304,161 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/ocamlfind@opam:1.9.1@b748edf6": { - "id": "@opam/ocamlfind@opam:1.9.1@b748edf6", - "name": "@opam/ocamlfind", - "version": "opam:1.9.1", + "@opam/ocamlformat-rpc-lib@opam:0.19.0@125cf11d": { + "id": "@opam/ocamlformat-rpc-lib@opam:0.19.0@125cf11d", + "name": "@opam/ocamlformat-rpc-lib", + "version": "opam:0.19.0", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/md5/65/65e6dc9b305ccbed1267275fe180f538#md5:65e6dc9b305ccbed1267275fe180f538", - "archive:http://download.camlcity.org/download/findlib-1.9.1.tar.gz#md5:65e6dc9b305ccbed1267275fe180f538" + "archive:https://opam.ocaml.org/cache/sha256/62/62fc46aae8f0a4a33ce7f8d7726d7109bff615ea6fcb50d1482f21d20ee50f46#sha256:62fc46aae8f0a4a33ce7f8d7726d7109bff615ea6fcb50d1482f21d20ee50f46", + "archive:https://github.com/ocaml-ppx/ocamlformat/releases/download/0.19.0/ocamlformat-0.19.0.tbz#sha256:62fc46aae8f0a4a33ce7f8d7726d7109bff615ea6fcb50d1482f21d20ee50f46" ], "opam": { - "name": "ocamlfind", - "version": "1.9.1", - "path": "esy.lock/opam/ocamlfind.1.9.1" + "name": "ocamlformat-rpc-lib", + "version": "0.19.0", + "path": "esy.lock/opam/ocamlformat-rpc-lib.0.19.0" } }, - "overrides": [ - { - "opamoverride": - "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override" - } - ], + "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] + "devDependencies": [ + "ocaml@4.13.1000@d41d8cd9", "@opam/sexplib0@opam:v0.14.0@155c136c", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7" + ] }, - "@opam/ocamlbuild@opam:0.14.0@6ac75d03": { - "id": "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "name": "@opam/ocamlbuild", - "version": "opam:0.14.0", + "@opam/ocamlfind@opam:1.9.3@5b691822": { + "id": "@opam/ocamlfind@opam:1.9.3@5b691822", + "name": "@opam/ocamlfind", + "version": "opam:1.9.3", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/87/87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78", - "archive:https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz#sha256:87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" + "archive:https://opam.ocaml.org/cache/md5/24/24047dd8a0da5322253de9b7aa254e42#md5:24047dd8a0da5322253de9b7aa254e42", + "archive:http://download.camlcity.org/download/findlib-1.9.3.tar.gz#md5:24047dd8a0da5322253de9b7aa254e42" ], "opam": { - "name": "ocamlbuild", - "version": "0.14.0", - "path": "esy.lock/opam/ocamlbuild.0.14.0" + "name": "ocamlfind", + "version": "1.9.3", + "path": "esy.lock/opam/ocamlfind.1.9.3" } }, "overrides": [ { "opamoverride": - "esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override" + "esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override" } ], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, - "@opam/ocaml-migrate-parsetree@opam:2.2.0@d1434b92": { - "id": "@opam/ocaml-migrate-parsetree@opam:2.2.0@d1434b92", - "name": "@opam/ocaml-migrate-parsetree", - "version": "opam:2.2.0", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/b2/b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1#sha256:b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1", - "archive:https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v2.2.0/ocaml-migrate-parsetree-v2.2.0.tbz#sha256:b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1" - ], - "opam": { - "name": "ocaml-migrate-parsetree", - "version": "2.2.0", - "path": "esy.lock/opam/ocaml-migrate-parsetree.2.2.0" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", - "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" - ] + "devDependencies": [ "ocaml@4.13.1000@d41d8cd9" ] }, - "@opam/ocaml-lsp-server@opam:1.7.0@2cdbe0ed": { - "id": "@opam/ocaml-lsp-server@opam:1.7.0@2cdbe0ed", + "@opam/ocaml-lsp-server@opam:1.10.1@48c84271": { + "id": "@opam/ocaml-lsp-server@opam:1.10.1@48c84271", "name": "@opam/ocaml-lsp-server", - "version": "opam:1.7.0", + "version": "opam:1.10.1", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/ca/ca43b6608366ddf891d7c1e1cc38de2c7f93a6da0511de164959db1f88fc42ed#sha256:ca43b6608366ddf891d7c1e1cc38de2c7f93a6da0511de164959db1f88fc42ed", - "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.7.0/jsonrpc-1.7.0.tbz#sha256:ca43b6608366ddf891d7c1e1cc38de2c7f93a6da0511de164959db1f88fc42ed" + "archive:https://opam.ocaml.org/cache/sha256/23/23006064074617974a7237443f4db6234e305b3b74eb7134bf870499cb59aafe#sha256:23006064074617974a7237443f4db6234e305b3b74eb7134bf870499cb59aafe", + "archive:https://github.com/ocaml/ocaml-lsp/releases/download/1.10.1/jsonrpc-1.10.1.tbz#sha256:23006064074617974a7237443f4db6234e305b3b74eb7134bf870499cb59aafe" ], "opam": { "name": "ocaml-lsp-server", - "version": "1.7.0", - "path": "esy.lock/opam/ocaml-lsp-server.1.7.0" + "version": "1.10.1", + "path": "esy.lock/opam/ocaml-lsp-server.1.10.1" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.9.0@9373f267", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/spawn@opam:v0.15.0@4a27a4cb", + "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.10.3@0585c65d", "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", "@opam/pp@opam:1.1.2@89ad03b5", - "@opam/dune-build-info@opam:2.9.0@c10d566f", - "@opam/dune@opam:2.9.0@489e77a9", - "@opam/dot-merlin-reader@opam:4.1@84436e1c", - "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/ocamlformat-rpc-lib@opam:0.19.0@125cf11d", + "@opam/dune-build-info@opam:2.9.3@ae518c8c", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.9.0@9373f267", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/spawn@opam:v0.15.0@4a27a4cb", + "@opam/result@opam:1.5@1c6a6533", "@opam/re@opam:1.10.3@0585c65d", "@opam/ppx_yojson_conv_lib@opam:v0.14.0@605a6997", "@opam/pp@opam:1.1.2@89ad03b5", - "@opam/dune-build-info@opam:2.9.0@c10d566f", - "@opam/dune@opam:2.9.0@489e77a9", - "@opam/dot-merlin-reader@opam:4.1@84436e1c", - "@opam/csexp@opam:1.5.1@8a8fb3a7" + "@opam/ocamlformat-rpc-lib@opam:0.19.0@125cf11d", + "@opam/dune-build-info@opam:2.9.3@ae518c8c", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, - "@opam/ocaml-compiler-libs@opam:v0.12.3@316a19dc": { - "id": "@opam/ocaml-compiler-libs@opam:v0.12.3@316a19dc", + "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882": { + "id": "@opam/ocaml-compiler-libs@opam:v0.12.4@41979882", "name": "@opam/ocaml-compiler-libs", - "version": "opam:v0.12.3", + "version": "opam:v0.12.4", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/a8/a8403531439c14bbda2d504ef93610fd29a8e9520fc700f21889d893a513e3c9#sha256:a8403531439c14bbda2d504ef93610fd29a8e9520fc700f21889d893a513e3c9", - "archive:https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.3/ocaml-compiler-libs-v0.12.3.tbz#sha256:a8403531439c14bbda2d504ef93610fd29a8e9520fc700f21889d893a513e3c9" + "archive:https://opam.ocaml.org/cache/sha256/4e/4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760#sha256:4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760", + "archive:https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz#sha256:4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760" ], "opam": { "name": "ocaml-compiler-libs", - "version": "v0.12.3", - "path": "esy.lock/opam/ocaml-compiler-libs.v0.12.3" + "version": "v0.12.4", + "path": "esy.lock/opam/ocaml-compiler-libs.v0.12.4" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/merlin-extend@opam:0.6@88755c91": { - "id": "@opam/merlin-extend@opam:0.6@88755c91", - "name": "@opam/merlin-extend", - "version": "opam:0.6", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/c2/c2f236ae97feb6ba0bc90f33beb7b7343e42f9871b66de9ba07974917e256c43#sha256:c2f236ae97feb6ba0bc90f33beb7b7343e42f9871b66de9ba07974917e256c43", - "archive:https://github.com/let-def/merlin-extend/releases/download/v0.6/merlin-extend-v0.6.tbz#sha256:c2f236ae97feb6ba0bc90f33beb7b7343e42f9871b66de9ba07974917e256c43" - ], - "opam": { - "name": "merlin-extend", - "version": "0.6", - "path": "esy.lock/opam/merlin-extend.0.6" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", - "@opam/cppo@opam:1.6.7@57a6d52c", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/merlin@opam:4.2-412@845ccff0": { - "id": "@opam/merlin@opam:4.2-412@845ccff0", + "@opam/merlin@opam:4.4-413@72d13f31": { + "id": "@opam/merlin@opam:4.4-413@72d13f31", "name": "@opam/merlin", - "version": "opam:4.2-412", + "version": "opam:4.4-413", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/86/86c30769277d3e2c09a8be6c68a98cd342bc0bdbde07c7225bfe2e6d0da2d394#sha256:86c30769277d3e2c09a8be6c68a98cd342bc0bdbde07c7225bfe2e6d0da2d394", - "archive:https://github.com/ocaml/merlin/releases/download/v4.2-412/merlin-v4.2-412.tbz#sha256:86c30769277d3e2c09a8be6c68a98cd342bc0bdbde07c7225bfe2e6d0da2d394" + "archive:https://opam.ocaml.org/cache/sha256/60/609edc65b23b6ead83f98af0c90180e5c8f98b0619a9257828f9f18b9f8095c6#sha256:609edc65b23b6ead83f98af0c90180e5c8f98b0619a9257828f9f18b9f8095c6", + "archive:https://github.com/ocaml/merlin/releases/download/v4.4-413/merlin-4.4-413.tbz#sha256:609edc65b23b6ead83f98af0c90180e5c8f98b0619a9257828f9f18b9f8095c6" ], "opam": { "name": "merlin", - "version": "4.2-412", - "path": "esy.lock/opam/merlin.4.2-412" + "version": "4.4-413", + "path": "esy.lock/opam/merlin.4.4-413" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.3@f57a6d69", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "@opam/result@opam:1.5@1c6a6533", "@opam/dune@opam:2.9.3@f57a6d69", "@opam/dot-merlin-reader@opam:4.1@84436e1c", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, - "@opam/menhirSdk@opam:20210419@9c7661a4": { - "id": "@opam/menhirSdk@opam:20210419@9c7661a4", - "name": "@opam/menhirSdk", - "version": "opam:20210419", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/1a/1af2d137eb20811c74ca516500164fd4#md5:1af2d137eb20811c74ca516500164fd4", - "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz#md5:1af2d137eb20811c74ca516500164fd4" - ], - "opam": { - "name": "menhirSdk", - "version": "20210419", - "path": "esy.lock/opam/menhirSdk.20210419" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/menhirLib@opam:20210419@0b3db8d0": { - "id": "@opam/menhirLib@opam:20210419@0b3db8d0", - "name": "@opam/menhirLib", - "version": "opam:20210419", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/1a/1af2d137eb20811c74ca516500164fd4#md5:1af2d137eb20811c74ca516500164fd4", - "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz#md5:1af2d137eb20811c74ca516500164fd4" - ], - "opam": { - "name": "menhirLib", - "version": "20210419", - "path": "esy.lock/opam/menhirLib.20210419" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/menhir@opam:20210419@11c42419": { - "id": "@opam/menhir@opam:20210419@11c42419", - "name": "@opam/menhir", - "version": "opam:20210419", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/1a/1af2d137eb20811c74ca516500164fd4#md5:1af2d137eb20811c74ca516500164fd4", - "archive:https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz#md5:1af2d137eb20811c74ca516500164fd4" - ], - "opam": { - "name": "menhir", - "version": "20210419", - "path": "esy.lock/opam/menhir.20210419" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/menhirSdk@opam:20210419@9c7661a4", - "@opam/menhirLib@opam:20210419@0b3db8d0", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/menhirSdk@opam:20210419@9c7661a4", - "@opam/menhirLib@opam:20210419@0b3db8d0", - "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/fmt@opam:0.8.9@e0843a5b": { - "id": "@opam/fmt@opam:0.8.9@e0843a5b", - "name": "@opam/fmt", - "version": "opam:0.8.9", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/40/4001b51cde90ea4fd99a4a5033ecf411#md5:4001b51cde90ea4fd99a4a5033ecf411", - "archive:https://erratique.ch/software/fmt/releases/fmt-0.8.9.tbz#md5:4001b51cde90ea4fd99a4a5033ecf411" - ], - "opam": { - "name": "fmt", - "version": "0.8.9", - "path": "esy.lock/opam/fmt.0.8.9" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", - "@opam/stdlib-shims@opam:0.3.0@0d088929", - "@opam/seq@opam:base@d8d7de1d", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "@opam/cmdliner@opam:1.0.4@93208aac", - "@opam/base-unix@opam:base@87d0b2eb", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/stdlib-shims@opam:0.3.0@0d088929", - "@opam/seq@opam:base@d8d7de1d" - ] - }, - "@opam/fix@opam:20201120@0b212fb9": { - "id": "@opam/fix@opam:20201120@0b212fb9", - "name": "@opam/fix", - "version": "opam:20201120", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/7e/7eb570b759635fe66f3556d2b1cc88e3#md5:7eb570b759635fe66f3556d2b1cc88e3", - "archive:https://gitlab.inria.fr/fpottier/fix/-/archive/20201120/archive.tar.gz#md5:7eb570b759635fe66f3556d2b1cc88e3" - ], - "opam": { - "name": "fix", - "version": "20201120", - "path": "esy.lock/opam/fix.20201120" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" - ] - }, "@opam/easy-format@opam:1.3.2@1ea9f987": { "id": "@opam/easy-format@opam:1.3.2@1ea9f987", "name": "@opam/easy-format", @@ -910,59 +477,59 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/dune-build-info@opam:2.9.0@c10d566f": { - "id": "@opam/dune-build-info@opam:2.9.0@c10d566f", + "@opam/dune-build-info@opam:2.9.3@ae518c8c": { + "id": "@opam/dune-build-info@opam:2.9.3@ae518c8c", "name": "@opam/dune-build-info", - "version": "opam:2.9.0", + "version": "opam:2.9.3", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/bb/bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e", - "archive:https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" + "archive:https://opam.ocaml.org/cache/sha256/3e/3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6#sha256:3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6", + "archive:https://github.com/ocaml/dune/releases/download/2.9.3/dune-site-2.9.3.tbz#sha256:3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6" ], "opam": { "name": "dune-build-info", - "version": "2.9.0", - "path": "esy.lock/opam/dune-build-info.2.9.0" + "version": "2.9.3", + "path": "esy.lock/opam/dune-build-info.2.9.3" } }, "overrides": [], "dependencies": [ - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], - "devDependencies": [ "@opam/dune@opam:2.9.0@489e77a9" ] + "devDependencies": [ "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/dune@opam:2.9.0@489e77a9": { - "id": "@opam/dune@opam:2.9.0@489e77a9", + "@opam/dune@opam:2.9.3@f57a6d69": { + "id": "@opam/dune@opam:2.9.3@f57a6d69", "name": "@opam/dune", - "version": "opam:2.9.0", + "version": "opam:2.9.3", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/bb/bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e", - "archive:https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz#sha256:bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" + "archive:https://opam.ocaml.org/cache/sha256/3e/3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6#sha256:3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6", + "archive:https://github.com/ocaml/dune/releases/download/2.9.3/dune-site-2.9.3.tbz#sha256:3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6" ], "opam": { "name": "dune", - "version": "2.9.0", - "path": "esy.lock/opam/dune.2.9.0" + "version": "2.9.3", + "path": "esy.lock/opam/dune.2.9.3" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "ocaml@4.13.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", "@opam/base-threads@opam:base@36803084", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", + "ocaml@4.13.1000@d41d8cd9", "@opam/base-unix@opam:base@87d0b2eb", "@opam/base-threads@opam:base@36803084" ] }, @@ -984,17 +551,17 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", "@opam/result@opam:1.5@1c6a6533", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7", + "@opam/ocamlfind@opam:1.9.3@5b691822", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", + "ocaml@4.13.1000@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", "@opam/result@opam:1.5@1c6a6533", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/csexp@opam:1.5.1@8a8fb3a7" + "@opam/ocamlfind@opam:1.9.3@5b691822", + "@opam/dune@opam:2.9.3@f57a6d69", "@opam/csexp@opam:1.5.1@8a8fb3a7" ] }, "@opam/csexp@opam:1.5.1@8a8fb3a7": { @@ -1015,62 +582,40 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69" ] }, - "@opam/cppo@opam:1.6.7@57a6d52c": { - "id": "@opam/cppo@opam:1.6.7@57a6d52c", + "@opam/cppo@opam:1.6.8@7e48217d": { + "id": "@opam/cppo@opam:1.6.8@7e48217d", "name": "@opam/cppo", - "version": "opam:1.6.7", + "version": "opam:1.6.8", "source": { "type": "install", "source": [ - "archive:https://opam.ocaml.org/cache/sha256/db/db553e3e6c206df09b1858c3aef5e21e56564d593642a3c78bcedb6af36f529d#sha256:db553e3e6c206df09b1858c3aef5e21e56564d593642a3c78bcedb6af36f529d", - "archive:https://github.com/ocaml-community/cppo/releases/download/v1.6.7/cppo-v1.6.7.tbz#sha256:db553e3e6c206df09b1858c3aef5e21e56564d593642a3c78bcedb6af36f529d" + "archive:https://opam.ocaml.org/cache/md5/fe/fed401197d86f9089e89f6cbdf1d660d#md5:fed401197d86f9089e89f6cbdf1d660d", + "archive:https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz#md5:fed401197d86f9089e89f6cbdf1d660d" ], "opam": { "name": "cppo", - "version": "1.6.7", - "path": "esy.lock/opam/cppo.1.6.7" + "version": "1.6.8", + "path": "esy.lock/opam/cppo.1.6.8" } }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@opam/base-unix@opam:base@87d0b2eb", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/dune@opam:2.9.0@489e77a9", + "ocaml@4.13.1000@d41d8cd9", "@opam/dune@opam:2.9.3@f57a6d69", "@opam/base-unix@opam:base@87d0b2eb" ] }, - "@opam/cmdliner@opam:1.0.4@93208aac": { - "id": "@opam/cmdliner@opam:1.0.4@93208aac", - "name": "@opam/cmdliner", - "version": "opam:1.0.4", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/fe/fe2213d0bc63b1e10a2d0aa66d2fc8d9#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9", - "archive:http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz#md5:fe2213d0bc63b1e10a2d0aa66d2fc8d9" - ], - "opam": { - "name": "cmdliner", - "version": "1.0.4", - "path": "esy.lock/opam/cmdliner.1.0.4" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, "@opam/biniou@opam:1.2.1@420bda02": { "id": "@opam/biniou@opam:1.2.1@420bda02", "name": "@opam/biniou", @@ -1089,12 +634,12 @@ }, "overrides": [], "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" + "ocaml@4.13.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.3@f57a6d69", "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9" + "ocaml@4.13.1000@d41d8cd9", "@opam/easy-format@opam:1.3.2@1ea9f987", + "@opam/dune@opam:2.9.3@f57a6d69" ] }, "@opam/base-unix@opam:base@87d0b2eb": { @@ -1131,157 +676,6 @@ "dependencies": [ "@esy-ocaml/substs@0.0.1@d41d8cd9" ], "devDependencies": [] }, - "@opam/atdgen-runtime@opam:2.2.1@c520dbfc": { - "id": "@opam/atdgen-runtime@opam:2.2.1@c520dbfc", - "name": "@opam/atdgen-runtime", - "version": "opam:2.2.1", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/db/db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e", - "archive:https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - ], - "opam": { - "name": "atdgen-runtime", - "version": "2.2.1", - "path": "esy.lock/opam/atdgen-runtime.2.2.1" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", - "@opam/biniou@opam:1.2.1@420bda02", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/re@opam:1.9.0@9373f267", "@opam/dune@opam:2.9.0@489e77a9", - "@opam/biniou@opam:1.2.1@420bda02" - ] - }, - "@opam/atdgen@opam:2.2.1@6ace3080": { - "id": "@opam/atdgen@opam:2.2.1@6ace3080", - "name": "@opam/atdgen", - "version": "opam:2.2.1", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/db/db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e", - "archive:https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - ], - "opam": { - "name": "atdgen", - "version": "2.2.1", - "path": "esy.lock/opam/atdgen.2.2.1" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02", - "@opam/atdgen-runtime@opam:2.2.1@c520dbfc", - "@opam/atd@opam:2.2.1@5cc6d2c6", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/yojson@opam:1.7.0@69d87312", - "@opam/dune@opam:2.9.0@489e77a9", "@opam/biniou@opam:1.2.1@420bda02", - "@opam/atdgen-runtime@opam:2.2.1@c520dbfc", - "@opam/atd@opam:2.2.1@5cc6d2c6" - ] - }, - "@opam/atd@opam:2.2.1@5cc6d2c6": { - "id": "@opam/atd@opam:2.2.1@5cc6d2c6", - "name": "@opam/atd", - "version": "opam:2.2.1", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/db/db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e", - "archive:https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz#sha256:db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - ], - "opam": { - "name": "atd", - "version": "2.2.1", - "path": "esy.lock/opam/atd.2.2.1" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/re@opam:1.9.0@9373f267", - "@opam/menhir@opam:20210419@11c42419", - "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9", "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/re@opam:1.9.0@9373f267", - "@opam/menhir@opam:20210419@11c42419", - "@opam/easy-format@opam:1.3.2@1ea9f987", - "@opam/dune@opam:2.9.0@489e77a9" - ] - }, - "@opam/astring@opam:0.8.5@1300cee8": { - "id": "@opam/astring@opam:0.8.5@1300cee8", - "name": "@opam/astring", - "version": "opam:0.8.5", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/md5/e1/e148907c24157d1df43bec89b58b3ec8#md5:e148907c24157d1df43bec89b58b3ec8", - "archive:https://erratique.ch/software/astring/releases/astring-0.8.5.tbz#md5:e148907c24157d1df43bec89b58b3ec8" - ], - "opam": { - "name": "astring", - "version": "0.8.5", - "path": "esy.lock/opam/astring.0.8.5" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/topkg@opam:1.0.3@e4e10f1c", - "@opam/ocamlfind@opam:1.9.1@b748edf6", - "@opam/ocamlbuild@opam:0.14.0@6ac75d03", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ "ocaml@4.12.0@d41d8cd9" ] - }, - "@opam/alcotest@opam:1.4.0@827862b4": { - "id": "@opam/alcotest@opam:1.4.0@827862b4", - "name": "@opam/alcotest", - "version": "opam:1.4.0", - "source": { - "type": "install", - "source": [ - "archive:https://opam.ocaml.org/cache/sha256/b1/b1aaccfb2d651c902592c04953e2619169c91f797cf4f04a7dda2cab09b93ec1#sha256:b1aaccfb2d651c902592c04953e2619169c91f797cf4f04a7dda2cab09b93ec1", - "archive:https://github.com/mirage/alcotest/releases/download/1.4.0/alcotest-mirage-1.4.0.tbz#sha256:b1aaccfb2d651c902592c04953e2619169c91f797cf4f04a7dda2cab09b93ec1" - ], - "opam": { - "name": "alcotest", - "version": "1.4.0", - "path": "esy.lock/opam/alcotest.1.4.0" - } - }, - "overrides": [], - "dependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", - "@opam/uuidm@opam:0.9.7@bf725775", - "@opam/stdlib-shims@opam:0.3.0@0d088929", - "@opam/re@opam:1.9.0@9373f267", "@opam/fmt@opam:0.8.9@e0843a5b", - "@opam/dune@opam:2.9.0@489e77a9", - "@opam/cmdliner@opam:1.0.4@93208aac", - "@opam/astring@opam:0.8.5@1300cee8", - "@esy-ocaml/substs@0.0.1@d41d8cd9" - ], - "devDependencies": [ - "ocaml@4.12.0@d41d8cd9", "@opam/uutf@opam:1.0.2@4440868f", - "@opam/uuidm@opam:0.9.7@bf725775", - "@opam/stdlib-shims@opam:0.3.0@0d088929", - "@opam/re@opam:1.9.0@9373f267", "@opam/fmt@opam:0.8.9@e0843a5b", - "@opam/dune@opam:2.9.0@489e77a9", - "@opam/cmdliner@opam:1.0.4@93208aac", - "@opam/astring@opam:0.8.5@1300cee8" - ] - }, "@esy-ocaml/substs@0.0.1@d41d8cd9": { "id": "@esy-ocaml/substs@0.0.1@d41d8cd9", "name": "@esy-ocaml/substs", diff --git a/esy.lock/opam/alcotest.1.4.0/opam b/esy.lock/opam/alcotest.1.4.0/opam deleted file mode 100644 index 4e135002..00000000 --- a/esy.lock/opam/alcotest.1.4.0/opam +++ /dev/null @@ -1,54 +0,0 @@ -opam-version: "2.0" -synopsis: "Alcotest is a lightweight and colourful test framework" -description: """ -Alcotest exposes simple interface to perform unit tests. It exposes -a simple TESTABLE module type, a check function to assert test -predicates and a run function to perform a list of unit -> unit -test callbacks. - -Alcotest provides a quiet and colorful output where only faulty runs -are fully displayed at the end of the run (with the full logs ready to -inspect), with a simple (yet expressive) query language to select the -tests to run. -""" -maintainer: ["thomas@gazagnaire.org"] -authors: ["Thomas Gazagnaire"] -license: "ISC" -homepage: "https://github.com/mirage/alcotest" -doc: "https://mirage.github.io/alcotest" -bug-reports: "https://github.com/mirage/alcotest/issues" -depends: [ - "dune" {>= "2.2"} - "ocaml" {>= "4.03.0"} - "fmt" {>= "0.8.7"} - "astring" - "cmdliner" {>= "1.0.3"} # required because of (implicit_transitive_deps false) and cmdliner < 1.0.3 uses result - "uuidm" - "re" {>= "1.7.2"} - "stdlib-shims" - "uutf" {>= "1.0.0"} -] -build: [ - ["dune" "subst"] {dev} - [ - "dune" - "build" - "-p" - name - "-j" - jobs - "@install" - "@runtest" {with-test} - "@doc" {with-doc} - ] -] -dev-repo: "git+https://github.com/mirage/alcotest.git" -x-commit-hash: "93940ea6da1d4ce8718ddd6c528eeb6d991b29ff" -url { - src: - "https://github.com/mirage/alcotest/releases/download/1.4.0/alcotest-mirage-1.4.0.tbz" - checksum: [ - "sha256=b1aaccfb2d651c902592c04953e2619169c91f797cf4f04a7dda2cab09b93ec1" - "sha512=8a13d5d4c8c77f115903e6b8e58160c6e6ec27870440bd38a674e9406f57f1eff299e65f006fd77728015d1a8f0ae30a714fe47e035824950a71ebfdff2cf3c9" - ] -} diff --git a/esy.lock/opam/astring.0.8.5/opam b/esy.lock/opam/astring.0.8.5/opam deleted file mode 100644 index 338a06a3..00000000 --- a/esy.lock/opam/astring.0.8.5/opam +++ /dev/null @@ -1,37 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["The astring programmers"] -homepage: "https://erratique.ch/software/astring" -doc: "https://erratique.ch/software/astring/doc" -dev-repo: "git+http://erratique.ch/repos/astring.git" -bug-reports: "https://github.com/dbuenzli/astring/issues" -tags: [ "string" "org:erratique" ] -license: "ISC" -depends: [ - "ocaml" {>= "4.05.0"} - "ocamlfind" {build} - "ocamlbuild" {build} - "topkg" {build} ] -build: [[ "ocaml" "pkg/pkg.ml" "build" "--pinned" "%{pinned}%" ]] - -synopsis: """Alternative String module for OCaml""" -description: """\ - -Astring exposes an alternative `String` module for OCaml. This module -tries to balance minimality and expressiveness for basic, index-free, -string processing and provides types and functions for substrings, -string sets and string maps. - -Remaining compatible with the OCaml `String` module is a non-goal. The -`String` module exposed by Astring has exception safe functions, -removes deprecated and rarely used functions, alters some signatures -and names, adds a few missing functions and fully exploits OCaml's -newfound string immutability. - -Astring depends only on the OCaml standard library. It is distributed -under the ISC license. -""" -url { -archive: "https://erratique.ch/software/astring/releases/astring-0.8.5.tbz" -checksum: "e148907c24157d1df43bec89b58b3ec8" -} diff --git a/esy.lock/opam/atd.2.2.1/opam b/esy.lock/opam/atd.2.2.1/opam deleted file mode 100644 index 12e08cef..00000000 --- a/esy.lock/opam/atd.2.2.1/opam +++ /dev/null @@ -1,55 +0,0 @@ -opam-version: "2.0" -synopsis: "Parser for the ATD data format description language" -description: """ -ATD is the OCaml library providing a parser for the ATD language and various -utilities. ATD stands for Adjustable Type Definitions in reference to its main -property of supporting annotations that allow a good fit with a variety of data -formats. """ -maintainer: ["Rudi Grinberg "] -authors: [ - "Martin Jambon " - "David Sheets " - "Rudi Grinberg " - "Ivan Jager " - "Jeff Meister " - "Carmelo Piccione " - "Raman Varabets " - "Mathieu Baudet " - "Rauan Mayemir " - "Louis Roché " - "Brendan Long " - "Christophe Troestler " - "Vincent Bernardoff " - "haoyang " -] -license: "MIT" -homepage: "https://github.com/ahrefs/atd" -bug-reports: "https://github.com/ahrefs/atd/issues" -depends: [ - "ocaml" {>= "4.02"} - "dune" {>= "2.0"} - "menhir" - "easy-format" - "re" -] -dev-repo: "git+https://github.com/ahrefs/atd.git" -build: [ - ["dune" "subst"] {dev} - [ - "dune" - "build" - "-p" - name - "-j" - jobs - "@install" - "@doc" {with-doc} - ] -] -url { - src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" - checksum: [ - "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" - ] -} diff --git a/esy.lock/opam/atdgen-runtime.2.2.1/opam b/esy.lock/opam/atdgen-runtime.2.2.1/opam deleted file mode 100644 index cd9ce573..00000000 --- a/esy.lock/opam/atdgen-runtime.2.2.1/opam +++ /dev/null @@ -1,53 +0,0 @@ -opam-version: "2.0" -synopsis: "Runtime library for code generated by atdgen" -description: """ -This package should be used only in conjunction with the stdgen code -generator""" -maintainer: ["Rudi Grinberg "] -authors: [ - "Martin Jambon " - "David Sheets " - "Rudi Grinberg " - "Ivan Jager " - "Jeff Meister " - "Carmelo Piccione " - "Raman Varabets " - "Mathieu Baudet " - "Rauan Mayemir " - "Louis Roché " - "Brendan Long " - "Christophe Troestler " - "Vincent Bernardoff " - "haoyang " -] -license: "MIT" -homepage: "https://github.com/ahrefs/atd" -bug-reports: "https://github.com/ahrefs/atd/issues" -depends: [ - "ocaml" {>= "4.02"} - "dune" {>= "2.0"} - "yojson" {>= "1.7.0"} - "biniou" {>= "1.0.6"} - "re" -] -dev-repo: "git+https://github.com/ahrefs/atd.git" -build: [ - ["dune" "subst"] {dev} - [ - "dune" - "build" - "-p" - name - "-j" - jobs - "@install" - "@doc" {with-doc} - ] -] -url { - src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" - checksum: [ - "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" - ] -} diff --git a/esy.lock/opam/atdgen.2.2.1/opam b/esy.lock/opam/atdgen.2.2.1/opam deleted file mode 100644 index 2553783c..00000000 --- a/esy.lock/opam/atdgen.2.2.1/opam +++ /dev/null @@ -1,63 +0,0 @@ -opam-version: "2.0" -synopsis: - "Generates efficient JSON serializers, deserializers and validators" -description: """ -Atdgen is a command-line program that takes as input type definitions in the ATD -syntax and produces OCaml code suitable for data serialization and -deserialization. -Two data formats are currently supported, these are biniou and JSON. -Atdgen-biniou and Atdgen-json will refer to Atdgen used in one context or the -other. -Atdgen was designed with efficiency and durability in mind. Software authors are -encouraged to use Atdgen directly and to write tools that may reuse part of -Atdgen’s source code.""" -maintainer: ["Rudi Grinberg "] -authors: [ - "Martin Jambon " - "David Sheets " - "Rudi Grinberg " - "Ivan Jager " - "Jeff Meister " - "Carmelo Piccione " - "Raman Varabets " - "Mathieu Baudet " - "Rauan Mayemir " - "Louis Roché " - "Brendan Long " - "Christophe Troestler " - "Vincent Bernardoff " - "haoyang " -] -license: "MIT" -homepage: "https://github.com/ahrefs/atd" -bug-reports: "https://github.com/ahrefs/atd/issues" -depends: [ - "ocaml" {>= "4.02"} - "dune" {>= "2.0"} - "atd" {>= "2.0.0"} - "atdgen-runtime" {>= "2.0.0"} - "atdgen-codec-runtime" {with-test} - "biniou" {>= "1.0.6"} - "yojson" {>= "1.7.0"} -] -dev-repo: "git+https://github.com/ahrefs/atd.git" -build: [ - ["dune" "subst"] {dev} - [ - "dune" - "build" - "-p" - name - "-j" - jobs - "@install" - "@doc" {with-doc} - ] -] -url { - src: "https://github.com/ahrefs/atd/releases/download/2.2.1/atd-2.2.1.tbz" - checksum: [ - "sha256=db6b4c1a6293b214a7b7a3da435e681abd1b16b55d5aa246b93d26736d3a559e" - "sha512=0c7f1985cc4d87ddd541bb2f7085b72f81aaef69468653319a4a52e6cd6c9318511229784a12cdb413ae500e7a5b8195759e0d8d49946a9b00f62e8dda07e8a2" - ] -} diff --git a/esy.lock/opam/cmdliner.1.0.4/opam b/esy.lock/opam/cmdliner.1.0.4/opam deleted file mode 100644 index b2187dc5..00000000 --- a/esy.lock/opam/cmdliner.1.0.4/opam +++ /dev/null @@ -1,36 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["Daniel Bünzli "] -homepage: "http://erratique.ch/software/cmdliner" -doc: "http://erratique.ch/software/cmdliner/doc/Cmdliner" -dev-repo: "git+http://erratique.ch/repos/cmdliner.git" -bug-reports: "https://github.com/dbuenzli/cmdliner/issues" -tags: [ "cli" "system" "declarative" "org:erratique" ] -license: "ISC" -depends:[ "ocaml" {>= "4.03.0"} ] -build: [[ make "all" "PREFIX=%{prefix}%" ]] -install: -[[make "install" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ] - [make "install-doc" "LIBDIR=%{_:lib}%" "DOCDIR=%{_:doc}%" ]] - -synopsis: """Declarative definition of command line interfaces for OCaml""" -description: """\ - -Cmdliner allows the declarative definition of command line interfaces -for OCaml. - -It provides a simple and compositional mechanism to convert command -line arguments to OCaml values and pass them to your functions. The -module automatically handles syntax errors, help messages and UNIX man -page generation. It supports programs with single or multiple commands -and respects most of the [POSIX][1] and [GNU][2] conventions. - -Cmdliner has no dependencies and is distributed under the ISC license. - -[1]: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html -[2]: http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html -""" -url { -archive: "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.4.tbz" -checksum: "fe2213d0bc63b1e10a2d0aa66d2fc8d9" -} diff --git a/esy.lock/opam/cppo.1.6.7/opam b/esy.lock/opam/cppo.1.6.8/opam similarity index 70% rename from esy.lock/opam/cppo.1.6.7/opam rename to esy.lock/opam/cppo.1.6.8/opam index 3269c37d..c9d7f68f 100644 --- a/esy.lock/opam/cppo.1.6.7/opam +++ b/esy.lock/opam/cppo.1.6.8/opam @@ -28,12 +28,10 @@ Cppo is: * reasonably fast * simple to install and to maintain """ -x-commit-hash: "7d217864a5fdc4551699e248137a2f8b719d2078" url { - src: - "https://github.com/ocaml-community/cppo/releases/download/v1.6.7/cppo-v1.6.7.tbz" + src: "https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz" checksum: [ - "sha256=db553e3e6c206df09b1858c3aef5e21e56564d593642a3c78bcedb6af36f529d" - "sha512=9722b50fd23aaccf86816313333a3bf8fc7c6b4ef06b153e5e1e1aaf14670cf51a4aac52fb1b4a0e5531699c4047a1eff6c24c969f7e5063e78096c2195b5819" + "md5=fed401197d86f9089e89f6cbdf1d660d" + "sha512=069bbe0ef09c03b0dc4b5795f909c3ef872fe99c6f1e6704a0fa97594b1570b3579226ec67fe11d696ccc349a4585055bbaf07c65eff423aa45af28abf38c858" ] } diff --git a/esy.lock/opam/dune-build-info.2.9.0/opam b/esy.lock/opam/dune-build-info.2.9.3/opam similarity index 73% rename from esy.lock/opam/dune-build-info.2.9.0/opam rename to esy.lock/opam/dune-build-info.2.9.3/opam index 8c0ade75..bbeb1a51 100644 --- a/esy.lock/opam/dune-build-info.2.9.0/opam +++ b/esy.lock/opam/dune-build-info.2.9.3/opam @@ -32,11 +32,12 @@ build: [ "@doc" {with-doc} ] ] -x-commit-hash: "641a95d2254ca7c51c97f07f2eed85b7a95db954" url { - src: "https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz" + src: + "https://github.com/ocaml/dune/releases/download/2.9.3/dune-site-2.9.3.tbz" checksum: [ - "sha256=bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" - "sha512=fcd8bc3ea7e9a14e6787a3b0384a488e45fa51e164a175ad1b147bebb3fbcccfd8f321b9b6a7665ac3dafeb18a2a6f8626d182af3b1796691f6ed79c166a5f44" + "sha256=3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6" + "sha512=04b48501ac16c3608e3b6bfbdbabf810df0fb844ea3b7d25ba50f03b9d6cb1d2c933cf747d694029d82a9777a774e48e5c38ab010fe53ce1eae367da0ed04d6d" ] } +x-commit-hash: "dea03875affccc0620e902d28fed8d6b4351e112" diff --git a/esy.lock/opam/dune.2.9.0/opam b/esy.lock/opam/dune.2.9.3/opam similarity index 84% rename from esy.lock/opam/dune.2.9.0/opam rename to esy.lock/opam/dune.2.9.3/opam index 7c21132d..dc3b456b 100644 --- a/esy.lock/opam/dune.2.9.0/opam +++ b/esy.lock/opam/dune.2.9.3/opam @@ -48,11 +48,12 @@ depends: [ "base-unix" "base-threads" ] -x-commit-hash: "641a95d2254ca7c51c97f07f2eed85b7a95db954" url { - src: "https://github.com/ocaml/dune/releases/download/2.9.0/dune-2.9.0.tbz" + src: + "https://github.com/ocaml/dune/releases/download/2.9.3/dune-site-2.9.3.tbz" checksum: [ - "sha256=bb217cfb17e893a0b1eb002ac83c14f96adc9d0703cb51ff34ed3ef5a639a41e" - "sha512=fcd8bc3ea7e9a14e6787a3b0384a488e45fa51e164a175ad1b147bebb3fbcccfd8f321b9b6a7665ac3dafeb18a2a6f8626d182af3b1796691f6ed79c166a5f44" + "sha256=3e65ec73ab2c80d50d4ffd6c46cbfb22eacd0e5587a4be8af8ae69547d5f88d6" + "sha512=04b48501ac16c3608e3b6bfbdbabf810df0fb844ea3b7d25ba50f03b9d6cb1d2c933cf747d694029d82a9777a774e48e5c38ab010fe53ce1eae367da0ed04d6d" ] } +x-commit-hash: "dea03875affccc0620e902d28fed8d6b4351e112" diff --git a/esy.lock/opam/fix.20201120/opam b/esy.lock/opam/fix.20201120/opam deleted file mode 100644 index 65de74dd..00000000 --- a/esy.lock/opam/fix.20201120/opam +++ /dev/null @@ -1,24 +0,0 @@ -opam-version: "2.0" -maintainer: "francois.pottier@inria.fr" -authors: [ - "François Pottier " -] -homepage: "https://gitlab.inria.fr/fpottier/fix" -dev-repo: "git+https://gitlab.inria.fr/fpottier/fix.git" -bug-reports: "francois.pottier@inria.fr" -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" { >= "4.03" } - "dune" {>= "1.3" } -] -synopsis: "Facilities for memoization and fixed points" -url { - src: - "https://gitlab.inria.fr/fpottier/fix/-/archive/20201120/archive.tar.gz" - checksum: [ - "md5=7eb570b759635fe66f3556d2b1cc88e3" - "sha512=344dcc619f9e8b8a6c998775b6d2dab2ea5253e6a67abe4797f76dc5dd30bc776568abce1e90477422e9db447821579889737e3531c42139708f813e983ea5d4" - ] -} diff --git a/esy.lock/opam/fmt.0.8.9/opam b/esy.lock/opam/fmt.0.8.9/opam deleted file mode 100644 index 6751a891..00000000 --- a/esy.lock/opam/fmt.0.8.9/opam +++ /dev/null @@ -1,44 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: [ "The fmt programmers" ] -homepage: "https://erratique.ch/software/fmt" -doc: "https://erratique.ch/software/fmt" -dev-repo: "git+https://erratique.ch/repos/fmt.git" -bug-reports: "https://github.com/dbuenzli/fmt/issues" -tags: [ "string" "format" "pretty-print" "org:erratique" ] -license: "ISC" -depends: [ - "ocaml" {>= "4.05.0"} - "ocamlfind" {build} - "ocamlbuild" {build} - "topkg" {build & >= "0.9.0"} - # Can be removed once ocaml >= 4.07 - "seq" - "stdlib-shims" -] -depopts: [ "base-unix" "cmdliner" ] -conflicts: [ "cmdliner" {< "0.9.8"} ] -build: [[ - "ocaml" "pkg/pkg.ml" "build" - "--dev-pkg" "%{pinned}%" - "--with-base-unix" "%{base-unix:installed}%" - "--with-cmdliner" "%{cmdliner:installed}%" ]] - -synopsis: """OCaml Format pretty-printer combinators""" -description: """\ - -Fmt exposes combinators to devise `Format` pretty-printing functions. - -Fmt depends only on the OCaml standard library. The optional `Fmt_tty` -library that allows to setup formatters for terminal color output -depends on the Unix library. The optional `Fmt_cli` library that -provides command line support for Fmt depends on [`Cmdliner`][cmdliner]. - -Fmt is distributed under the ISC license. - -[cmdliner]: http://erratique.ch/software/cmdliner -""" -url { -archive: "https://erratique.ch/software/fmt/releases/fmt-0.8.9.tbz" -checksum: "4001b51cde90ea4fd99a4a5033ecf411" -} diff --git a/esy.lock/opam/menhir.20210419/opam b/esy.lock/opam/menhir.20210419/opam deleted file mode 100644 index 52e60240..00000000 --- a/esy.lock/opam/menhir.20210419/opam +++ /dev/null @@ -1,28 +0,0 @@ -opam-version: "2.0" -maintainer: "francois.pottier@inria.fr" -authors: [ - "François Pottier " - "Yann Régis-Gianas " -] -homepage: "http://gitlab.inria.fr/fpottier/menhir" -dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" -bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" -license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" {>= "4.02.3"} - "dune" {>= "2.2.0"} - "menhirLib" {= version} - "menhirSdk" {= version} -] -synopsis: "An LR(1) parser generator" -url { - src: - "https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz" - checksum: [ - "md5=1af2d137eb20811c74ca516500164fd4" - "sha512=37a88b3ea0bde6089e5fbf0c1f10c1867c4edcd033ed3d5b75e7ed93e14ddd4f4c4db96baf638a054f65e294b83411497615c7fc14c6ff3a2a007e70f9d12c98" - ] -} diff --git a/esy.lock/opam/menhirLib.20210419/opam b/esy.lock/opam/menhirLib.20210419/opam deleted file mode 100644 index 2b1f00e6..00000000 --- a/esy.lock/opam/menhirLib.20210419/opam +++ /dev/null @@ -1,29 +0,0 @@ -opam-version: "2.0" -maintainer: "francois.pottier@inria.fr" -authors: [ - "François Pottier " - "Yann Régis-Gianas " -] -homepage: "http://gitlab.inria.fr/fpottier/menhir" -dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" -bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" -license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" { >= "4.02.3" } - "dune" { >= "2.0.0" } -] -conflicts: [ - "menhir" { != version } -] -synopsis: "Runtime support library for parsers generated by Menhir" -url { - src: - "https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz" - checksum: [ - "md5=1af2d137eb20811c74ca516500164fd4" - "sha512=37a88b3ea0bde6089e5fbf0c1f10c1867c4edcd033ed3d5b75e7ed93e14ddd4f4c4db96baf638a054f65e294b83411497615c7fc14c6ff3a2a007e70f9d12c98" - ] -} diff --git a/esy.lock/opam/menhirSdk.20210419/opam b/esy.lock/opam/menhirSdk.20210419/opam deleted file mode 100644 index b70097cd..00000000 --- a/esy.lock/opam/menhirSdk.20210419/opam +++ /dev/null @@ -1,29 +0,0 @@ -opam-version: "2.0" -maintainer: "francois.pottier@inria.fr" -authors: [ - "François Pottier " - "Yann Régis-Gianas " -] -homepage: "http://gitlab.inria.fr/fpottier/menhir" -dev-repo: "git+https://gitlab.inria.fr/fpottier/menhir.git" -bug-reports: "https://gitlab.inria.fr/fpottier/menhir/-/issues" -license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" { >= "4.02.3" } - "dune" { >= "2.0.0" } -] -conflicts: [ - "menhir" { != version } -] -synopsis: "Compile-time library for auxiliary tools related to Menhir" -url { - src: - "https://gitlab.inria.fr/fpottier/menhir/-/archive/20210419/archive.tar.gz" - checksum: [ - "md5=1af2d137eb20811c74ca516500164fd4" - "sha512=37a88b3ea0bde6089e5fbf0c1f10c1867c4edcd033ed3d5b75e7ed93e14ddd4f4c4db96baf638a054f65e294b83411497615c7fc14c6ff3a2a007e70f9d12c98" - ] -} diff --git a/esy.lock/opam/merlin-extend.0.6/opam b/esy.lock/opam/merlin-extend.0.6/opam deleted file mode 100644 index 8394e1ac..00000000 --- a/esy.lock/opam/merlin-extend.0.6/opam +++ /dev/null @@ -1,30 +0,0 @@ -opam-version: "2.0" -maintainer: "Frederic Bour " -authors: "Frederic Bour " -homepage: "https://github.com/let-def/merlin-extend" -bug-reports: "https://github.com/let-def/merlin-extend" -license: "MIT" -dev-repo: "git+https://github.com/let-def/merlin-extend.git" -build: [ - ["dune" "subst"] {dev} - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "dune" {>= "1.0"} - "cppo" {build & >= "1.1.0"} - "ocaml" {>= "4.02.3"} -] -synopsis: "A protocol to provide custom frontend to Merlin" -description: """ -This protocol allows to replace the OCaml frontend of Merlin. -It extends what used to be done with the `-pp' flag to handle a few more cases.""" -doc: "https://let-def.github.io/merlin-extend" -x-commit-hash: "640620568a5f5c7798239ecf7c707c813e3df3cf" -url { - src: - "https://github.com/let-def/merlin-extend/releases/download/v0.6/merlin-extend-v0.6.tbz" - checksum: [ - "sha256=c2f236ae97feb6ba0bc90f33beb7b7343e42f9871b66de9ba07974917e256c43" - "sha512=4c64a490e2ece04fc89aef679c1d9202175df4fe045b5fdc7a37cd7cebe861226fddd9648c1bf4f06175ecfcd2ed7686c96bd6a8cae003a5096f6134c240f857" - ] -} diff --git a/esy.lock/opam/merlin.4.2-412/opam b/esy.lock/opam/merlin.4.4-413/opam similarity index 73% rename from esy.lock/opam/merlin.4.2-412/opam rename to esy.lock/opam/merlin.4.4-413/opam index 6693e70a..1c908960 100644 --- a/esy.lock/opam/merlin.4.2-412/opam +++ b/esy.lock/opam/merlin.4.4-413/opam @@ -3,16 +3,16 @@ maintainer: "defree@gmail.com" authors: "The Merlin team" homepage: "https://github.com/ocaml/merlin" bug-reports: "https://github.com/ocaml/merlin/issues" -dev-repo: "git+https://github.com/ocaml/merlin.git" -license: "MIT" +dev-repo: "git+https://github.com/ocaml/merlin.git" +license: "MIT" build: [ ["dune" "subst"] {dev} ["dune" "build" "-p" name "-j" jobs] ["dune" "runtest" "-p" "merlin,dot-merlin-reader" "-j" "1"] {with-test} ] depends: [ - "ocaml" {>= "4.12" & < "4.13"} - "dune" {>= "2.7.0"} + "ocaml" {>= "4.13" & < "4.14"} + "dune" {>= "2.9.0"} "dot-merlin-reader" {>= "4.0"} "yojson" {>= "1.6.0"} "conf-jq" {with-test} @@ -41,7 +41,7 @@ Also run the following line in vim to index the documentation: Quick setup for EMACS ------------------- Add opam emacs directory to your load-path by appending this to your .emacs: - (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"config\" \"var\" \"share\"))))) + (let ((opam-share (ignore-errors (car (process-lines \"opam\" \"var\" \"share\"))))) (when (and opam-share (file-directory-p opam-share)) ;; Register Merlin (add-to-list 'load-path (expand-file-name \"emacs/site-lisp\" opam-share)) @@ -65,18 +65,13 @@ should take care of basic setup. See https://github.com/OCamlPro/opam-user-setup " {success & !user-setup:installed} -"Since version 4.2, Merlin integration with completion packages company -and auto-complete has moved to separate modules. Make sure to add -`(require 'merlin-company)` or `(require 'merlin-ac)` to your emacs -configuration if you were using one of these." - {success} ] -x-commit-hash: "fe7380bb13ff91f8ed5cfbfea6a6ca01ee1ef88c" url { src: - "https://github.com/ocaml/merlin/releases/download/v4.2-412/merlin-v4.2-412.tbz" + "https://github.com/ocaml/merlin/releases/download/v4.4-413/merlin-4.4-413.tbz" checksum: [ - "sha256=86c30769277d3e2c09a8be6c68a98cd342bc0bdbde07c7225bfe2e6d0da2d394" - "sha512=27fbfb2ac50d7cd86807bd8cb02ff1e4661ee46abf071b9bec505e1df6d41f366c9c287988e66096fb7a14b67fd806df39c56b9f70c53ec40612192ba2a0e530" + "sha256=609edc65b23b6ead83f98af0c90180e5c8f98b0619a9257828f9f18b9f8095c6" + "sha512=b0bf3c7d72dfc7c70e22d60afca5b7fee71a35127839181fdb46e1e15a230e58765960548c545bbef4fdab180291c738cacb724b9ecf284eee5640ebef07c4ff" ] } +x-commit-hash: "7607238326a9352cbee9ecf612669e28ae9fa36e" diff --git a/esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam b/esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam deleted file mode 100644 index 8ee2710e..00000000 --- a/esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam +++ /dev/null @@ -1,29 +0,0 @@ -opam-version: "2.0" -maintainer: "Jane Street developers" -authors: ["Jane Street Group, LLC"] -homepage: "https://github.com/janestreet/ocaml-compiler-libs" -bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" -dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" -license: "MIT" -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" {>= "4.04.1"} - "dune" {>= "1.5.1"} -] -synopsis: """OCaml compiler libraries repackaged""" -description: """ - -This packages exposes the OCaml compiler libraries repackages under -the toplevel names Ocaml_common, Ocaml_bytecomp, Ocaml_optcomp, ... -""" -x-commit-hash: "7f5d1d2931b96fb3ee6dd569a469b51f621a6dd4" -url { - src: - "https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.3/ocaml-compiler-libs-v0.12.3.tbz" - checksum: [ - "sha256=a8403531439c14bbda2d504ef93610fd29a8e9520fc700f21889d893a513e3c9" - "sha512=0bb03b38e93bab3274a8ade38d017808110bc02f2181a594d8775c68fdd465733393f0451dbbf8860e6b50b56c45671d2182637c0840d1d6574803ec18673972" - ] -} diff --git a/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam new file mode 100644 index 00000000..14c9f753 --- /dev/null +++ b/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam @@ -0,0 +1,39 @@ +opam-version: "2.0" +synopsis: "OCaml compiler libraries repackaged" +description: """ +This packages exposes the OCaml compiler libraries repackages under +the toplevel names Ocaml_common, Ocaml_bytecomp, Ocaml_optcomp, ...""" +maintainer: ["Jane Street developers"] +authors: ["Jane Street Group, LLC"] +license: "MIT" +homepage: "https://github.com/janestreet/ocaml-compiler-libs" +bug-reports: "https://github.com/janestreet/ocaml-compiler-libs/issues" +depends: [ + "dune" {>= "2.8"} + "ocaml" {>= "4.04.1"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/janestreet/ocaml-compiler-libs.git" +url { + src: + "https://github.com/janestreet/ocaml-compiler-libs/releases/download/v0.12.4/ocaml-compiler-libs-v0.12.4.tbz" + checksum: [ + "sha256=4ec9c9ec35cc45c18c7a143761154ef1d7663036a29297f80381f47981a07760" + "sha512=978dba8dfa61f98fa24fda7a9c26c2e837081f37d1685fe636dc19cfc3278a940cf01a10293504b185c406706bc1008bc54313d50f023bcdea6d5ac6c0788b35" + ] +} +x-commit-hash: "8cd12f18bb7171c2b67d661868c4271fae528d93" diff --git a/esy.lock/opam/ocaml-lsp-server.1.7.0/opam b/esy.lock/opam/ocaml-lsp-server.1.10.1/opam similarity index 58% rename from esy.lock/opam/ocaml-lsp-server.1.7.0/opam rename to esy.lock/opam/ocaml-lsp-server.1.10.1/opam index 553c7d96..217e6791 100644 --- a/esy.lock/opam/ocaml-lsp-server.1.7.0/opam +++ b/esy.lock/opam/ocaml-lsp-server.1.10.1/opam @@ -10,23 +10,26 @@ authors: [ "Rudi Grinberg " "Sacha Ayoun " "cannorin " + "Ulugbek Abdullaev " + "Thibaut Mattio " + "Max Lantas " ] license: "ISC" homepage: "https://github.com/ocaml/ocaml-lsp" bug-reports: "https://github.com/ocaml/ocaml-lsp/issues" depends: [ - "dune" {>= "2.7"} + "dune" {>= "2.9"} "yojson" - "re" + "re" {>= "1.5.0"} "ppx_yojson_conv_lib" {>= "v0.14"} "dune-build-info" - "dot-merlin-reader" + "spawn" "pp" {>= "1.1.2"} - "csexp" {>= "1.4"} + "csexp" {>= "1.5"} "result" {>= "1.5"} - "ocamlformat" {with-test} + "ocamlformat-rpc-lib" {>= "0.18.0" & < "0.20.0"} "odoc" {with-doc} - "ocaml" {>= "4.12" & < "4.13"} + "ocaml" {>= "4.13" & < "4.14"} ] dev-repo: "git+https://github.com/ocaml/ocaml-lsp.git" build: [ @@ -40,12 +43,12 @@ build: [ "--release" ] ] -x-commit-hash: "c728032b4717c265aa364314288d67bd722b9ce9" url { src: - "https://github.com/ocaml/ocaml-lsp/releases/download/1.7.0/jsonrpc-1.7.0.tbz" + "https://github.com/ocaml/ocaml-lsp/releases/download/1.10.1/jsonrpc-1.10.1.tbz" checksum: [ - "sha256=ca43b6608366ddf891d7c1e1cc38de2c7f93a6da0511de164959db1f88fc42ed" - "sha512=43a00604f25bd1d3e93bfd43f1ef9c4cad9aa392c15a5db0c5ba0264f396e7ca6f60a0293467609402e87aeec441a05e7ee2990b37c98dc27b92a22afbebfd02" + "sha256=23006064074617974a7237443f4db6234e305b3b74eb7134bf870499cb59aafe" + "sha512=f6925524a9c947c104cf2b054dae118186f4c559c572fec1426bdbdc33cfc5c8e097581ad82c52f0872f8c5721852d96cff86fd66abf452350cb1d04f2f2110d" ] } +x-commit-hash: "f41c8d30c44dd83dafde87691a97509707addb21" diff --git a/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam b/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam deleted file mode 100644 index c442a60d..00000000 --- a/esy.lock/opam/ocaml-migrate-parsetree.2.2.0/opam +++ /dev/null @@ -1,36 +0,0 @@ -opam-version: "2.0" -maintainer: "frederic.bour@lakaban.net" -authors: [ - "Frédéric Bour " - "Jérémie Dimino " -] -license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" -homepage: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree" -bug-reports: "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues" -dev-repo: "git+https://github.com/ocaml-ppx/ocaml-migrate-parsetree.git" -doc: "https://ocaml-ppx.github.io/ocaml-migrate-parsetree/" -tags: [ "syntax" "org:ocamllabs" ] -build: ["dune" "build" "-p" name "-j" jobs] -run-test: ["dune" "runtest" "-p" name "-j" jobs] -depends: [ - "dune" {>= "2.3"} - "ocaml" {>= "4.02.3" & < "4.14"} - "cinaps" {with-test & >= "v0.13.0"} -] -synopsis: "Convert OCaml parsetrees between different versions" -description: """ -Convert OCaml parsetrees between different versions - -This library converts parsetrees, outcometree and ast mappers between -different OCaml versions. High-level functions help making PPX -rewriters independent of a compiler version. -""" -url { - src: - "https://github.com/ocaml-ppx/ocaml-migrate-parsetree/releases/download/v2.2.0/ocaml-migrate-parsetree-v2.2.0.tbz" - checksum: [ - "sha256=b2a68f3d3899cec3a50a99b05738295cc8a18672680406d0f68fbc95c01f1ba1" - "sha512=d1a6e2a639f77d297690f9ed79318b7a403444585b062d2add9f370320f735ba54bca191a34401f15c576c7ee55b5ed232f20d9599aa67821c747d7e684fc5a7" - ] -} -x-commit-hash: "aeeb9317936937d360aa6cdb0cab953d11ff2c5d" diff --git a/esy.lock/opam/ocamlbuild.0.14.0/opam b/esy.lock/opam/ocamlbuild.0.14.0/opam deleted file mode 100644 index 8deabeed..00000000 --- a/esy.lock/opam/ocamlbuild.0.14.0/opam +++ /dev/null @@ -1,36 +0,0 @@ -opam-version: "2.0" -maintainer: "Gabriel Scherer " -authors: ["Nicolas Pouillard" "Berke Durak"] -homepage: "https://github.com/ocaml/ocamlbuild/" -bug-reports: "https://github.com/ocaml/ocamlbuild/issues" -license: "LGPL-2.1-only with OCaml-LGPL-linking-exception" -doc: "https://github.com/ocaml/ocamlbuild/blob/master/manual/manual.adoc" -dev-repo: "git+https://github.com/ocaml/ocamlbuild.git" -build: [ - [ - make - "-f" - "configure.make" - "all" - "OCAMLBUILD_PREFIX=%{prefix}%" - "OCAMLBUILD_BINDIR=%{bin}%" - "OCAMLBUILD_LIBDIR=%{lib}%" - "OCAMLBUILD_MANDIR=%{man}%" - "OCAML_NATIVE=%{ocaml:native}%" - "OCAML_NATIVE_TOOLS=%{ocaml:native}%" - ] - [make "check-if-preinstalled" "all" "opam-install"] -] -conflicts: [ - "base-ocamlbuild" - "ocamlfind" {< "1.6.2"} -] -synopsis: - "OCamlbuild is a build system with builtin rules to easily build most OCaml projects." -depends: [ - "ocaml" {>= "4.03"} -] -url { - src: "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz" - checksum: "sha256=87b29ce96958096c0a1a8eeafeb6268077b2d11e1bf2b3de0f5ebc9cf8d42e78" -} diff --git a/esy.lock/opam/ocamlfind.1.9.1/opam b/esy.lock/opam/ocamlfind.1.9.3/opam similarity index 82% rename from esy.lock/opam/ocamlfind.1.9.1/opam rename to esy.lock/opam/ocamlfind.1.9.3/opam index 4b6e5c6f..971a203f 100644 --- a/esy.lock/opam/ocamlfind.1.9.1/opam +++ b/esy.lock/opam/ocamlfind.1.9.3/opam @@ -36,9 +36,9 @@ install: [ ] dev-repo: "git+https://github.com/ocaml/ocamlfind.git" url { - src: "http://download.camlcity.org/download/findlib-1.9.1.tar.gz" + src: "http://download.camlcity.org/download/findlib-1.9.3.tar.gz" checksum: [ - "md5=65e6dc9b305ccbed1267275fe180f538" - "sha512=83a05f3e310fa7cabb0475c5525f7a87c1b6bc2dc5e39f094cabfb5d944a826a5581844ba00ec1a48dd96184eb9de3c4d1055cdddee2b83c700a2de5a6dc6f84" + "md5=24047dd8a0da5322253de9b7aa254e42" + "sha512=27cc4ce141576bf477fb9d61a82ad65f55478740eed59fb43f43edb794140829fd2ff89ad27d8a890cfc336b54c073a06de05b31100fc7c01cacbd7d88e928ea" ] } diff --git a/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam b/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam new file mode 100644 index 00000000..07923729 --- /dev/null +++ b/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam @@ -0,0 +1,40 @@ +opam-version: "2.0" +synopsis: "Auto-formatter for OCaml code (RPC mode)" +description: + "OCamlFormat is a tool to automatically format OCaml code in a uniform style. This package defines a RPC interface to OCamlFormat" +maintainer: ["OCamlFormat Team "] +authors: ["Josh Berdine "] +license: "MIT" +homepage: "https://github.com/ocaml-ppx/ocamlformat" +bug-reports: "https://github.com/ocaml-ppx/ocamlformat/issues" +depends: [ + "dune" {>= "2.8"} + "ocaml" {>= "4.08" & < "4.14"} + "csexp" + "sexplib0" + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-ppx/ocamlformat.git" +url { + src: + "https://github.com/ocaml-ppx/ocamlformat/releases/download/0.19.0/ocamlformat-0.19.0.tbz" + checksum: [ + "sha256=62fc46aae8f0a4a33ce7f8d7726d7109bff615ea6fcb50d1482f21d20ee50f46" + "sha512=408b3af533169f201d7492be869f8ae4acde5583e01693c586929f44b76d569d3d6d555bc056378743d7cb3bd8e11ebc9cbd178ca196bcb82db33127d14902f8" + ] +} +x-commit-hash: "ba67af28ddca8718ef8816b2b0dc1e5b2f5e9591" diff --git a/esy.lock/opam/ppx_derivers.1.2.1/opam b/esy.lock/opam/ppx_derivers.1.2.1/opam index 3d10814e..484b2654 100644 --- a/esy.lock/opam/ppx_derivers.1.2.1/opam +++ b/esy.lock/opam/ppx_derivers.1.2.1/opam @@ -4,7 +4,7 @@ authors: ["Jérémie Dimino"] license: "BSD-3-Clause" homepage: "https://github.com/ocaml-ppx/ppx_derivers" bug-reports: "https://github.com/ocaml-ppx/ppx_derivers/issues" -dev-repo: "git://github.com/ocaml-ppx/ppx_derivers.git" +dev-repo: "git+https://github.com/ocaml-ppx/ppx_derivers.git" build: [ ["dune" "build" "-p" name "-j" jobs] ] diff --git a/esy.lock/opam/ppxlib.0.22.2/opam b/esy.lock/opam/ppxlib.0.24.0/opam similarity index 75% rename from esy.lock/opam/ppxlib.0.22.2/opam rename to esy.lock/opam/ppxlib.0.24.0/opam index 754b88c4..d4b4b0fc 100644 --- a/esy.lock/opam/ppxlib.0.22.2/opam +++ b/esy.lock/opam/ppxlib.0.24.0/opam @@ -20,9 +20,8 @@ doc: "https://ocaml-ppx.github.io/ppxlib/" bug-reports: "https://github.com/ocaml-ppx/ppxlib/issues" depends: [ "dune" {>= "2.7"} - "ocaml" {>= "4.04.1" & < "4.14"} + "ocaml" {>= "4.04.1" & < "4.15"} "ocaml-compiler-libs" {>= "v0.11.0"} - "ocaml-migrate-parsetree" {>= "2.2.0"} "ppx_derivers" {>= "1.0"} "sexplib0" {>= "v0.12"} "stdlib-shims" @@ -33,6 +32,10 @@ depends: [ "stdio" {with-test} "odoc" {with-doc} ] +conflicts: [ + "ocaml-migrate-parsetree" {< "2.0.0"} + "base-effects" +] build: [ ["dune" "subst"] {dev} [ @@ -48,12 +51,12 @@ build: [ ] ] dev-repo: "git+https://github.com/ocaml-ppx/ppxlib.git" -x-commit-hash: "3cf57772fef4666a2992041cf3a670dd2be98603" url { src: - "https://github.com/ocaml-ppx/ppxlib/releases/download/0.22.2/ppxlib-0.22.2.tbz" + "https://github.com/ocaml-ppx/ppxlib/releases/download/0.24.0/ppxlib-0.24.0.tbz" checksum: [ - "sha256=d0e8a1ebdc6220b1574d7a926f008460c5118ccef79bf9a0ce0242f34cff225a" - "sha512=6010a59be6af873eaf193670f9cc8c9a7f091cfd89ec6c5b68d1f0c72d7c6015eec6371c009fc473cf2cb37d24f0934d04d0eacefa567a4945234197c3b31741" + "sha256=7766027c2ecd0f5b3b460e9212a70709c6744278113eb91f317c56c41e7a90c8" + "sha512=726e48899c43f8bee1935618827e68b2953753a62868e424a2dadf2e156cc60794abacea658686a8a160eccde0f75b95b98daacf2b9242b4f86a92798d47b597" ] } +x-commit-hash: "3d858b04613833fec7e2b5f5be25d45bfd354649" diff --git a/esy.lock/opam/re.1.9.0/opam b/esy.lock/opam/re.1.10.3/opam similarity index 65% rename from esy.lock/opam/re.1.9.0/opam rename to esy.lock/opam/re.1.10.3/opam index 0b197ccc..c65d450f 100644 --- a/esy.lock/opam/re.1.9.0/opam +++ b/esy.lock/opam/re.1.10.3/opam @@ -8,20 +8,20 @@ authors: [ "Rudi Grinberg" "Gabriel Radanne" ] -license: "LGPL-2.0-only with OCaml-LGPL-linking-exception" +license: "LGPL-2.0 with OCaml linking exception" homepage: "https://github.com/ocaml/ocaml-re" bug-reports: "https://github.com/ocaml/ocaml-re/issues" dev-repo: "git+https://github.com/ocaml/ocaml-re.git" build: [ - ["dune" "subst"] {dev} + ["dune" "subst"] {pinned} ["dune" "build" "-p" name "-j" jobs] ["dune" "runtest" "-p" name "-j" jobs] {with-test} ] depends: [ "ocaml" {>= "4.02"} - "dune" + "dune" {>= "2.0"} "ounit" {with-test} "seq" ] @@ -37,6 +37,10 @@ Pure OCaml regular expressions with: """ url { src: - "https://github.com/ocaml/ocaml-re/releases/download/1.9.0/re-1.9.0.tbz" - checksum: "md5=bddaed4f386a22cace7850c9c7dac296" + "https://github.com/ocaml/ocaml-re/releases/download/1.10.3/re-1.10.3.tbz" + checksum: [ + "sha256=846546967f3fe31765935dd40a6460a9424337ecce7b12727fcba49480790ebb" + "sha512=d02103b7b8b8d8bc797341dcc933554745427f3c1b51b54b4ac9ff81badfd68c94726c57548b08e00ca99f3e09741b54b6500e97c19fc0e8fcefd6dfbe71da7f" + ] } +x-commit-hash: "c5d5df80e128c3d7646b7d8b1322012c5fcc35f3" diff --git a/esy.lock/opam/reason.3.7.0/opam b/esy.lock/opam/reason.3.7.0/opam deleted file mode 100644 index 007aa5bc..00000000 --- a/esy.lock/opam/reason.3.7.0/opam +++ /dev/null @@ -1,31 +0,0 @@ -opam-version: "2.0" -maintainer: "Jordan Walke " -authors: [ "Jordan Walke " ] -license: "MIT" -homepage: "https://github.com/facebook/reason" -doc: "http://reasonml.github.io/" -bug-reports: "https://github.com/facebook/reason/issues" -dev-repo: "git://github.com/facebook/reason.git" -tags: [ "syntax" ] -build: [ - ["dune" "build" "-p" name "-j" jobs] -] -depends: [ - "ocaml" {>= "4.03" & < "4.13"} - "dune" {>= "1.4"} - "ocamlfind" {build} - "menhir" {>= "20180523"} - "merlin-extend" {>= "0.6"} - "ppx_derivers" {< "2.0"} - "fix" - "result" -] -synopsis: "Reason: Syntax & Toolchain for OCaml" -description: """ -Reason gives OCaml a new syntax that is remniscient of languages like -JavaScript. It's also the umbrella project for a set of tools for the OCaml & -JavaScript ecosystem.""" -url { - src: "https://registry.npmjs.org/@esy-ocaml/reason/-/reason-3.7.0.tgz" - checksum: "md5=7eb8cbbff8565b93ebfabf4eca7254d4" -} diff --git a/esy.lock/opam/spawn.v0.15.0/opam b/esy.lock/opam/spawn.v0.15.0/opam new file mode 100644 index 00000000..d8d15783 --- /dev/null +++ b/esy.lock/opam/spawn.v0.15.0/opam @@ -0,0 +1,56 @@ +opam-version: "2.0" +synopsis: "Spawning sub-processes" +description: """ +Spawn is a small library exposing only one functionality: spawning sub-process. + +It has three main goals: + +1. provide missing features of Unix.create_process such as providing a +working directory + +2. provide better errors when a system call fails in the +sub-process. For instance if a command is not found, you get a proper +[Unix.Unix_error] exception + +3. improve performance by using vfork when available. It is often +claimed that nowadays fork is as fast as vfork, however in practice +fork takes time proportional to the process memory while vfork is +constant time. In application using a lot of memory, vfork can be +thousands of times faster than fork. +""" +maintainer: ["Jane Street developers"] +authors: ["Jane Street Group, LLC"] +license: "MIT" +homepage: "https://github.com/janestreet/spawn" +doc: "https://janestreet.github.io/spawn/" +bug-reports: "https://github.com/janestreet/spawn/issues" +depends: [ + "dune" {>= "2.8"} + "ppx_expect" {with-test} + "ocaml" {>= "4.05"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/janestreet/spawn.git" +x-commit-hash: "b5a25cab2f53a5ee9e10a7b8a96506cc61ce1198" +url { + src: + "https://github.com/janestreet/spawn/archive/v0.15.0.tar.gz" + checksum: [ + "sha256=310fb2a50ac7f64c738182cbabd9d27c1aeae1a08107fe14da8d35a87cbb57c7" + "sha512=3a775b57a73efee6adbc30b32fa779f27d11c7008a46f90fdb9da6288533e2d83fc49dbcd770c087f2e4560c5586ff72a9a2985d8929955773cc10d83f126013" + ] +} diff --git a/esy.lock/opam/stdlib-shims.0.3.0/opam b/esy.lock/opam/stdlib-shims.0.3.0/opam index d657e043..8c969571 100644 --- a/esy.lock/opam/stdlib-shims.0.3.0/opam +++ b/esy.lock/opam/stdlib-shims.0.3.0/opam @@ -6,7 +6,7 @@ doc: "https://ocaml.github.io/stdlib-shims/" dev-repo: "git+https://github.com/ocaml/stdlib-shims.git" bug-reports: "https://github.com/ocaml/stdlib-shims/issues" tags: ["stdlib" "compatibility" "org:ocaml"] -license: ["typeof OCaml system"] +license: ["LGPL-2.1-only WITH OCaml-LGPL-linking-exception"] depends: [ "dune" "ocaml" {>= "4.02.3"} diff --git a/esy.lock/opam/topkg.1.0.3/opam b/esy.lock/opam/topkg.1.0.3/opam deleted file mode 100644 index 6e073a11..00000000 --- a/esy.lock/opam/topkg.1.0.3/opam +++ /dev/null @@ -1,48 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["Daniel Bünzli "] -homepage: "http://erratique.ch/software/topkg" -doc: "http://erratique.ch/software/topkg/doc" -license: "ISC" -dev-repo: "git+http://erratique.ch/repos/topkg.git" -bug-reports: "https://github.com/dbuenzli/topkg/issues" -tags: ["packaging" "ocamlbuild" "org:erratique"] -depends: [ - "ocaml" {>= "4.03.0"} - "ocamlfind" {build & >= "1.6.1"} - "ocamlbuild" ] -build: [[ - "ocaml" "pkg/pkg.ml" "build" - "--pkg-name" name - "--dev-pkg" "%{pinned}%" ]] -synopsis: """The transitory OCaml software packager""" -description: """\ - -Topkg is a packager for distributing OCaml software. It provides an -API to describe the files a package installs in a given build -configuration and to specify information about the package's -distribution, creation and publication procedures. - -The optional topkg-care package provides the `topkg` command line tool -which helps with various aspects of a package's life cycle: creating -and linting a distribution, releasing it on the WWW, publish its -documentation, add it to the OCaml opam repository, etc. - -Topkg is distributed under the ISC license and has **no** -dependencies. This is what your packages will need as a *build* -dependency. - -Topkg-care is distributed under the ISC license it depends on -[fmt][fmt], [logs][logs], [bos][bos], [cmdliner][cmdliner], -[webbrowser][webbrowser] and `opam-format`. - -[fmt]: http://erratique.ch/software/fmt -[logs]: http://erratique.ch/software/logs -[bos]: http://erratique.ch/software/bos -[cmdliner]: http://erratique.ch/software/cmdliner -[webbrowser]: http://erratique.ch/software/webbrowser -""" -url { -archive: "http://erratique.ch/software/topkg/releases/topkg-1.0.3.tbz" -checksum: "e285f7a296d77ee7d831ba9a6bfb396f" -} diff --git a/esy.lock/opam/uchar.0.0.2/opam b/esy.lock/opam/uchar.0.0.2/opam deleted file mode 100644 index 428d7aa6..00000000 --- a/esy.lock/opam/uchar.0.0.2/opam +++ /dev/null @@ -1,36 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["Daniel Bünzli "] -homepage: "http://ocaml.org" -doc: "https://ocaml.github.io/uchar/" -dev-repo: "git+https://github.com/ocaml/uchar.git" -bug-reports: "https://github.com/ocaml/uchar/issues" -tags: [ "text" "character" "unicode" "compatibility" "org:ocaml.org" ] -license: "typeof OCaml system" -depends: [ - "ocaml" {>= "3.12.0"} - "ocamlbuild" {build} -] -build: [ - ["ocaml" "pkg/git.ml"] - [ - "ocaml" - "pkg/build.ml" - "native=%{ocaml:native}%" - "native-dynlink=%{ocaml:native-dynlink}%" - ] -] -synopsis: "Compatibility library for OCaml's Uchar module" -description: """ -The `uchar` package provides a compatibility library for the -[`Uchar`][1] module introduced in OCaml 4.03. - -The `uchar` package is distributed under the license of the OCaml -compiler. See [LICENSE](LICENSE) for details. - -[1]: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Uchar.html""" -url { - src: - "https://github.com/ocaml/uchar/releases/download/v0.0.2/uchar-0.0.2.tbz" - checksum: "md5=c9ba2c738d264c420c642f7bb1cf4a36" -} diff --git a/esy.lock/opam/uuidm.0.9.7/opam b/esy.lock/opam/uuidm.0.9.7/opam deleted file mode 100644 index 0c59ad93..00000000 --- a/esy.lock/opam/uuidm.0.9.7/opam +++ /dev/null @@ -1,34 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["Daniel Bünzli "] -homepage: "https://erratique.ch/software/uuidm" -doc: "https://erratique.ch/software/uuidm/doc/Uuidm" -dev-repo: "git+https://erratique.ch/repos/uuidm.git" -bug-reports: "https://github.com/dbuenzli/uuidm/issues" -tags: [ "uuid" "codec" "org:erratique" ] -license: "ISC" -depends: [ - "ocaml" {>= "4.03.0"} - "ocamlfind" {build} - "ocamlbuild" {build} - "topkg" {build} ] -depopts: [ "cmdliner" ] -build: -[ "ocaml" "pkg/pkg.ml" "build" - "--pinned" "%{pinned}%" - "--with-cmdliner" "%{cmdliner:installed}%" ] -synopsis: """Universally unique identifiers (UUIDs) for OCaml""" -description: """\ - -Uuidm is an OCaml module implementing 128 bits universally unique -identifiers version 3, 5 (named based with MD5, SHA-1 hashing) and 4 -(random based) according to [RFC 4122][rfc4122]. - -Uuidm has no dependency and is distributed under the ISC license. - -[rfc4122]: http://tools.ietf.org/html/rfc4122 -""" -url { -archive: "https://erratique.ch/software/uuidm/releases/uuidm-0.9.7.tbz" -checksum: "54658248e3981d8c05237d0a4277ccd3" -} diff --git a/esy.lock/opam/uutf.1.0.2/opam b/esy.lock/opam/uutf.1.0.2/opam deleted file mode 100644 index 3a9f5678..00000000 --- a/esy.lock/opam/uutf.1.0.2/opam +++ /dev/null @@ -1,40 +0,0 @@ -opam-version: "2.0" -maintainer: "Daniel Bünzli " -authors: ["Daniel Bünzli "] -homepage: "http://erratique.ch/software/uutf" -doc: "http://erratique.ch/software/uutf/doc/Uutf" -dev-repo: "git+http://erratique.ch/repos/uutf.git" -bug-reports: "https://github.com/dbuenzli/uutf/issues" -tags: [ "unicode" "text" "utf-8" "utf-16" "codec" "org:erratique" ] -license: "ISC" -depends: [ - "ocaml" {>= "4.01.0"} - "ocamlfind" {build} - "ocamlbuild" {build} - "topkg" {build} - "uchar" -] -depopts: ["cmdliner"] -conflicts: ["cmdliner" { < "0.9.6"} ] -build: [[ - "ocaml" "pkg/pkg.ml" "build" - "--pinned" "%{pinned}%" - "--with-cmdliner" "%{cmdliner:installed}%" ]] -synopsis: """Non-blocking streaming Unicode codec for OCaml""" -description: """\ - -Uutf is a non-blocking streaming codec to decode and encode the UTF-8, -UTF-16, UTF-16LE and UTF-16BE encoding schemes. It can efficiently -work character by character without blocking on IO. Decoders perform -character position tracking and support newline normalization. - -Functions are also provided to fold over the characters of UTF encoded -OCaml string values and to directly encode characters in OCaml -Buffer.t values. - -Uutf has no dependency and is distributed under the ISC license. -""" -url { -archive: "http://erratique.ch/software/uutf/releases/uutf-1.0.2.tbz" -checksum: "a7c542405a39630c689a82bd7ef2292c" -} diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch deleted file mode 100644 index 4d5bea0e..00000000 --- a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch +++ /dev/null @@ -1,463 +0,0 @@ ---- ./Makefile -+++ ./Makefile -@@ -213,7 +213,7 @@ - rm -f man/ocamlbuild.1 - - man/options_man.byte: src/ocamlbuild_pack.cmo -- $(OCAMLC) $^ -I src man/options_man.ml -o man/options_man.byte -+ $(OCAMLC) -I +unix unix.cma $^ -I src man/options_man.ml -o man/options_man.byte - - clean:: - rm -f man/options_man.cm* ---- ./src/command.ml -+++ ./src/command.ml -@@ -148,9 +148,10 @@ - let self = string_of_command_spec_with_calls call_with_tags call_with_target resolve_virtuals in - let b = Buffer.create 256 in - (* The best way to prevent bash from switching to its windows-style -- * quote-handling is to prepend an empty string before the command name. *) -+ * quote-handling is to prepend an empty string before the command name. -+ * space seems to work, too - and the ouput is nicer *) - if Sys.os_type = "Win32" then -- Buffer.add_string b "''"; -+ Buffer.add_char b ' '; - let first = ref true in - let put_space () = - if !first then -@@ -260,7 +261,7 @@ - - let execute_many ?(quiet=false) ?(pretend=false) cmds = - add_parallel_stat (List.length cmds); -- let degraded = !*My_unix.is_degraded || Sys.os_type = "Win32" in -+ let degraded = !*My_unix.is_degraded in - let jobs = !jobs in - if jobs < 0 then invalid_arg "jobs < 0"; - let max_jobs = if jobs = 0 then None else Some jobs in ---- ./src/findlib.ml -+++ ./src/findlib.ml -@@ -66,9 +66,6 @@ - (fun command -> lexer & Lexing.from_string & run_and_read command) - command - --let run_and_read command = -- Printf.ksprintf run_and_read command -- - let rec query name = - try - Hashtbl.find packages name -@@ -135,7 +132,8 @@ - with Not_found -> s - - let list () = -- List.map before_space (split_nl & run_and_read "%s list" ocamlfind) -+ let cmd = Shell.quote_filename_if_needed ocamlfind ^ " list" in -+ List.map before_space (split_nl & run_and_read cmd) - - (* The closure algorithm is easy because the dependencies are already closed - and sorted for each package. We only have to make the union. We could also ---- ./src/main.ml -+++ ./src/main.ml -@@ -162,6 +162,9 @@ - Tags.mem "traverse" tags - || List.exists (Pathname.is_prefix path_name) !Options.include_dirs - || List.exists (Pathname.is_prefix path_name) target_dirs) -+ && ((* beware: !Options.build_dir is an absolute directory *) -+ Pathname.normalize !Options.build_dir -+ <> Pathname.normalize (Pathname.pwd/path_name)) - end - end - end ---- ./src/my_std.ml -+++ ./src/my_std.ml -@@ -271,13 +271,107 @@ - try Array.iter (fun x -> if x = basename then raise Exit) a; false - with Exit -> true - -+let command_plain = function -+| [| |] -> 0 -+| margv -> -+ let rec waitpid a b = -+ match Unix.waitpid a b with -+ | exception (Unix.Unix_error(Unix.EINTR,_,_)) -> waitpid a b -+ | x -> x -+ in -+ let pid = Unix.(create_process margv.(0) margv stdin stdout stderr) in -+ let pid', process_status = waitpid [] pid in -+ assert (pid = pid'); -+ match process_status with -+ | Unix.WEXITED n -> n -+ | Unix.WSIGNALED _ -> 2 (* like OCaml's uncaught exceptions *) -+ | Unix.WSTOPPED _ -> 127 -+ -+(* can't use Lexers because of circular dependency *) -+let split_path_win str = -+ let rec aux pos = -+ try -+ let i = String.index_from str pos ';' in -+ let len = i - pos in -+ if len = 0 then -+ aux (succ i) -+ else -+ String.sub str pos (i - pos) :: aux (succ i) -+ with Not_found | Invalid_argument _ -> -+ let len = String.length str - pos in -+ if len = 0 then [] else [String.sub str pos len] -+ in -+ aux 0 -+ -+let windows_shell = lazy begin -+ let rec iter = function -+ | [] -> [| "bash.exe" ; "--norc" ; "--noprofile" |] -+ | hd::tl -> -+ let dash = Filename.concat hd "dash.exe" in -+ if Sys.file_exists dash then [|dash|] else -+ let bash = Filename.concat hd "bash.exe" in -+ if Sys.file_exists bash = false then iter tl else -+ (* if sh.exe and bash.exe exist in the same dir, choose sh.exe *) -+ let sh = Filename.concat hd "sh.exe" in -+ if Sys.file_exists sh then [|sh|] else [|bash ; "--norc" ; "--noprofile"|] -+ in -+ split_path_win (try Sys.getenv "PATH" with Not_found -> "") |> iter -+end -+ -+let prep_windows_cmd cmd = -+ (* workaround known ocaml bug, remove later *) -+ if String.contains cmd '\t' && String.contains cmd ' ' = false then -+ " " ^ cmd -+ else -+ cmd -+ -+let run_with_shell = function -+| "" -> 0 -+| cmd -> -+ let cmd = prep_windows_cmd cmd in -+ let shell = Lazy.force windows_shell in -+ let qlen = Filename.quote cmd |> String.length in -+ (* old versions of dash had problems with bs *) -+ try -+ if qlen < 7_900 then -+ command_plain (Array.append shell [| "-ec" ; cmd |]) -+ else begin -+ (* it can still work, if the called command is a cygwin tool *) -+ let ch_closed = ref false in -+ let file_deleted = ref false in -+ let fln,ch = -+ Filename.open_temp_file -+ ~mode:[Open_binary] -+ "ocamlbuildtmp" -+ ".sh" -+ in -+ try -+ let f_slash = String.map ( fun x -> if x = '\\' then '/' else x ) fln in -+ output_string ch cmd; -+ ch_closed:= true; -+ close_out ch; -+ let ret = command_plain (Array.append shell [| "-e" ; f_slash |]) in -+ file_deleted:= true; -+ Sys.remove fln; -+ ret -+ with -+ | x -> -+ if !ch_closed = false then -+ close_out_noerr ch; -+ if !file_deleted = false then -+ (try Sys.remove fln with _ -> ()); -+ raise x -+ end -+ with -+ | (Unix.Unix_error _) as x -> -+ (* Sys.command doesn't raise an exception, so run_with_shell also won't -+ raise *) -+ Printexc.to_string x ^ ":" ^ cmd |> prerr_endline; -+ 1 -+ - let sys_command = -- match Sys.os_type with -- | "Win32" -> fun cmd -> -- if cmd = "" then 0 else -- let cmd = "bash --norc -c " ^ Filename.quote cmd in -- Sys.command cmd -- | _ -> fun cmd -> if cmd = "" then 0 else Sys.command cmd -+ if Sys.win32 then run_with_shell -+ else fun cmd -> if cmd = "" then 0 else Sys.command cmd - - (* FIXME warning fix and use Filename.concat *) - let filename_concat x y = ---- ./src/my_std.mli -+++ ./src/my_std.mli -@@ -69,3 +69,6 @@ - - val split_ocaml_version : (int * int * int * string) option - (** (major, minor, patchlevel, rest) *) -+ -+val windows_shell : string array Lazy.t -+val prep_windows_cmd : string -> string ---- ./src/ocamlbuild_executor.ml -+++ ./src/ocamlbuild_executor.ml -@@ -34,6 +34,8 @@ - job_stdin : out_channel; - job_stderr : in_channel; - job_buffer : Buffer.t; -+ job_pid : int; -+ job_tmp_file: string option; - mutable job_dying : bool; - };; - -@@ -76,6 +78,61 @@ - in - loop 0 - ;; -+ -+let open_process_full_win cmd env = -+ let (in_read, in_write) = Unix.pipe () in -+ let (out_read, out_write) = Unix.pipe () in -+ let (err_read, err_write) = Unix.pipe () in -+ Unix.set_close_on_exec in_read; -+ Unix.set_close_on_exec out_write; -+ Unix.set_close_on_exec err_read; -+ let inchan = Unix.in_channel_of_descr in_read in -+ let outchan = Unix.out_channel_of_descr out_write in -+ let errchan = Unix.in_channel_of_descr err_read in -+ let shell = Lazy.force Ocamlbuild_pack.My_std.windows_shell in -+ let test_cmd = -+ String.concat " " (List.map Filename.quote (Array.to_list shell)) ^ -+ "-ec " ^ -+ Filename.quote (Ocamlbuild_pack.My_std.prep_windows_cmd cmd) in -+ let argv,tmp_file = -+ if String.length test_cmd < 7_900 then -+ Array.append -+ shell -+ [| "-ec" ; Ocamlbuild_pack.My_std.prep_windows_cmd cmd |],None -+ else -+ let fln,ch = Filename.open_temp_file ~mode:[Open_binary] "ocamlbuild" ".sh" in -+ output_string ch (Ocamlbuild_pack.My_std.prep_windows_cmd cmd); -+ close_out ch; -+ let fln' = String.map (function '\\' -> '/' | c -> c) fln in -+ Array.append -+ shell -+ [| "-c" ; fln' |], Some fln in -+ let pid = -+ Unix.create_process_env argv.(0) argv env out_read in_write err_write in -+ Unix.close out_read; -+ Unix.close in_write; -+ Unix.close err_write; -+ (pid, inchan, outchan, errchan,tmp_file) -+ -+let close_process_full_win (pid,inchan, outchan, errchan, tmp_file) = -+ let delete tmp_file = -+ match tmp_file with -+ | None -> () -+ | Some x -> try Sys.remove x with Sys_error _ -> () in -+ let tmp_file_deleted = ref false in -+ try -+ close_in inchan; -+ close_out outchan; -+ close_in errchan; -+ let res = snd(Unix.waitpid [] pid) in -+ tmp_file_deleted := true; -+ delete tmp_file; -+ res -+ with -+ | x when tmp_file <> None && !tmp_file_deleted = false -> -+ delete tmp_file; -+ raise x -+ - (* ***) - (*** execute *) - (* XXX: Add test for non reentrancy *) -@@ -130,10 +187,16 @@ - (*** add_job *) - let add_job cmd rest result id = - (*display begin fun oc -> fp oc "Job %a is %s\n%!" print_job_id id cmd; end;*) -- let (stdout', stdin', stderr') = open_process_full cmd env in -+ let (pid,stdout', stdin', stderr', tmp_file) = -+ if Sys.win32 then open_process_full_win cmd env else -+ let a,b,c = open_process_full cmd env in -+ -1,a,b,c,None -+ in - incr jobs_active; -- set_nonblock (doi stdout'); -- set_nonblock (doi stderr'); -+ if not Sys.win32 then ( -+ set_nonblock (doi stdout'); -+ set_nonblock (doi stderr'); -+ ); - let job = - { job_id = id; - job_command = cmd; -@@ -143,7 +206,9 @@ - job_stdin = stdin'; - job_stderr = stderr'; - job_buffer = Buffer.create 1024; -- job_dying = false } -+ job_dying = false; -+ job_tmp_file = tmp_file; -+ job_pid = pid } - in - outputs := FDM.add (doi stdout') job (FDM.add (doi stderr') job !outputs); - jobs := JS.add job !jobs; -@@ -199,6 +264,7 @@ - try - read fd u 0 (Bytes.length u) - with -+ | Unix.Unix_error(Unix.EPIPE,_,_) when Sys.win32 -> 0 - | Unix.Unix_error(e,_,_) -> - let msg = error_message e in - display (fun oc -> fp oc -@@ -241,14 +307,19 @@ - decr jobs_active; - - (* PR#5371: we would get EAGAIN below otherwise *) -- clear_nonblock (doi job.job_stdout); -- clear_nonblock (doi job.job_stderr); -- -+ if not Sys.win32 then ( -+ clear_nonblock (doi job.job_stdout); -+ clear_nonblock (doi job.job_stderr); -+ ); - do_read ~loop:true (doi job.job_stdout) job; - do_read ~loop:true (doi job.job_stderr) job; - outputs := FDM.remove (doi job.job_stdout) (FDM.remove (doi job.job_stderr) !outputs); - jobs := JS.remove job !jobs; -- let status = close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in -+ let status = -+ if Sys.win32 then -+ close_process_full_win (job.job_pid, job.job_stdout, job.job_stdin, job.job_stderr, job.job_tmp_file) -+ else -+ close_process_full (job.job_stdout, job.job_stdin, job.job_stderr) in - - let shown = ref false in - ---- ./src/ocamlbuild_unix_plugin.ml -+++ ./src/ocamlbuild_unix_plugin.ml -@@ -48,12 +48,22 @@ - end - - let run_and_open s kont = -+ let s_orig = s in -+ let s = -+ (* Be consistent! My_unix.run_and_open uses My_std.sys_command and -+ sys_command uses bash. *) -+ if Sys.win32 = false then s else -+ let l = match Lazy.force My_std.windows_shell |> Array.to_list with -+ | hd::tl -> (Filename.quote hd)::tl -+ | _ -> assert false in -+ "\"" ^ (String.concat " " l) ^ " -ec " ^ Filename.quote (" " ^ s) ^ "\"" -+ in - let ic = Unix.open_process_in s in - let close () = - match Unix.close_process_in ic with - | Unix.WEXITED 0 -> () - | Unix.WEXITED _ | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> -- failwith (Printf.sprintf "Error while running: %s" s) in -+ failwith (Printf.sprintf "Error while running: %s" s_orig) in - let res = try - kont ic - with e -> (close (); raise e) ---- ./src/options.ml -+++ ./src/options.ml -@@ -174,11 +174,24 @@ - build_dir := Filename.concat (Sys.getcwd ()) s - else - build_dir := s -+ -+let slashify = -+ if Sys.win32 then fun p -> String.map (function '\\' -> '/' | x -> x) p -+ else fun p ->p -+ -+let sb () = -+ match Sys.os_type with -+ | "Win32" -> -+ (try set_binary_mode_out stdout true with _ -> ()); -+ | _ -> () -+ -+ - let spec = ref ( - let print_version () = -+ sb (); - Printf.printf "ocamlbuild %s\n%!" Ocamlbuild_config.version; raise Exit_OK - in -- let print_vnum () = print_endline Ocamlbuild_config.version; raise Exit_OK in -+ let print_vnum () = sb (); print_endline Ocamlbuild_config.version; raise Exit_OK in - Arg.align - [ - "-version", Unit print_version , " Display the version"; -@@ -257,8 +270,8 @@ - "-build-dir", String set_build_dir, " Set build directory (implies no-links)"; - "-install-lib-dir", Set_string Ocamlbuild_where.libdir, " Set the install library directory"; - "-install-bin-dir", Set_string Ocamlbuild_where.bindir, " Set the install binary directory"; -- "-where", Unit (fun () -> print_endline !Ocamlbuild_where.libdir; raise Exit_OK), " Display the install library directory"; -- "-which", String (fun cmd -> print_endline (find_tool cmd); raise Exit_OK), " Display path to the tool command"; -+ "-where", Unit (fun () -> sb (); print_endline (slashify !Ocamlbuild_where.libdir); raise Exit_OK), " Display the install library directory"; -+ "-which", String (fun cmd -> sb (); print_endline (slashify (find_tool cmd)); raise Exit_OK), " Display path to the tool command"; - "-ocamlc", set_cmd ocamlc, " Set the OCaml bytecode compiler"; - "-plugin-ocamlc", set_cmd plugin_ocamlc, " Set the OCaml bytecode compiler \ - used when building myocamlbuild.ml (only)"; ---- ./src/pathname.ml -+++ ./src/pathname.ml -@@ -84,6 +84,26 @@ - | x :: xs -> x :: normalize_list xs - - let normalize x = -+ let x = -+ if Sys.win32 = false then -+ x -+ else -+ let len = String.length x in -+ let b = Bytes.create len in -+ for i = 0 to pred len do -+ match x.[i] with -+ | '\\' -> Bytes.set b i '/' -+ | c -> Bytes.set b i c -+ done; -+ if len > 1 then ( -+ let c1 = Bytes.get b 0 in -+ let c2 = Bytes.get b 1 in -+ if c2 = ':' && c1 >= 'a' && c1 <= 'z' && -+ ( len = 2 || Bytes.get b 2 = '/') then -+ Bytes.set b 0 (Char.uppercase_ascii c1) -+ ); -+ Bytes.unsafe_to_string b -+ in - if Glob.eval not_normal_form_re x then - let root, paths = split x in - join root (normalize_list paths) ---- ./src/shell.ml -+++ ./src/shell.ml -@@ -24,12 +24,26 @@ - | 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | '-' | '/' | '_' | ':' | '@' | '+' | ',' -> loop (pos + 1) - | _ -> false in - loop 0 -+ -+let generic_quote quotequote s = -+ let l = String.length s in -+ let b = Buffer.create (l + 20) in -+ Buffer.add_char b '\''; -+ for i = 0 to l - 1 do -+ if s.[i] = '\'' -+ then Buffer.add_string b quotequote -+ else Buffer.add_char b s.[i] -+ done; -+ Buffer.add_char b '\''; -+ Buffer.contents b -+let unix_quote = generic_quote "'\\''" -+ - let quote_filename_if_needed s = - if is_simple_filename s then s - (* We should probably be using [Filename.unix_quote] except that function - * isn't exported. Users on Windows will have to live with not being able to - * install OCaml into c:\o'caml. Too bad. *) -- else if Sys.os_type = "Win32" then Printf.sprintf "'%s'" s -+ else if Sys.os_type = "Win32" then unix_quote s - else Filename.quote s - let chdir dir = - reset_filesys_cache (); -@@ -37,7 +51,7 @@ - let run args target = - reset_readdir_cache (); - let cmd = String.concat " " (List.map quote_filename_if_needed args) in -- if !*My_unix.is_degraded || Sys.os_type = "Win32" then -+ if !*My_unix.is_degraded then - begin - Log.event cmd target Tags.empty; - let st = sys_command cmd in diff --git a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json deleted file mode 100644 index b24be7b5..00000000 --- a/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "build": [ - [ - "bash", - "-c", - "#{os == 'windows' ? 'patch -p1 < ocamlbuild-0.14.0.patch' : 'true'}" - ], - [ - "make", - "-f", - "configure.make", - "all", - "OCAMLBUILD_PREFIX=#{self.install}", - "OCAMLBUILD_BINDIR=#{self.bin}", - "OCAMLBUILD_LIBDIR=#{self.lib}", - "OCAMLBUILD_MANDIR=#{self.man}", - "OCAMLBUILD_NATIVE=true", - "OCAMLBUILD_NATIVE_TOOLS=true" - ], - [ - "make", - "check-if-preinstalled", - "all", - "#{os == 'windows' ? 'install' : 'opam-install'}" - ] - ] -} diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/files/findlib.patch similarity index 100% rename from esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch rename to esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/files/findlib.patch diff --git a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/package.json similarity index 92% rename from esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json rename to esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/package.json index 741211a4..bf169e50 100644 --- a/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.1_opam_override/package.json +++ b/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/package.json @@ -3,7 +3,7 @@ [ "bash", "-c", - "#{os == 'windows' ? 'patch -p1 < findlib-1.9.1.patch' : 'true'}" + "#{os == 'windows' ? 'patch -p1 < findlib.patch' : 'true'}" ], [ "./configure", diff --git a/graphql_ppx.opam b/graphql_ppx.opam index 4572649a..20974fe6 100755 --- a/graphql_ppx.opam +++ b/graphql_ppx.opam @@ -1,6 +1,9 @@ opam-version: "2.0" -maintainer: "Tomasz Cichocinski " -authors: "Tomasz Cichocinski " +maintainer: "Jaap Frolich " +authors: [ + "Jaap Frolich " + "Tomasz Cichocinski " +] synopsis: "GraphQL PPX rewriter for ReScript/ReasonML" description: "GraphQL language primitives for ReScript/ReasonML written in ReasonML" license: "MIT" @@ -11,12 +14,8 @@ build: [ ["dune" "build" "-p" name "-j" jobs] ["dune" "runtest" "-p" name "-j" jobs] {with-test} ] - depends: [ - "alcotest" {with-test} "dune" {>= "2.5"} "ocaml" {>= "4.06"} "ppxlib" {>= "0.21.0"} - "reason" - "yojson" {>= "1.6.0"} ] diff --git a/package.json b/package.json index ab8a756d..222f7d26 100755 --- a/package.json +++ b/package.json @@ -22,5 +22,12 @@ }, "publishConfig": { "access": "public" - } + }, + "files": [ + "copyPlatformBinaryInPlace.js", + "bsconfig.json", + "rescript-runtime", + "bin", + "LICENSE" + ] } diff --git a/rescript-runtime/graphql_ppx_runtime.ml b/rescript-runtime/graphql_ppx_runtime.ml new file mode 100644 index 00000000..248320a5 --- /dev/null +++ b/rescript-runtime/graphql_ppx_runtime.ml @@ -0,0 +1,41 @@ +let assign_typename : Js.Json.t -> string -> Js.Json.t = + [%raw {| (obj, typename) => { obj.__typename = typename; return obj } |}] + +[%%private +let clone = + (fun a -> + Obj.magic (Js.Obj.assign (Obj.magic (Js.Obj.empty ())) (Obj.magic a)) + : 'a Js.Dict.t -> 'a Js.Dict.t)] + +let rec deepMerge (json1 : Js.Json.t) (json2 : Js.Json.t) = + match + ( ( Obj.magic json1 = Js.null, + Js_array2.isArray json1, + Js.typeof json1 = "object" ), + ( Obj.magic json2 = Js.null, + Js_array2.isArray json2, + Js.typeof json2 = "object" ) ) + with + | (_, true, _), (_, true, _) -> + (Obj.magic + (Js.Array.mapi + (fun el1 idx -> + let el2 = Js.Array.unsafe_get (Obj.magic json2) idx in + match Js.typeof el2 = "object" with + | true -> deepMerge el1 el2 + | false -> el2) + (Obj.magic json1)) + : Js.Json.t) + | (false, false, true), (false, false, true) -> + let obj1 = clone (Obj.magic json1) in + let obj2 = Obj.magic json2 in + Js.Dict.keys obj2 + |> Js.Array.forEach (fun key -> + let existingVal = (Js.Dict.unsafeGet obj1 key : Js.Json.t) in + let newVal = (Js.Dict.unsafeGet obj2 key : Js.Json.t) in + Js.Dict.set obj1 key + (match Js.typeof existingVal <> "object" with + | true -> newVal + | false -> Obj.magic (deepMerge existingVal newVal))); + Obj.magic obj1 + | (_, _, _), (_, _, _) -> json2 diff --git a/tests_bucklescript/.gitignore b/snapshot_tests/.gitignore similarity index 100% rename from tests_bucklescript/.gitignore rename to snapshot_tests/.gitignore diff --git a/snapshot_tests/.ocamlformat b/snapshot_tests/.ocamlformat new file mode 100644 index 00000000..5f423348 --- /dev/null +++ b/snapshot_tests/.ocamlformat @@ -0,0 +1 @@ +max-indent = 2 diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_argNamedQuery_re.9a582693.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_argNamedQuery_re.9a582693.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_argNamedQuery_re.9a582693.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_argNamedQuery_re.9a582693.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_comment_re.7271f80c.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_comment_re.7271f80c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_comment_re.7271f80c.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_comment_re.7271f80c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_customDecoder_re.4211c950.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_customDecoder_re.4211c950.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_customDecoder_re.4211c950.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_customDecoder_re.4211c950.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_customScalars_re.26a34f3a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_customScalars_re.26a34f3a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_customScalars_re.26a34f3a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_customScalars_re.26a34f3a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_customTypes_re.7419b986.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_customTypes_re.7419b986.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_customTypes_re.7419b986.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_customTypes_re.7419b986.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_defaultObjectValueOnScalar_re.47c42c9f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_defaultObjectValueOnScalar_re.47c42c9f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_defaultObjectValueOnScalar_re.47c42c9f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_defaultObjectValueOnScalar_re.47c42c9f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_enumInput_re.ec10ad3f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_enumInput_re.ec10ad3f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_enumInput_re.ec10ad3f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_enumInput_re.ec10ad3f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_ewertreproduction_re.87827a9a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_ewertreproduction_re.87827a9a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_ewertreproduction_re.87827a9a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_ewertreproduction_re.87827a9a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_explicitobjectrecord_re.240e9a23.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_explicitobjectrecord_re.240e9a23.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_explicitobjectrecord_re.240e9a23.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_explicitobjectrecord_re.240e9a23.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_extensions_re.463a102b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_extensions_re.463a102b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_extensions_re.463a102b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_extensions_re.463a102b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_fragmentDefinition_re.ba778ce0.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_fragmentDefinition_re.ba778ce0.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_fragmentDefinition_re.ba778ce0.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_fragmentDefinition_re.ba778ce0.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_fragmentInFragment_re.6038646e.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_fragmentInFragment_re.6038646e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_fragmentInFragment_re.6038646e.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_fragmentInFragment_re.6038646e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_fragmentOnInterface_re.30741dde.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_fragmentOnInterface_re.30741dde.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_fragmentOnInterface_re.30741dde.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_fragmentOnInterface_re.30741dde.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_fragmentvariableinput_re.09de2a50.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_fragmentvariableinput_re.09de2a50.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_fragmentvariableinput_re.09de2a50.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_fragmentvariableinput_re.09de2a50.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_hasuraRepro_re.390e5d17.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_hasuraRepro_re.390e5d17.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_hasuraRepro_re.390e5d17.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_hasuraRepro_re.390e5d17.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_interface_re.08a678a4.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_interface_re.08a678a4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_interface_re.08a678a4.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_interface_re.08a678a4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_listsArgs_re.e94e7f71.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_listsArgs_re.e94e7f71.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_listsArgs_re.e94e7f71.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_listsArgs_re.e94e7f71.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_listsInput_re.c232aa01.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_listsInput_re.c232aa01.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_listsInput_re.c232aa01.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_listsInput_re.c232aa01.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_lists_re.2cf1c641.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_lists_re.2cf1c641.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_lists_re.2cf1c641.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_lists_re.2cf1c641.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_moduletype_re.4120dbeb.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_moduletype_re.4120dbeb.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_moduletype_re.4120dbeb.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_moduletype_re.4120dbeb.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_mutationWithArgsAndNoRecords_re.511b4163.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_mutationWithArgsAndNoRecords_re.511b4163.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_mutationWithArgsAndNoRecords_re.511b4163.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_mutationWithArgsAndNoRecords_re.511b4163.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_mutationWithArgs_re.343025a6.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_mutationWithArgs_re.343025a6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_mutationWithArgs_re.343025a6.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_mutationWithArgs_re.343025a6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_mutation_re.e6540781.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_mutation_re.e6540781.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_mutation_re.e6540781.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_mutation_re.e6540781.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_nested_re.9d4db711.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_nested_re.9d4db711.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_nested_re.9d4db711.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_nested_re.9d4db711.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_nonrecursiveInput_re.886661c4.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_nonrecursiveInput_re.886661c4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_nonrecursiveInput_re.886661c4.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_nonrecursiveInput_re.886661c4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_omitFutureValueEnum_re.3460d035.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_omitFutureValueEnum_re.3460d035.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_omitFutureValueEnum_re.3460d035.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_omitFutureValueEnum_re.3460d035.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_omitFutureValueUnion_re.4688f512.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_omitFutureValueUnion_re.4688f512.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_omitFutureValueUnion_re.4688f512.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_omitFutureValueUnion_re.4688f512.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_pokedexApolloMode_re.e416e44b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_pokedexApolloMode_re.e416e44b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_pokedexApolloMode_re.e416e44b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_pokedexApolloMode_re.e416e44b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_pokedexScalars_re.6b0f6833.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_pokedexScalars_re.6b0f6833.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_pokedexScalars_re.6b0f6833.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_pokedexScalars_re.6b0f6833.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_record_re.8da7eeee.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_record_re.8da7eeee.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_record_re.8da7eeee.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_record_re.8da7eeee.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_recursiveInput_re.51aefbd6.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_recursiveInput_re.51aefbd6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_recursiveInput_re.51aefbd6.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_recursiveInput_re.51aefbd6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_scalarsArgs_re.bdbe4d96.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_scalarsArgs_re.bdbe4d96.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_scalarsArgs_re.bdbe4d96.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_scalarsArgs_re.bdbe4d96.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_scalarsInput_re.22ea50cc.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_scalarsInput_re.22ea50cc.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_scalarsInput_re.22ea50cc.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_scalarsInput_re.22ea50cc.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_scalars_re.2ec2020b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_scalars_re.2ec2020b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_scalars_re.2ec2020b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_scalars_re.2ec2020b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_skipDirectives_re.0b6ebb6b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_skipDirectives_re.0b6ebb6b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_skipDirectives_re.0b6ebb6b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_skipDirectives_re.0b6ebb6b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_subscription_re.96f50153.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_subscription_re.96f50153.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_subscription_re.96f50153.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_subscription_re.96f50153.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_taggedtemplate_re.b2c72bab.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_taggedtemplate_re.b2c72bab.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_taggedtemplate_re.b2c72bab.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_taggedtemplate_re.b2c72bab.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_typename_re.9bc7023b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_typename_re.9bc7023b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_typename_re.9bc7023b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_typename_re.9bc7023b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_unionPartial_re.65119703.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_unionPartial_re.65119703.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_unionPartial_re.65119703.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_unionPartial_re.65119703.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_union_re.76366068.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_union_re.76366068.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_union_re.76366068.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_union_re.76366068.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Apollo_variant_re.977425a4.0.snapshot b/snapshot_tests/__snapshots__/Compile_Apollo_variant_re.977425a4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Apollo_variant_re.977425a4.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Apollo_variant_re.977425a4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_argNamedQuery_re.0245823f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_argNamedQuery_re.0245823f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_argNamedQuery_re.0245823f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_argNamedQuery_re.0245823f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_comment_re.86ce2ac9.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_comment_re.86ce2ac9.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_comment_re.86ce2ac9.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_comment_re.86ce2ac9.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_customDecoder_re.cc1c924a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_customDecoder_re.cc1c924a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_customDecoder_re.cc1c924a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_customDecoder_re.cc1c924a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_customScalars_re.6d240cfb.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_customScalars_re.6d240cfb.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_customScalars_re.6d240cfb.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_customScalars_re.6d240cfb.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_customTypes_re.10af8850.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_customTypes_re.10af8850.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_customTypes_re.10af8850.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_customTypes_re.10af8850.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_defaultObjectValueOnScalar_re.82bfc7b7.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_defaultObjectValueOnScalar_re.82bfc7b7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_defaultObjectValueOnScalar_re.82bfc7b7.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_defaultObjectValueOnScalar_re.82bfc7b7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_enumInput_re.51f9f52d.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_enumInput_re.51f9f52d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_enumInput_re.51f9f52d.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_enumInput_re.51f9f52d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_ewertreproduction_re.ea0d79ae.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_ewertreproduction_re.ea0d79ae.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_ewertreproduction_re.ea0d79ae.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_ewertreproduction_re.ea0d79ae.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_explicitobjectrecord_re.e6f225d7.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_explicitobjectrecord_re.e6f225d7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_explicitobjectrecord_re.e6f225d7.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_explicitobjectrecord_re.e6f225d7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_extensions_re.05a5c113.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_extensions_re.05a5c113.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_extensions_re.05a5c113.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_extensions_re.05a5c113.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_fragmentDefinition_re.640bdbaf.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_fragmentDefinition_re.640bdbaf.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_fragmentDefinition_re.640bdbaf.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_fragmentDefinition_re.640bdbaf.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_fragmentInFragment_re.37f15525.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_fragmentInFragment_re.37f15525.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_fragmentInFragment_re.37f15525.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_fragmentInFragment_re.37f15525.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_fragmentOnInterface_re.df343f42.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_fragmentOnInterface_re.df343f42.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_fragmentOnInterface_re.df343f42.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_fragmentOnInterface_re.df343f42.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_fragmentvariableinput_re.a04fbf3a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_fragmentvariableinput_re.a04fbf3a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_fragmentvariableinput_re.a04fbf3a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_fragmentvariableinput_re.a04fbf3a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_hasuraRepro_re.83c1e740.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_hasuraRepro_re.83c1e740.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_hasuraRepro_re.83c1e740.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_hasuraRepro_re.83c1e740.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_interface_re.1006f89f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_interface_re.1006f89f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_interface_re.1006f89f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_interface_re.1006f89f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_listsArgs_re.eb4fb52e.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_listsArgs_re.eb4fb52e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_listsArgs_re.eb4fb52e.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_listsArgs_re.eb4fb52e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_listsInput_re.cdeb028e.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_listsInput_re.cdeb028e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_listsInput_re.cdeb028e.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_listsInput_re.cdeb028e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_lists_re.dc83f1c1.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_lists_re.dc83f1c1.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_lists_re.dc83f1c1.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_lists_re.dc83f1c1.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_moduletype_re.c34fccf0.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_moduletype_re.c34fccf0.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_moduletype_re.c34fccf0.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_moduletype_re.c34fccf0.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_mutationWithArgsAndNoRecords_re.f5db67db.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_mutationWithArgsAndNoRecords_re.f5db67db.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_mutationWithArgsAndNoRecords_re.f5db67db.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_mutationWithArgsAndNoRecords_re.f5db67db.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_mutationWithArgs_re.46210af6.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_mutationWithArgs_re.46210af6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_mutationWithArgs_re.46210af6.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_mutationWithArgs_re.46210af6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_mutation_re.7ba67541.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_mutation_re.7ba67541.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_mutation_re.7ba67541.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_mutation_re.7ba67541.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_nested_re.07dfa31e.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_nested_re.07dfa31e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_nested_re.07dfa31e.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_nested_re.07dfa31e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_nonrecursiveInput_re.3a59f106.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_nonrecursiveInput_re.3a59f106.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_nonrecursiveInput_re.3a59f106.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_nonrecursiveInput_re.3a59f106.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_omitFutureValueEnum_re.944d834f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_omitFutureValueEnum_re.944d834f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_omitFutureValueEnum_re.944d834f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_omitFutureValueEnum_re.944d834f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_omitFutureValueUnion_re.c8ad022c.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_omitFutureValueUnion_re.c8ad022c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_omitFutureValueUnion_re.c8ad022c.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_omitFutureValueUnion_re.c8ad022c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_pokedexApolloMode_re.c0dcf343.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_pokedexApolloMode_re.c0dcf343.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_pokedexApolloMode_re.c0dcf343.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_pokedexApolloMode_re.c0dcf343.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_pokedexScalars_re.05c373a3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_pokedexScalars_re.05c373a3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_pokedexScalars_re.05c373a3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_pokedexScalars_re.05c373a3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_record_re.de74d4e8.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_record_re.de74d4e8.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_record_re.de74d4e8.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_record_re.de74d4e8.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_recursiveInput_re.53dbb475.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_recursiveInput_re.53dbb475.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_recursiveInput_re.53dbb475.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_recursiveInput_re.53dbb475.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_scalarsArgs_re.bffc1b6a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_scalarsArgs_re.bffc1b6a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_scalarsArgs_re.bffc1b6a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_scalarsArgs_re.bffc1b6a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_scalarsInput_re.d02e88f3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_scalarsInput_re.d02e88f3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_scalarsInput_re.d02e88f3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_scalarsInput_re.d02e88f3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_scalars_re.f7b94f41.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_scalars_re.f7b94f41.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_scalars_re.f7b94f41.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_scalars_re.f7b94f41.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_skipDirectives_re.afb2da16.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_skipDirectives_re.afb2da16.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_skipDirectives_re.afb2da16.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_skipDirectives_re.afb2da16.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_subscription_re.0c2c9898.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_subscription_re.0c2c9898.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_subscription_re.0c2c9898.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_subscription_re.0c2c9898.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_taggedtemplate_re.e3bb5753.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_taggedtemplate_re.e3bb5753.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_taggedtemplate_re.e3bb5753.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_taggedtemplate_re.e3bb5753.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_typename_re.ca44faf7.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_typename_re.ca44faf7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_typename_re.ca44faf7.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_typename_re.ca44faf7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_unionPartial_re.d2c5350a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_unionPartial_re.d2c5350a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_unionPartial_re.d2c5350a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_unionPartial_re.d2c5350a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_union_re.6b6a06d3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_union_re.6b6a06d3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_union_re.6b6a06d3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_union_re.6b6a06d3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Records_variant_re.25ca9c5d.0.snapshot b/snapshot_tests/__snapshots__/Compile_Records_variant_re.25ca9c5d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Records_variant_re.25ca9c5d.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Records_variant_re.25ca9c5d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_argNamedQuery_re.6adcaf54.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_argNamedQuery_re.6adcaf54.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_argNamedQuery_re.6adcaf54.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_argNamedQuery_re.6adcaf54.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_comment_re.b8a0b8ce.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_comment_re.b8a0b8ce.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_comment_re.b8a0b8ce.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_comment_re.b8a0b8ce.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_customDecoder_re.dc680ba3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_customDecoder_re.dc680ba3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_customDecoder_re.dc680ba3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_customDecoder_re.dc680ba3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_customScalars_re.268844f5.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_customScalars_re.268844f5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_customScalars_re.268844f5.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_customScalars_re.268844f5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_customTypes_re.1f10d345.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_customTypes_re.1f10d345.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_customTypes_re.1f10d345.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_customTypes_re.1f10d345.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_defaultObjectValueOnScalar_re.8c8acb0b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_defaultObjectValueOnScalar_re.8c8acb0b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_defaultObjectValueOnScalar_re.8c8acb0b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_defaultObjectValueOnScalar_re.8c8acb0b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_enumInput_re.57c81965.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_enumInput_re.57c81965.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_enumInput_re.57c81965.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_enumInput_re.57c81965.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_ewertreproduction_re.0df0b934.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_ewertreproduction_re.0df0b934.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_ewertreproduction_re.0df0b934.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_ewertreproduction_re.0df0b934.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_explicitobjectrecord_re.11bc46c3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_explicitobjectrecord_re.11bc46c3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_explicitobjectrecord_re.11bc46c3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_explicitobjectrecord_re.11bc46c3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_extensions_re.9e1c3556.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_extensions_re.9e1c3556.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_extensions_re.9e1c3556.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_extensions_re.9e1c3556.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_fragmentDefinition_re.ae81d77c.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_fragmentDefinition_re.ae81d77c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_fragmentDefinition_re.ae81d77c.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_fragmentDefinition_re.ae81d77c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_fragmentInFragment_re.04d0ca63.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_fragmentInFragment_re.04d0ca63.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_fragmentInFragment_re.04d0ca63.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_fragmentInFragment_re.04d0ca63.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_fragmentOnInterface_re.5fde1618.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_fragmentOnInterface_re.5fde1618.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_fragmentOnInterface_re.5fde1618.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_fragmentOnInterface_re.5fde1618.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_fragmentvariableinput_re.b77746bf.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_fragmentvariableinput_re.b77746bf.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_fragmentvariableinput_re.b77746bf.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_fragmentvariableinput_re.b77746bf.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_hasuraRepro_re.4b463a06.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_hasuraRepro_re.4b463a06.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_hasuraRepro_re.4b463a06.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_hasuraRepro_re.4b463a06.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_interface_re.9c6cccb5.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_interface_re.9c6cccb5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_interface_re.9c6cccb5.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_interface_re.9c6cccb5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_listsArgs_re.4bffca2a.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_listsArgs_re.4bffca2a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_listsArgs_re.4bffca2a.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_listsArgs_re.4bffca2a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_listsInput_re.73feb0bb.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_listsInput_re.73feb0bb.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_listsInput_re.73feb0bb.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_listsInput_re.73feb0bb.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_lists_re.a911b1c5.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_lists_re.a911b1c5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_lists_re.a911b1c5.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_lists_re.a911b1c5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_moduletype_re.a811f2cd.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_moduletype_re.a811f2cd.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_moduletype_re.a811f2cd.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_moduletype_re.a811f2cd.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_mutationWithArgsAndNoRecords_re.3a8ba572.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_mutationWithArgsAndNoRecords_re.3a8ba572.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_mutationWithArgsAndNoRecords_re.3a8ba572.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_mutationWithArgsAndNoRecords_re.3a8ba572.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_mutationWithArgs_re.83351ce1.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_mutationWithArgs_re.83351ce1.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_mutationWithArgs_re.83351ce1.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_mutationWithArgs_re.83351ce1.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_mutation_re.156d5ea3.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_mutation_re.156d5ea3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_mutation_re.156d5ea3.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_mutation_re.156d5ea3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_nested_re.bcb0d8bc.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_nested_re.bcb0d8bc.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_nested_re.bcb0d8bc.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_nested_re.bcb0d8bc.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_nonrecursiveInput_re.cd601056.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_nonrecursiveInput_re.cd601056.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_nonrecursiveInput_re.cd601056.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_nonrecursiveInput_re.cd601056.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_omitFutureValueEnum_re.48c34a68.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_omitFutureValueEnum_re.48c34a68.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_omitFutureValueEnum_re.48c34a68.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_omitFutureValueEnum_re.48c34a68.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_omitFutureValueUnion_re.b3140dec.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_omitFutureValueUnion_re.b3140dec.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_omitFutureValueUnion_re.b3140dec.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_omitFutureValueUnion_re.b3140dec.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_pokedexApolloMode_re.6d25061b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_pokedexApolloMode_re.6d25061b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_pokedexApolloMode_re.6d25061b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_pokedexApolloMode_re.6d25061b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_pokedexScalars_re.19295b04.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_pokedexScalars_re.19295b04.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_pokedexScalars_re.19295b04.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_pokedexScalars_re.19295b04.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_record_re.61531582.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_record_re.61531582.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_record_re.61531582.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_record_re.61531582.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_recursiveInput_re.5a55b39e.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_recursiveInput_re.5a55b39e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_recursiveInput_re.5a55b39e.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_recursiveInput_re.5a55b39e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_scalarsArgs_re.9188aa6f.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_scalarsArgs_re.9188aa6f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_scalarsArgs_re.9188aa6f.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_scalarsArgs_re.9188aa6f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_scalarsInput_re.8bc83997.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_scalarsInput_re.8bc83997.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_scalarsInput_re.8bc83997.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_scalarsInput_re.8bc83997.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_scalars_re.911b3188.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_scalars_re.911b3188.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_scalars_re.911b3188.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_scalars_re.911b3188.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_skipDirectives_re.864cbdba.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_skipDirectives_re.864cbdba.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_skipDirectives_re.864cbdba.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_skipDirectives_re.864cbdba.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_subscription_re.72042ba6.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_subscription_re.72042ba6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_subscription_re.72042ba6.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_subscription_re.72042ba6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_taggedtemplate_re.d058c095.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_taggedtemplate_re.d058c095.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_taggedtemplate_re.d058c095.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_taggedtemplate_re.d058c095.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_typename_re.9f9b776b.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_typename_re.9f9b776b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_typename_re.9f9b776b.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_typename_re.9f9b776b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_unionPartial_re.e7fab477.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_unionPartial_re.e7fab477.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_unionPartial_re.e7fab477.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_unionPartial_re.e7fab477.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_union_re.e2830f70.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_union_re.e2830f70.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_union_re.e2830f70.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_union_re.e2830f70.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Compile_Template_variant_re.4305b7b8.0.snapshot b/snapshot_tests/__snapshots__/Compile_Template_variant_re.4305b7b8.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Compile_Template_variant_re.4305b7b8.0.snapshot rename to snapshot_tests/__snapshots__/Compile_Template_variant_re.4305b7b8.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot index f9fa2968..e32dfb7d 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.482143db.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › InvalidObjectValues2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m 6 \027[2m\226\148\134\027[0m query { 7 \027[2m\226\148\134\027[0m invalidObjectValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot index 1349b308..62cfa220 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.6b67a026.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › InvalidObjectValues3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m 7 \027[2m\226\148\134\027[0m invalidObjectValues( 8 \027[2m\226\148\134\027[0m nonRec: { diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot index a378ff7f..da880ff4 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.89fdea74.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › InvalidObjectValues5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m 18 \027[2m\226\148\134\027[0m otherField: \"\" 19 \027[2m\226\148\134\027[0m } diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot index 3d995102..0e4bc29e 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_InvalidObjectValues_re.be5c2761.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › InvalidObjectValues4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m 8 \027[2m\226\148\134\027[0m nonRec: { 9 \027[2m\226\148\134\027[0m nonNullableField: \"!\" diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot similarity index 69% rename from tests_bucklescript/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot index c8c4f18f..de6706ba 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_deprecatedFields_re.45024714.0.snapshot @@ -1,5 +1,5 @@ Error Apollo › deprecatedFields.re › output -File \"tests_bucklescript/operations/errors/deprecatedFields.re\", line 7, characters 6-21: +File \"snapshot_tests/operations/errors/deprecatedFields.re\", line 7, characters 6-21: 7 | deprecatedField ^^^^^^^^^^^^^^^ Warning 22 [preprocessor]: Field \"deprecatedField\" has been deprecated. Reason: Use something else instead diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot index 809fde0e..de784bab 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_fragmentIssue_re.d2423eaa.0.snapshot @@ -1,8 +1,8 @@ Error Apollo › fragmentIssue.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m - 6 \027[2m\226\148\130\027[0m + 6 \027[2m\226\148\130\027[0m 7 \027[2m\226\148\130\027[0m fragment DemoVersion_Model on DemoVersion { \027[1;31m8\027[0m \027[2m\226\148\130\027[0m \027[1;31mscreens {\027[0m \027[1;31m9\027[0m \027[2m\226\148\130\027[0m \027[1;31m ...Screen_Model\027[0m diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot similarity index 86% rename from tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot index 699f0d90..03f7d4ab 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissingInFragment_re.a8aed232.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › fragmentSpreadMissingInFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m 3 \027[2m\226\148\130\027[0m fragment ListFragment on Lists { 4 \027[2m\226\148\130\027[0m nullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot similarity index 88% rename from tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot index b4e09633..a1e6513e 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_fragmentSpreadMissing_re.e2f1f4d7.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › fragmentSpreadMissing.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m 2 \027[2m\226\148\134\027[0m {| 3 \027[2m\226\148\134\027[0m query MyQuery { diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot index 10c16eb5..766db0ba 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_fragmentWithWrongName_re.8cefd23e.0.snapshot @@ -1,12 +1,12 @@ Error Apollo › fragmentWithWrongName.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m 13 \027[2m\226\148\134\027[0m {| 14 \027[2m\226\148\134\027[0m query MyQuery { \027[1;31m15\027[0m \027[2m\226\148\134\027[0m \027[1;31mlists {\027[0m \027[1;31m16\027[0m \027[2m\226\148\134\027[0m \027[1;31m ...WrongFragmentName\027[0m - \027[1;31m17\027[0m \027[2m\226\148\134\027[0m + \027[1;31m17\027[0m \027[2m\226\148\134\027[0m \027[1;31m18\027[0m \027[2m\226\148\134\027[0m \027[1;31m }\027[0m 19 \027[2m\226\148\134\027[0m } 20 \027[2m\226\148\134\027[0m |} diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot index 15173d3d..3f0f11af 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.28a23cfc.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m query invalidArgValues { 8 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot index e7d8cd43..a53a4766 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.7acf25b6.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot index b85acde6..ad34dee8 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.aa548ab6.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m stringRequired: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot index cc77f542..ceab4bfe 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d036ec74.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot index e09b48d4..f31d4c1e 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d05fe458.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m id: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot index aaf40bb3..f4719f8b 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidArgVariableType_re.d5c9dfee.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidArgVariableType4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m 8 \027[2m\226\148\134\027[0m invalidArgValues( 9 \027[2m\226\148\134\027[0m custom: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot index 302af777..1223bffc 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.1e8abd82.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidDefaultValue3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot index 7413a0e6..076226ed 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.20c164f5.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidDefaultValue4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot index b0aaf8f2..b90b4996 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.24af07f4.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidDefaultValue2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot index 5d585c04..d3eddeb5 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidDefaultValue_re.ba872462.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidDefaultValue1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot index 0a53b812..bcc019d6 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.0400e7ea.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidObjectValues1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m 17 \027[2m\226\148\134\027[0m otherField: \"\" 18 \027[2m\226\148\134\027[0m inner: { diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot index 4e8b2e30..f9d187f6 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.bb71eb9b.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidObjectValues6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot index e2814f30..22778536 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_invalidObjectValues_re.ea612d6f.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › invalidObjectValues7.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot similarity index 83% rename from tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot index 656c1361..8b6a64ad 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.25dfdf9b.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › missingField1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m + \027[36msnapshot_tests/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m 4 \027[2m\226\148\134\027[0m customScalarField(argOptional: $opt, argRequired: $req) { 5 \027[2m\226\148\134\027[0m nullable diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot index a8c565b3..0781d414 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.31cfaf6e.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › missingField2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m + \027[36msnapshot_tests/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m 11 \027[2m\226\148\134\027[0m {| 12 \027[2m\226\148\134\027[0m query { diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot index 8612c070..12669bfa 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_missingField_re.56f8566c.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › missingField3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m + \027[36msnapshot_tests/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m 13 \027[2m\226\148\134\027[0m l1: lists { 14 \027[2m\226\148\134\027[0m ...Fragments diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot index 998088b8..6c771451 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_missingFragment_re.9178eb63.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › missingFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m + \027[36msnapshot_tests/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m 1 \027[2m\226\148\130\027[0m module Fragment = [%graphql 2 \027[2m\226\148\130\027[0m {| diff --git a/tests_bucklescript/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot b/snapshot_tests/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot rename to snapshot_tests/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot index 692e3f1d..3f605094 100644 --- a/tests_bucklescript/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Apollo_wrongArguments_re.74bb7eb8.0.snapshot @@ -1,6 +1,6 @@ Error Apollo › wrongArguments.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m + \027[36msnapshot_tests/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m 12 \027[2m\226\148\134\027[0m lists { 13 \027[2m\226\148\134\027[0m nonNullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot index 3446bb60..09bf7f27 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.44ae152d.0.snapshot @@ -1,6 +1,6 @@ Error Records › InvalidObjectValues4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m 8 \027[2m\226\148\134\027[0m nonRec: { 9 \027[2m\226\148\134\027[0m nonNullableField: \"!\" diff --git a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot index 41204643..d81f1968 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.a1011abe.0.snapshot @@ -1,6 +1,6 @@ Error Records › InvalidObjectValues3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m 7 \027[2m\226\148\134\027[0m invalidObjectValues( 8 \027[2m\226\148\134\027[0m nonRec: { diff --git a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot index 2121f15d..1992f806 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.d1e31cc4.0.snapshot @@ -1,6 +1,6 @@ Error Records › InvalidObjectValues2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m 6 \027[2m\226\148\134\027[0m query { 7 \027[2m\226\148\134\027[0m invalidObjectValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot index d397761e..40096a52 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_InvalidObjectValues_re.fb834dd4.0.snapshot @@ -1,6 +1,6 @@ Error Records › InvalidObjectValues5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m 18 \027[2m\226\148\134\027[0m otherField: \"\" 19 \027[2m\226\148\134\027[0m } diff --git a/tests_bucklescript/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot similarity index 69% rename from tests_bucklescript/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot index acb5d160..443fcdd8 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_deprecatedFields_re.b4ab61b9.0.snapshot @@ -1,5 +1,5 @@ Error Records › deprecatedFields.re › output -File \"tests_bucklescript/operations/errors/deprecatedFields.re\", line 7, characters 6-21: +File \"snapshot_tests/operations/errors/deprecatedFields.re\", line 7, characters 6-21: 7 | deprecatedField ^^^^^^^^^^^^^^^ Warning 22 [preprocessor]: Field \"deprecatedField\" has been deprecated. Reason: Use something else instead diff --git a/tests_bucklescript/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot index 4f04f934..988af7ba 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_fragmentIssue_re.9aeaa802.0.snapshot @@ -1,8 +1,8 @@ Error Records › fragmentIssue.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m - 6 \027[2m\226\148\130\027[0m + 6 \027[2m\226\148\130\027[0m 7 \027[2m\226\148\130\027[0m fragment DemoVersion_Model on DemoVersion { \027[1;31m8\027[0m \027[2m\226\148\130\027[0m \027[1;31mscreens {\027[0m \027[1;31m9\027[0m \027[2m\226\148\130\027[0m \027[1;31m ...Screen_Model\027[0m diff --git a/tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot similarity index 86% rename from tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot index 1a166c30..abbbf059 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissingInFragment_re.6141afc4.0.snapshot @@ -1,6 +1,6 @@ Error Records › fragmentSpreadMissingInFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m 3 \027[2m\226\148\130\027[0m fragment ListFragment on Lists { 4 \027[2m\226\148\130\027[0m nullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot similarity index 88% rename from tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot index 71ba0f02..0d8e0427 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_fragmentSpreadMissing_re.ce0cdd5d.0.snapshot @@ -1,6 +1,6 @@ Error Records › fragmentSpreadMissing.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m 2 \027[2m\226\148\134\027[0m {| 3 \027[2m\226\148\134\027[0m query MyQuery { diff --git a/tests_bucklescript/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot index 257fb611..7d99cd16 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_fragmentWithWrongName_re.6f87e237.0.snapshot @@ -1,12 +1,12 @@ Error Records › fragmentWithWrongName.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m 13 \027[2m\226\148\134\027[0m {| 14 \027[2m\226\148\134\027[0m query MyQuery { \027[1;31m15\027[0m \027[2m\226\148\134\027[0m \027[1;31mlists {\027[0m \027[1;31m16\027[0m \027[2m\226\148\134\027[0m \027[1;31m ...WrongFragmentName\027[0m - \027[1;31m17\027[0m \027[2m\226\148\134\027[0m + \027[1;31m17\027[0m \027[2m\226\148\134\027[0m \027[1;31m18\027[0m \027[2m\226\148\134\027[0m \027[1;31m }\027[0m 19 \027[2m\226\148\134\027[0m } 20 \027[2m\226\148\134\027[0m |} diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot index f55c1d47..a8a8fad4 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.143b95e8.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m 8 \027[2m\226\148\134\027[0m invalidArgValues( 9 \027[2m\226\148\134\027[0m custom: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot index b45b8c3a..d6d4b792 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.7eb38c38.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m id: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot index 9d3b14c3..880ec95c 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8c75d151.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot index 378a0d3a..b818d834 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.8ea5216f.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot index 91dac78c..318b52d6 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.a4e4f057.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m query invalidArgValues { 8 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot index 83414428..cc398752 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidArgVariableType_re.c6836e1b.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidArgVariableType3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m stringRequired: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot index 63b7307e..3c72ac9e 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.3e57a3aa.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidDefaultValue3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot index fbeeb59b..60ea3318 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.501de8c5.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidDefaultValue2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot index 84fa9913..e1b3439b 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.7a2e6196.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidDefaultValue4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot index 2b983d3e..e381a96f 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidDefaultValue_re.ec85952b.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidDefaultValue1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot index ff28d5e4..143f1bc1 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.2157d75a.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidObjectValues7.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot index 6decd658..2447631f 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.3982ce1b.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidObjectValues6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot index 1e8b67f7..15ab9788 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_invalidObjectValues_re.95e70ba0.0.snapshot @@ -1,6 +1,6 @@ Error Records › invalidObjectValues1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m 17 \027[2m\226\148\134\027[0m otherField: \"\" 18 \027[2m\226\148\134\027[0m inner: { diff --git a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot index 8ec0a740..c244d33b 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_missingField_re.1cc96e2f.0.snapshot @@ -1,6 +1,6 @@ Error Records › missingField2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m + \027[36msnapshot_tests/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m 11 \027[2m\226\148\134\027[0m {| 12 \027[2m\226\148\134\027[0m query { diff --git a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot index 65c548d7..d1d3a33b 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_missingField_re.b0b30a00.0.snapshot @@ -1,6 +1,6 @@ Error Records › missingField3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m + \027[36msnapshot_tests/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m 13 \027[2m\226\148\134\027[0m l1: lists { 14 \027[2m\226\148\134\027[0m ...Fragments diff --git a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot similarity index 83% rename from tests_bucklescript/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot index 9dfa7ff6..ec450ffa 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_missingField_re.c99a95b9.0.snapshot @@ -1,6 +1,6 @@ Error Records › missingField1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m + \027[36msnapshot_tests/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m 4 \027[2m\226\148\134\027[0m customScalarField(argOptional: $opt, argRequired: $req) { 5 \027[2m\226\148\134\027[0m nullable diff --git a/tests_bucklescript/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot index 46a21e8c..aa98e0c1 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_missingFragment_re.1337ee0c.0.snapshot @@ -1,6 +1,6 @@ Error Records › missingFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m + \027[36msnapshot_tests/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m 1 \027[2m\226\148\130\027[0m module Fragment = [%graphql 2 \027[2m\226\148\130\027[0m {| diff --git a/tests_bucklescript/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot b/snapshot_tests/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot rename to snapshot_tests/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot index 85863c62..0e738f19 100644 --- a/tests_bucklescript/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Records_wrongArguments_re.b64e5941.0.snapshot @@ -1,6 +1,6 @@ Error Records › wrongArguments.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m + \027[36msnapshot_tests/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m 12 \027[2m\226\148\134\027[0m lists { 13 \027[2m\226\148\134\027[0m nonNullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot similarity index 83% rename from tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot index 9de7a289..b142ac6a 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.166343bf.0.snapshot @@ -1,6 +1,6 @@ Error Template › InvalidObjectValues2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues2.re\027[0m:\027[2m8:13-18\027[0m 6 \027[2m\226\148\134\027[0m query { 7 \027[2m\226\148\134\027[0m invalidObjectValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot index 3e277a57..cd6d6518 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.8372fc69.0.snapshot @@ -1,6 +1,6 @@ Error Template › InvalidObjectValues4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues4.re\027[0m:\027[2m10:32-34\027[0m 8 \027[2m\226\148\134\027[0m nonRec: { 9 \027[2m\226\148\134\027[0m nonNullableField: \"!\" diff --git a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot index 3281db4c..38d03929 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.90163058.0.snapshot @@ -1,6 +1,6 @@ Error Template › InvalidObjectValues3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues3.re\027[0m:\027[2m9:35\027[0m 7 \027[2m\226\148\134\027[0m invalidObjectValues( 8 \027[2m\226\148\134\027[0m nonRec: { diff --git a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot index 0ac74096..a149a617 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_InvalidObjectValues_re.e1bf60dd.0.snapshot @@ -1,6 +1,6 @@ Error Template › InvalidObjectValues5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m + \027[36msnapshot_tests/operations/errors/InvalidObjectValues5.re\027[0m:\027[2m20:23-24\027[0m 18 \027[2m\226\148\134\027[0m otherField: \"\" 19 \027[2m\226\148\134\027[0m } diff --git a/tests_bucklescript/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot similarity index 69% rename from tests_bucklescript/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot index 083bed5c..c3a17820 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_deprecatedFields_re.e605d682.0.snapshot @@ -1,5 +1,5 @@ Error Template › deprecatedFields.re › output -File \"tests_bucklescript/operations/errors/deprecatedFields.re\", line 7, characters 6-21: +File \"snapshot_tests/operations/errors/deprecatedFields.re\", line 7, characters 6-21: 7 | deprecatedField ^^^^^^^^^^^^^^^ Warning 22 [preprocessor]: Field \"deprecatedField\" has been deprecated. Reason: Use something else instead diff --git a/tests_bucklescript/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot index 4301b212..caca5a98 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_fragmentIssue_re.27d341cf.0.snapshot @@ -1,8 +1,8 @@ Error Template › fragmentIssue.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentIssue.re\027[0m:\027[2m8:5-10:5\027[0m - 6 \027[2m\226\148\130\027[0m + 6 \027[2m\226\148\130\027[0m 7 \027[2m\226\148\130\027[0m fragment DemoVersion_Model on DemoVersion { \027[1;31m8\027[0m \027[2m\226\148\130\027[0m \027[1;31mscreens {\027[0m \027[1;31m9\027[0m \027[2m\226\148\130\027[0m \027[1;31m ...Screen_Model\027[0m diff --git a/tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot similarity index 86% rename from tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot index 3b05311e..32e380c4 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissingInFragment_re.4b7bd49b.0.snapshot @@ -1,6 +1,6 @@ Error Template › fragmentSpreadMissingInFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re\027[0m:\027[2m5:5-22\027[0m 3 \027[2m\226\148\130\027[0m fragment ListFragment on Lists { 4 \027[2m\226\148\130\027[0m nullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot similarity index 88% rename from tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot index 34fe0166..4895155b 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_fragmentSpreadMissing_re.94259263.0.snapshot @@ -1,6 +1,6 @@ Error Template › fragmentSpreadMissing.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentSpreadMissing.re\027[0m:\027[2m4:5-6:5\027[0m 2 \027[2m\226\148\134\027[0m {| 3 \027[2m\226\148\134\027[0m query MyQuery { diff --git a/tests_bucklescript/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot index f47b59eb..905b9fb8 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_fragmentWithWrongName_re.851ec029.0.snapshot @@ -1,12 +1,12 @@ Error Template › fragmentWithWrongName.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m + \027[36msnapshot_tests/operations/errors/fragmentWithWrongName.re\027[0m:\027[2m15:5-18:5\027[0m 13 \027[2m\226\148\134\027[0m {| 14 \027[2m\226\148\134\027[0m query MyQuery { \027[1;31m15\027[0m \027[2m\226\148\134\027[0m \027[1;31mlists {\027[0m \027[1;31m16\027[0m \027[2m\226\148\134\027[0m \027[1;31m ...WrongFragmentName\027[0m - \027[1;31m17\027[0m \027[2m\226\148\134\027[0m + \027[1;31m17\027[0m \027[2m\226\148\134\027[0m \027[1;31m18\027[0m \027[2m\226\148\134\027[0m \027[1;31m }\027[0m 19 \027[2m\226\148\134\027[0m } 20 \027[2m\226\148\134\027[0m |} diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot index dc8e9ebc..29a93710 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.46dc6186.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType3.re\027[0m:\027[2m9:17-21\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m stringRequired: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot index eb6ac464..ee6cbb60 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.75c44428.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType6.re\027[0m:\027[2m8:15-18\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot index 1838d53d..12e907d3 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.8212a9e3.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType5.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType5.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m invalidArgValues( 8 \027[2m\226\148\134\027[0m id: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot index 2fb52efc..487e7d14 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.ac05eb41.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType4.re\027[0m:\027[2m10:14-18\027[0m 8 \027[2m\226\148\134\027[0m invalidArgValues( 9 \027[2m\226\148\134\027[0m custom: $arg diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot index 10cf4c42..c999e4ab 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.c16356ed.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType1.re\027[0m:\027[2m9:25-28\027[0m 7 \027[2m\226\148\134\027[0m query invalidArgValues { 8 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot index 4e699159..d3542241 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidArgVariableType_re.fbf040c9.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidArgVariableType2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m + \027[36msnapshot_tests/operations/errors/invalidArgVariableType2.re\027[0m:\027[2m8:25-28\027[0m 6 \027[2m\226\148\134\027[0m query invalidArgValues($arg: String) { 7 \027[2m\226\148\134\027[0m invalidArgValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot index 6b4cc6d0..35aa8fdf 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.500fb8d1.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidDefaultValue4.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue4.re\027[0m:\027[2m8:17-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot index 1a73faf6..8bffc74a 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.592efd67.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidDefaultValue1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue1.re\027[0m:\027[2m21:14-26\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot index 293ff190..7142d76e 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.63420faa.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidDefaultValue3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue3.re\027[0m:\027[2m21:13\027[0m 19 \027[2m\226\148\134\027[0m query invalidDefaultValues { 20 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot index f9edbb77..60b19772 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidDefaultValue_re.8ef5b8e0.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidDefaultValue2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m + \027[36msnapshot_tests/operations/errors/invalidDefaultValue2.re\027[0m:\027[2m8:14-26\027[0m 6 \027[2m\226\148\134\027[0m query invalidDefaultValues { 7 \027[2m\226\148\134\027[0m invalidDefaultValues( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot index 13ba9b20..60605268 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.743cee07.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidObjectValues6.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues6.re\027[0m:\027[2m20:27-37\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot index 34210e9a..f8ff4440 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.a6c07ac6.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidObjectValues1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues1.re\027[0m:\027[2m19:37\027[0m 17 \027[2m\226\148\134\027[0m otherField: \"\" 18 \027[2m\226\148\134\027[0m inner: { diff --git a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot index 66965126..fc2b1e99 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_invalidObjectValues_re.d29e3050.0.snapshot @@ -1,6 +1,6 @@ Error Template › invalidObjectValues7.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m + \027[36msnapshot_tests/operations/errors/invalidObjectValues7.re\027[0m:\027[2m20:36\027[0m 18 \027[2m\226\148\134\027[0m query { 19 \027[2m\226\148\134\027[0m invalidObjectValuesLst( diff --git a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot similarity index 83% rename from tests_bucklescript/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot index 5ca9213c..637e077b 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_missingField_re.367bc10c.0.snapshot @@ -1,6 +1,6 @@ Error Template › missingField1.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m + \027[36msnapshot_tests/operations/errors/missingField1.re\027[0m:\027[2m6:7-27\027[0m 4 \027[2m\226\148\134\027[0m customScalarField(argOptional: $opt, argRequired: $req) { 5 \027[2m\226\148\134\027[0m nullable diff --git a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot similarity index 80% rename from tests_bucklescript/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot index f8f620da..76b562d7 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_missingField_re.3e550a8c.0.snapshot @@ -1,6 +1,6 @@ Error Template › missingField3.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m + \027[36msnapshot_tests/operations/errors/missingField3.re\027[0m:\027[2m15:7-18\027[0m 13 \027[2m\226\148\134\027[0m l1: lists { 14 \027[2m\226\148\134\027[0m ...Fragments diff --git a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot similarity index 81% rename from tests_bucklescript/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot index 82918188..a3d1a9df 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_missingField_re.45edb96b.0.snapshot @@ -1,6 +1,6 @@ Error Template › missingField2.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m + \027[36msnapshot_tests/operations/errors/missingField2.re\027[0m:\027[2m13:9-28\027[0m 11 \027[2m\226\148\134\027[0m {| 12 \027[2m\226\148\134\027[0m query { diff --git a/tests_bucklescript/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot index 1a4e84d8..97d52594 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_missingFragment_re.c8f34e70.0.snapshot @@ -1,6 +1,6 @@ Error Template › missingFragment.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m + \027[36msnapshot_tests/operations/errors/missingFragment.re\027[0m:\027[2m3:28-42\027[0m 1 \027[2m\226\148\130\027[0m module Fragment = [%graphql 2 \027[2m\226\148\130\027[0m {| diff --git a/tests_bucklescript/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot b/snapshot_tests/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot similarity index 82% rename from tests_bucklescript/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot rename to snapshot_tests/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot index 4c744394..cff54b09 100644 --- a/tests_bucklescript/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot +++ b/snapshot_tests/__snapshots__/Error_Template_wrongArguments_re.486048fd.0.snapshot @@ -1,6 +1,6 @@ Error Template › wrongArguments.re › output \027[1;31mWe've found a bug for you!\027[0m - \027[36mtests_bucklescript/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m + \027[36msnapshot_tests/operations/errors/wrongArguments.re\027[0m:\027[2m14:7-25\027[0m 12 \027[2m\226\148\134\027[0m lists { 13 \027[2m\226\148\134\027[0m nonNullableOfNullable diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_argNamedQuery_re.84fdb38d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_argNamedQuery_re.84fdb38d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_argNamedQuery_re.84fdb38d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_argNamedQuery_re.84fdb38d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot index 6f925965..40c6ea26 100644 --- a/tests_bucklescript/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Apollo_comment_re.01de3d8b.0.snapshot @@ -143,7 +143,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,8 +152,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -206,7 +205,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -220,8 +219,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_customDecoder_re.8fe52a26.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_customDecoder_re.8fe52a26.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_customDecoder_re.8fe52a26.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_customDecoder_re.8fe52a26.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_customScalars_re.74324f14.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_customScalars_re.74324f14.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_customScalars_re.74324f14.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_customScalars_re.74324f14.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_customTypes_re.cd543930.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_customTypes_re.cd543930.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_customTypes_re.cd543930.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_customTypes_re.cd543930.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_defaultObjectValueOnScalar_re.039024a4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_defaultObjectValueOnScalar_re.039024a4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_defaultObjectValueOnScalar_re.039024a4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_defaultObjectValueOnScalar_re.039024a4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_enumInput_re.89e218f7.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_enumInput_re.89e218f7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_enumInput_re.89e218f7.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_enumInput_re.89e218f7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_ewertreproduction_re.28e16ad4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_ewertreproduction_re.28e16ad4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_ewertreproduction_re.28e16ad4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_ewertreproduction_re.28e16ad4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_explicitobjectrecord_re.906ec807.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_explicitobjectrecord_re.906ec807.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_explicitobjectrecord_re.906ec807.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_explicitobjectrecord_re.906ec807.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_extensions_re.c4a6997e.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_extensions_re.c4a6997e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_extensions_re.c4a6997e.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_extensions_re.c4a6997e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_fragmentDefinition_re.78da41af.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_fragmentDefinition_re.78da41af.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_fragmentDefinition_re.78da41af.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_fragmentDefinition_re.78da41af.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_fragmentInFragment_re.fd9b8c22.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_fragmentInFragment_re.fd9b8c22.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_fragmentInFragment_re.fd9b8c22.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_fragmentInFragment_re.fd9b8c22.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_fragmentOnInterface_re.123a77ad.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_fragmentOnInterface_re.123a77ad.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_fragmentOnInterface_re.123a77ad.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_fragmentOnInterface_re.123a77ad.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_fragmentvariableinput_re.f7725b45.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_fragmentvariableinput_re.f7725b45.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_fragmentvariableinput_re.f7725b45.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_fragmentvariableinput_re.f7725b45.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_hasuraRepro_re.66af1d23.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_hasuraRepro_re.66af1d23.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_hasuraRepro_re.66af1d23.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_hasuraRepro_re.66af1d23.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_interface_re.6f3750d9.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_interface_re.6f3750d9.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_interface_re.6f3750d9.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_interface_re.6f3750d9.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot index 1079fb09..9a696956 100644 --- a/tests_bucklescript/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Apollo_listsArgs_re.ee356c8f.0.snapshot @@ -105,7 +105,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -114,8 +114,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -133,7 +132,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -143,7 +142,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,15 +151,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot index eb65bca5..575ea9ed 100644 --- a/tests_bucklescript/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Apollo_listsInput_re.1d520469.0.snapshot @@ -117,7 +117,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -126,8 +126,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -145,7 +144,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -155,7 +154,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -164,15 +163,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables_ListsInput).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables_ListsInput).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_lists_re.e225591b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_lists_re.e225591b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_lists_re.e225591b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_lists_re.e225591b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_moduletype_re.b7288f7f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_moduletype_re.b7288f7f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_moduletype_re.b7288f7f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_moduletype_re.b7288f7f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_mutationWithArgsAndNoRecords_re.a2f4800d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_mutationWithArgsAndNoRecords_re.a2f4800d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_mutationWithArgsAndNoRecords_re.a2f4800d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_mutationWithArgsAndNoRecords_re.a2f4800d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_mutationWithArgs_re.9fcbe219.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_mutationWithArgs_re.9fcbe219.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_mutationWithArgs_re.9fcbe219.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_mutationWithArgs_re.9fcbe219.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_mutation_re.087b663e.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_mutation_re.087b663e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_mutation_re.087b663e.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_mutation_re.087b663e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_nested_re.8b5c2326.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_nested_re.8b5c2326.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_nested_re.8b5c2326.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_nested_re.8b5c2326.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot index 45d79364..29c9d2bc 100644 --- a/tests_bucklescript/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Apollo_nonrecursiveInput_re.0abe2c2f.0.snapshot @@ -143,7 +143,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,8 +152,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -206,7 +205,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -220,8 +219,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -450,7 +448,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -459,8 +457,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -513,7 +510,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -527,8 +524,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_omitFutureValueEnum_re.94bf0907.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_omitFutureValueEnum_re.94bf0907.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_omitFutureValueEnum_re.94bf0907.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_omitFutureValueEnum_re.94bf0907.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_omitFutureValueUnion_re.0014571f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_omitFutureValueUnion_re.0014571f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_omitFutureValueUnion_re.0014571f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_omitFutureValueUnion_re.0014571f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_pokedexApolloMode_re.f3aba61a.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_pokedexApolloMode_re.f3aba61a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_pokedexApolloMode_re.f3aba61a.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_pokedexApolloMode_re.f3aba61a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_pokedexScalars_re.c71282a6.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_pokedexScalars_re.c71282a6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_pokedexScalars_re.c71282a6.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_pokedexScalars_re.c71282a6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_record_re.f7eec6bf.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_record_re.f7eec6bf.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_record_re.f7eec6bf.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_record_re.f7eec6bf.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_recursiveInput_re.652413b3.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_recursiveInput_re.652413b3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_recursiveInput_re.652413b3.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_recursiveInput_re.652413b3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_scalarsArgs_re.e37ecd07.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_scalarsArgs_re.e37ecd07.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_scalarsArgs_re.e37ecd07.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_scalarsArgs_re.e37ecd07.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_scalarsInput_re.bda5f930.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_scalarsInput_re.bda5f930.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_scalarsInput_re.bda5f930.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_scalarsInput_re.bda5f930.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_scalars_re.0d22d5fa.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_scalars_re.0d22d5fa.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_scalars_re.0d22d5fa.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_scalars_re.0d22d5fa.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_skipDirectives_re.a25cb9c5.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_skipDirectives_re.a25cb9c5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_skipDirectives_re.a25cb9c5.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_skipDirectives_re.a25cb9c5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_subscription_re.a582fe3b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_subscription_re.a582fe3b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_subscription_re.a582fe3b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_subscription_re.a582fe3b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_taggedtemplate_re.cf30bde6.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_taggedtemplate_re.cf30bde6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_taggedtemplate_re.cf30bde6.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_taggedtemplate_re.cf30bde6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_typename_re.199dd32b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_typename_re.199dd32b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_typename_re.199dd32b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_typename_re.199dd32b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_unionPartial_re.43e40a0f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_unionPartial_re.43e40a0f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_unionPartial_re.43e40a0f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_unionPartial_re.43e40a0f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_union_re.ee1bb93d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_union_re.ee1bb93d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_union_re.ee1bb93d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_union_re.ee1bb93d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Apollo_variant_re.16a4f368.0.snapshot b/snapshot_tests/__snapshots__/Generate_Apollo_variant_re.16a4f368.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Apollo_variant_re.16a4f368.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Apollo_variant_re.16a4f368.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_argNamedQuery_re.de0055c7.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_argNamedQuery_re.de0055c7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_argNamedQuery_re.de0055c7.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_argNamedQuery_re.de0055c7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot similarity index 97% rename from tests_bucklescript/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot index 875ea02f..8ab352f1 100644 --- a/tests_bucklescript/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Native_comment_re.d26d36c5.0.snapshot @@ -134,7 +134,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -143,8 +143,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -202,7 +201,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -214,8 +213,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, diff --git a/tests_bucklescript/__snapshots__/Generate_Native_customDecoder_re.cc3c6a29.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_customDecoder_re.cc3c6a29.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_customDecoder_re.cc3c6a29.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_customDecoder_re.cc3c6a29.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_customScalars_re.4cdbe640.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_customScalars_re.4cdbe640.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_customScalars_re.4cdbe640.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_customScalars_re.4cdbe640.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_customTypes_re.22a2fb02.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_customTypes_re.22a2fb02.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_customTypes_re.22a2fb02.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_customTypes_re.22a2fb02.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_defaultObjectValueOnScalar_re.ea37a9ed.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_defaultObjectValueOnScalar_re.ea37a9ed.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_defaultObjectValueOnScalar_re.ea37a9ed.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_defaultObjectValueOnScalar_re.ea37a9ed.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_enumInput_re.49939a51.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_enumInput_re.49939a51.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_enumInput_re.49939a51.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_enumInput_re.49939a51.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_ewertreproduction_re.ee21d8cb.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_ewertreproduction_re.ee21d8cb.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_ewertreproduction_re.ee21d8cb.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_ewertreproduction_re.ee21d8cb.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_explicitobjectrecord_re.fc30aa17.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_explicitobjectrecord_re.fc30aa17.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_explicitobjectrecord_re.fc30aa17.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_explicitobjectrecord_re.fc30aa17.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_extensions_re.4550a362.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_extensions_re.4550a362.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_extensions_re.4550a362.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_extensions_re.4550a362.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_fragmentDefinition_re.a93175f5.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_fragmentDefinition_re.a93175f5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_fragmentDefinition_re.a93175f5.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_fragmentDefinition_re.a93175f5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_fragmentInFragment_re.4c8472b8.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_fragmentInFragment_re.4c8472b8.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_fragmentInFragment_re.4c8472b8.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_fragmentInFragment_re.4c8472b8.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_fragmentOnInterface_re.990aaaac.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_fragmentOnInterface_re.990aaaac.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_fragmentOnInterface_re.990aaaac.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_fragmentOnInterface_re.990aaaac.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_fragmentvariableinput_re.545e8068.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_fragmentvariableinput_re.545e8068.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_fragmentvariableinput_re.545e8068.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_fragmentvariableinput_re.545e8068.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_hasuraRepro_re.2585f195.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_hasuraRepro_re.2585f195.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_hasuraRepro_re.2585f195.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_hasuraRepro_re.2585f195.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_interface_re.a1f5956c.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_interface_re.a1f5956c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_interface_re.a1f5956c.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_interface_re.a1f5956c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot similarity index 94% rename from tests_bucklescript/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot index d07f9067..600d5525 100644 --- a/tests_bucklescript/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Native_listsArgs_re.c6f78b03.0.snapshot @@ -95,7 +95,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -104,8 +104,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -128,7 +127,7 @@ function back to the original JSON compatible data */ ( a => `List( - Array.map(b => {(a => `String(a))(b)}, a) + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, ) )( @@ -145,7 +144,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -154,8 +153,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -169,7 +167,7 @@ function back to the original JSON compatible data */ ( a => `List( - Array.map(b => {(a => `String(a))(b)}, a) |> Array.to_list, + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, ) )( (inp: t_variables).nonNullableOfNonNullable, diff --git a/tests_bucklescript/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot index 2aaf0f69..52acd98d 100644 --- a/tests_bucklescript/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Native_listsInput_re.f110d9de.0.snapshot @@ -111,7 +111,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -120,8 +120,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -144,7 +143,7 @@ function back to the original JSON compatible data */ ( a => `List( - Array.map(b => {(a => `String(a))(b)}, a) + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, ) )( @@ -161,7 +160,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -170,8 +169,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -185,7 +183,7 @@ function back to the original JSON compatible data */ ( a => `List( - Array.map(b => {(a => `String(a))(b)}, a) |> Array.to_list, + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, ) )( (inp: t_variables_ListsInput).nonNullableOfNonNullable, diff --git a/tests_bucklescript/__snapshots__/Generate_Native_lists_re.a10d95fa.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_lists_re.a10d95fa.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_lists_re.a10d95fa.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_lists_re.a10d95fa.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_moduletype_re.9ff4dd56.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_moduletype_re.9ff4dd56.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_moduletype_re.9ff4dd56.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_moduletype_re.9ff4dd56.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_mutationWithArgsAndNoRecords_re.7c836ead.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_mutationWithArgsAndNoRecords_re.7c836ead.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_mutationWithArgsAndNoRecords_re.7c836ead.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_mutationWithArgsAndNoRecords_re.7c836ead.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_mutationWithArgs_re.4aa65e79.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_mutationWithArgs_re.4aa65e79.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_mutationWithArgs_re.4aa65e79.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_mutationWithArgs_re.4aa65e79.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_mutation_re.4b68f150.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_mutation_re.4b68f150.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_mutation_re.4b68f150.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_mutation_re.4b68f150.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_nested_re.40104e8d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_nested_re.40104e8d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_nested_re.40104e8d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_nested_re.40104e8d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot similarity index 97% rename from tests_bucklescript/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot index c0782ca3..73d300d0 100644 --- a/tests_bucklescript/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Native_nonrecursiveInput_re.5cc14b29.0.snapshot @@ -134,7 +134,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -143,8 +143,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -202,7 +201,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -214,8 +213,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -432,7 +430,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -441,8 +439,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, @@ -500,7 +497,7 @@ function back to the original JSON compatible data */ a => `List( Array.map( - b => { + b => ( a => switch (a) { @@ -512,8 +509,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) |> Array.to_list, diff --git a/tests_bucklescript/__snapshots__/Generate_Native_omitFutureValueEnum_re.41f04893.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_omitFutureValueEnum_re.41f04893.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_omitFutureValueEnum_re.41f04893.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_omitFutureValueEnum_re.41f04893.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_omitFutureValueUnion_re.bd60f674.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_omitFutureValueUnion_re.bd60f674.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_omitFutureValueUnion_re.bd60f674.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_omitFutureValueUnion_re.bd60f674.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_pokedexApolloMode_re.68591302.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_pokedexApolloMode_re.68591302.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_pokedexApolloMode_re.68591302.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_pokedexApolloMode_re.68591302.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_pokedexScalars_re.4fe00707.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_pokedexScalars_re.4fe00707.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_pokedexScalars_re.4fe00707.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_pokedexScalars_re.4fe00707.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_record_re.c5c11df5.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_record_re.c5c11df5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_record_re.c5c11df5.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_record_re.c5c11df5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_recursiveInput_re.cc666db9.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_recursiveInput_re.cc666db9.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_recursiveInput_re.cc666db9.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_recursiveInput_re.cc666db9.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_scalarsArgs_re.73dc8086.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_scalarsArgs_re.73dc8086.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_scalarsArgs_re.73dc8086.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_scalarsArgs_re.73dc8086.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_scalarsInput_re.938a6b73.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_scalarsInput_re.938a6b73.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_scalarsInput_re.938a6b73.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_scalarsInput_re.938a6b73.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_scalars_re.08884de4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_scalars_re.08884de4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_scalars_re.08884de4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_scalars_re.08884de4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_skipDirectives_re.b41d3b70.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_skipDirectives_re.b41d3b70.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_skipDirectives_re.b41d3b70.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_skipDirectives_re.b41d3b70.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_subscription_re.92e93d2b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_subscription_re.92e93d2b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_subscription_re.92e93d2b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_subscription_re.92e93d2b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_taggedtemplate_re.3849ba12.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_taggedtemplate_re.3849ba12.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_taggedtemplate_re.3849ba12.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_taggedtemplate_re.3849ba12.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_typename_re.2499250f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_typename_re.2499250f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_typename_re.2499250f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_typename_re.2499250f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_unionPartial_re.820d9a31.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_unionPartial_re.820d9a31.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_unionPartial_re.820d9a31.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_unionPartial_re.820d9a31.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_union_re.94a11569.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_union_re.94a11569.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_union_re.94a11569.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_union_re.94a11569.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Native_variant_re.6170670f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Native_variant_re.6170670f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Native_variant_re.6170670f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Native_variant_re.6170670f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_argNamedQuery_re.0f18ca22.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_argNamedQuery_re.0f18ca22.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_argNamedQuery_re.0f18ca22.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_argNamedQuery_re.0f18ca22.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot index a5e2cfb3..163a2a36 100644 --- a/tests_bucklescript/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Records_comment_re.24709c37.0.snapshot @@ -143,7 +143,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,8 +152,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -206,7 +205,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -220,8 +219,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Records_customDecoder_re.0ebc8dde.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_customDecoder_re.0ebc8dde.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_customDecoder_re.0ebc8dde.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_customDecoder_re.0ebc8dde.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_customScalars_re.ddfb46d6.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_customScalars_re.ddfb46d6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_customScalars_re.ddfb46d6.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_customScalars_re.ddfb46d6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_customTypes_re.0daf4c25.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_customTypes_re.0daf4c25.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_customTypes_re.0daf4c25.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_customTypes_re.0daf4c25.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_defaultObjectValueOnScalar_re.eaa07751.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_defaultObjectValueOnScalar_re.eaa07751.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_defaultObjectValueOnScalar_re.eaa07751.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_defaultObjectValueOnScalar_re.eaa07751.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_enumInput_re.92ca066f.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_enumInput_re.92ca066f.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_enumInput_re.92ca066f.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_enumInput_re.92ca066f.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_ewertreproduction_re.9a865a13.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_ewertreproduction_re.9a865a13.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_ewertreproduction_re.9a865a13.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_ewertreproduction_re.9a865a13.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_explicitobjectrecord_re.31739664.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_explicitobjectrecord_re.31739664.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_explicitobjectrecord_re.31739664.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_explicitobjectrecord_re.31739664.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_extensions_re.330a7e2a.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_extensions_re.330a7e2a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_extensions_re.330a7e2a.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_extensions_re.330a7e2a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_fragmentDefinition_re.3cc2584d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_fragmentDefinition_re.3cc2584d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_fragmentDefinition_re.3cc2584d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_fragmentDefinition_re.3cc2584d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_fragmentInFragment_re.9d7749b9.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_fragmentInFragment_re.9d7749b9.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_fragmentInFragment_re.9d7749b9.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_fragmentInFragment_re.9d7749b9.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_fragmentOnInterface_re.fa7d9867.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_fragmentOnInterface_re.fa7d9867.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_fragmentOnInterface_re.fa7d9867.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_fragmentOnInterface_re.fa7d9867.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_fragmentvariableinput_re.699f000a.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_fragmentvariableinput_re.699f000a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_fragmentvariableinput_re.699f000a.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_fragmentvariableinput_re.699f000a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_hasuraRepro_re.778cb99d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_hasuraRepro_re.778cb99d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_hasuraRepro_re.778cb99d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_hasuraRepro_re.778cb99d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_interface_re.31643995.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_interface_re.31643995.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_interface_re.31643995.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_interface_re.31643995.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot index ea6fc62c..42b58bae 100644 --- a/tests_bucklescript/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Records_listsArgs_re.82626de9.0.snapshot @@ -105,7 +105,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -114,8 +114,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -133,7 +132,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -143,7 +142,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,15 +151,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot index e0c9ff1a..8bdedc9d 100644 --- a/tests_bucklescript/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Records_listsInput_re.84753ab2.0.snapshot @@ -117,7 +117,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -126,8 +126,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -145,7 +144,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -155,7 +154,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -164,15 +163,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables_ListsInput).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables_ListsInput).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Records_lists_re.0169b401.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_lists_re.0169b401.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_lists_re.0169b401.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_lists_re.0169b401.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_moduletype_re.bc327a64.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_moduletype_re.bc327a64.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_moduletype_re.bc327a64.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_moduletype_re.bc327a64.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_mutationWithArgsAndNoRecords_re.2c4e1f81.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_mutationWithArgsAndNoRecords_re.2c4e1f81.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_mutationWithArgsAndNoRecords_re.2c4e1f81.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_mutationWithArgsAndNoRecords_re.2c4e1f81.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_mutationWithArgs_re.f2c26be8.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_mutationWithArgs_re.f2c26be8.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_mutationWithArgs_re.f2c26be8.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_mutationWithArgs_re.f2c26be8.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_mutation_re.58e94060.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_mutation_re.58e94060.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_mutation_re.58e94060.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_mutation_re.58e94060.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_nested_re.7aecbe68.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_nested_re.7aecbe68.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_nested_re.7aecbe68.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_nested_re.7aecbe68.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot index d00c929a..f2c276cb 100644 --- a/tests_bucklescript/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Records_nonrecursiveInput_re.a12696d8.0.snapshot @@ -143,7 +143,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -152,8 +152,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -206,7 +205,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -220,8 +219,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -450,7 +448,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -459,8 +457,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -513,7 +510,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -527,8 +524,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Records_omitFutureValueEnum_re.0f4a477c.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_omitFutureValueEnum_re.0f4a477c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_omitFutureValueEnum_re.0f4a477c.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_omitFutureValueEnum_re.0f4a477c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_omitFutureValueUnion_re.4c12430b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_omitFutureValueUnion_re.4c12430b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_omitFutureValueUnion_re.4c12430b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_omitFutureValueUnion_re.4c12430b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_pokedexApolloMode_re.c16f4c35.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_pokedexApolloMode_re.c16f4c35.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_pokedexApolloMode_re.c16f4c35.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_pokedexApolloMode_re.c16f4c35.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_pokedexScalars_re.8082c545.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_pokedexScalars_re.8082c545.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_pokedexScalars_re.8082c545.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_pokedexScalars_re.8082c545.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_record_re.2ddcaa1a.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_record_re.2ddcaa1a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_record_re.2ddcaa1a.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_record_re.2ddcaa1a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_recursiveInput_re.f8f9a74c.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_recursiveInput_re.f8f9a74c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_recursiveInput_re.f8f9a74c.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_recursiveInput_re.f8f9a74c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_scalarsArgs_re.35dd7f62.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_scalarsArgs_re.35dd7f62.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_scalarsArgs_re.35dd7f62.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_scalarsArgs_re.35dd7f62.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_scalarsInput_re.d0f7307a.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_scalarsInput_re.d0f7307a.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_scalarsInput_re.d0f7307a.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_scalarsInput_re.d0f7307a.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_scalars_re.fbae1e9d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_scalars_re.fbae1e9d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_scalars_re.fbae1e9d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_scalars_re.fbae1e9d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_skipDirectives_re.8edb6329.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_skipDirectives_re.8edb6329.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_skipDirectives_re.8edb6329.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_skipDirectives_re.8edb6329.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_subscription_re.c91caf1b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_subscription_re.c91caf1b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_subscription_re.c91caf1b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_subscription_re.c91caf1b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_taggedtemplate_re.55eacb74.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_taggedtemplate_re.55eacb74.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_taggedtemplate_re.55eacb74.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_taggedtemplate_re.55eacb74.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_typename_re.42e6ab48.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_typename_re.42e6ab48.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_typename_re.42e6ab48.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_typename_re.42e6ab48.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_unionPartial_re.124577c7.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_unionPartial_re.124577c7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_unionPartial_re.124577c7.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_unionPartial_re.124577c7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_union_re.190499e4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_union_re.190499e4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_union_re.190499e4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_union_re.190499e4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Records_variant_re.d2e83164.0.snapshot b/snapshot_tests/__snapshots__/Generate_Records_variant_re.d2e83164.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Records_variant_re.d2e83164.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Records_variant_re.d2e83164.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_argNamedQuery_re.10ed9698.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_argNamedQuery_re.10ed9698.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_argNamedQuery_re.10ed9698.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_argNamedQuery_re.10ed9698.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot index 60bd78ae..25e9b82c 100644 --- a/tests_bucklescript/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Template_comment_re.34a0d0ed.0.snapshot @@ -145,7 +145,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -154,8 +154,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -208,7 +207,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -222,8 +221,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Template_customDecoder_re.b8a0861e.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_customDecoder_re.b8a0861e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_customDecoder_re.b8a0861e.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_customDecoder_re.b8a0861e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_customScalars_re.61e1efe0.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_customScalars_re.61e1efe0.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_customScalars_re.61e1efe0.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_customScalars_re.61e1efe0.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_customTypes_re.1d5585c6.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_customTypes_re.1d5585c6.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_customTypes_re.1d5585c6.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_customTypes_re.1d5585c6.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_defaultObjectValueOnScalar_re.c66b37eb.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_defaultObjectValueOnScalar_re.c66b37eb.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_defaultObjectValueOnScalar_re.c66b37eb.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_defaultObjectValueOnScalar_re.c66b37eb.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_enumInput_re.05124326.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_enumInput_re.05124326.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_enumInput_re.05124326.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_enumInput_re.05124326.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_ewertreproduction_re.b3dc2fc2.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_ewertreproduction_re.b3dc2fc2.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_ewertreproduction_re.b3dc2fc2.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_ewertreproduction_re.b3dc2fc2.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_explicitobjectrecord_re.eb39d294.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_explicitobjectrecord_re.eb39d294.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_explicitobjectrecord_re.eb39d294.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_explicitobjectrecord_re.eb39d294.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_extensions_re.2d765912.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_extensions_re.2d765912.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_extensions_re.2d765912.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_extensions_re.2d765912.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_fragmentDefinition_re.ba6e21ac.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_fragmentDefinition_re.ba6e21ac.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_fragmentDefinition_re.ba6e21ac.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_fragmentDefinition_re.ba6e21ac.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_fragmentInFragment_re.1d09bcb9.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_fragmentInFragment_re.1d09bcb9.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_fragmentInFragment_re.1d09bcb9.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_fragmentInFragment_re.1d09bcb9.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_fragmentOnInterface_re.dac01f7d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_fragmentOnInterface_re.dac01f7d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_fragmentOnInterface_re.dac01f7d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_fragmentOnInterface_re.dac01f7d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_fragmentvariableinput_re.eaaf2d14.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_fragmentvariableinput_re.eaaf2d14.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_fragmentvariableinput_re.eaaf2d14.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_fragmentvariableinput_re.eaaf2d14.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_hasuraRepro_re.4b0149f4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_hasuraRepro_re.4b0149f4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_hasuraRepro_re.4b0149f4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_hasuraRepro_re.4b0149f4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_interface_re.c22e1907.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_interface_re.c22e1907.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_interface_re.c22e1907.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_interface_re.c22e1907.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot index 73a7ea82..7b6645eb 100644 --- a/tests_bucklescript/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Template_listsArgs_re.eb4eda24.0.snapshot @@ -107,7 +107,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -116,8 +116,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -135,7 +134,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -145,7 +144,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -154,15 +153,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot similarity index 95% rename from tests_bucklescript/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot index c26fd18b..4aa9e6f0 100644 --- a/tests_bucklescript/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Template_listsInput_re.8e53cc06.0.snapshot @@ -119,7 +119,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -128,8 +128,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -147,7 +146,7 @@ function back to the original JSON compatible data */ | None => Js.Nullable.undefined | Some(b) => Js.Nullable.return( - (a => Js.Array.map(b => {(a => a)(b)}, a))(b), + (a => Js.Array.map(b => (a => a)(b), a))(b), ) } )( @@ -157,7 +156,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -166,15 +165,14 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( (inp: t_variables_ListsInput).nonNullableOfNullable, ), nonNullableOfNonNullable: - (a => Js.Array.map(b => {(a => a)(b)}, a))( + (a => Js.Array.map(b => (a => a)(b), a))( (inp: t_variables_ListsInput).nonNullableOfNonNullable, ), }; diff --git a/tests_bucklescript/__snapshots__/Generate_Template_lists_re.83d16dad.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_lists_re.83d16dad.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_lists_re.83d16dad.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_lists_re.83d16dad.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_moduletype_re.57d7e1ae.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_moduletype_re.57d7e1ae.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_moduletype_re.57d7e1ae.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_moduletype_re.57d7e1ae.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_mutationWithArgsAndNoRecords_re.b8a50892.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_mutationWithArgsAndNoRecords_re.b8a50892.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_mutationWithArgsAndNoRecords_re.b8a50892.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_mutationWithArgsAndNoRecords_re.b8a50892.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_mutationWithArgs_re.96e131aa.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_mutationWithArgs_re.96e131aa.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_mutationWithArgs_re.96e131aa.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_mutationWithArgs_re.96e131aa.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_mutation_re.f72fdbfc.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_mutation_re.f72fdbfc.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_mutation_re.f72fdbfc.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_mutation_re.f72fdbfc.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_nested_re.0a4cf07e.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_nested_re.0a4cf07e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_nested_re.0a4cf07e.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_nested_re.0a4cf07e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot similarity index 98% rename from tests_bucklescript/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot index 3618e253..36baba2a 100644 --- a/tests_bucklescript/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot +++ b/snapshot_tests/__snapshots__/Generate_Template_nonrecursiveInput_re.97c84619.0.snapshot @@ -145,7 +145,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -154,8 +154,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -208,7 +207,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -222,8 +221,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -454,7 +452,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -463,8 +461,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( @@ -517,7 +514,7 @@ function back to the original JSON compatible data */ ( a => Js.Array.map( - b => { + b => ( a => switch (a) { @@ -531,8 +528,7 @@ function back to the original JSON compatible data */ } )( b, - ) - }, + ), a, ) )( diff --git a/tests_bucklescript/__snapshots__/Generate_Template_omitFutureValueEnum_re.4bdd8cf4.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_omitFutureValueEnum_re.4bdd8cf4.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_omitFutureValueEnum_re.4bdd8cf4.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_omitFutureValueEnum_re.4bdd8cf4.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_omitFutureValueUnion_re.43c97d36.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_omitFutureValueUnion_re.43c97d36.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_omitFutureValueUnion_re.43c97d36.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_omitFutureValueUnion_re.43c97d36.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_pokedexApolloMode_re.e3522bc1.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_pokedexApolloMode_re.e3522bc1.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_pokedexApolloMode_re.e3522bc1.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_pokedexApolloMode_re.e3522bc1.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_pokedexScalars_re.806bf3e5.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_pokedexScalars_re.806bf3e5.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_pokedexScalars_re.806bf3e5.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_pokedexScalars_re.806bf3e5.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_record_re.7e7e787d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_record_re.7e7e787d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_record_re.7e7e787d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_record_re.7e7e787d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_recursiveInput_re.64f4d7a7.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_recursiveInput_re.64f4d7a7.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_recursiveInput_re.64f4d7a7.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_recursiveInput_re.64f4d7a7.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_scalarsArgs_re.758efb7b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_scalarsArgs_re.758efb7b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_scalarsArgs_re.758efb7b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_scalarsArgs_re.758efb7b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_scalarsInput_re.319f4b5d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_scalarsInput_re.319f4b5d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_scalarsInput_re.319f4b5d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_scalarsInput_re.319f4b5d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_scalars_re.fff2bc0b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_scalars_re.fff2bc0b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_scalars_re.fff2bc0b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_scalars_re.fff2bc0b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_skipDirectives_re.47c4172e.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_skipDirectives_re.47c4172e.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_skipDirectives_re.47c4172e.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_skipDirectives_re.47c4172e.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_subscription_re.5c005c4b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_subscription_re.5c005c4b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_subscription_re.5c005c4b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_subscription_re.5c005c4b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_taggedtemplate_re.4ed7325c.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_taggedtemplate_re.4ed7325c.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_taggedtemplate_re.4ed7325c.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_taggedtemplate_re.4ed7325c.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_typename_re.1bfba79b.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_typename_re.1bfba79b.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_typename_re.1bfba79b.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_typename_re.1bfba79b.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_unionPartial_re.2554b2a3.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_unionPartial_re.2554b2a3.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_unionPartial_re.2554b2a3.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_unionPartial_re.2554b2a3.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_union_re.9751822d.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_union_re.9751822d.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_union_re.9751822d.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_union_re.9751822d.0.snapshot diff --git a/tests_bucklescript/__snapshots__/Generate_Template_variant_re.8261c0db.0.snapshot b/snapshot_tests/__snapshots__/Generate_Template_variant_re.8261c0db.0.snapshot similarity index 100% rename from tests_bucklescript/__snapshots__/Generate_Template_variant_re.8261c0db.0.snapshot rename to snapshot_tests/__snapshots__/Generate_Template_variant_re.8261c0db.0.snapshot diff --git a/tests_bucklescript/dune-project b/snapshot_tests/dune-project similarity index 100% rename from tests_bucklescript/dune-project rename to snapshot_tests/dune-project diff --git a/tests_bucklescript/operations/argNamedQuery.re b/snapshot_tests/operations/argNamedQuery.re similarity index 100% rename from tests_bucklescript/operations/argNamedQuery.re rename to snapshot_tests/operations/argNamedQuery.re diff --git a/tests_bucklescript/operations/comment.re b/snapshot_tests/operations/comment.re similarity index 100% rename from tests_bucklescript/operations/comment.re rename to snapshot_tests/operations/comment.re diff --git a/tests_bucklescript/operations/customDecoder.re b/snapshot_tests/operations/customDecoder.re similarity index 100% rename from tests_bucklescript/operations/customDecoder.re rename to snapshot_tests/operations/customDecoder.re diff --git a/tests_bucklescript/operations/customScalars.re b/snapshot_tests/operations/customScalars.re similarity index 100% rename from tests_bucklescript/operations/customScalars.re rename to snapshot_tests/operations/customScalars.re diff --git a/tests_bucklescript/operations/customTypes.re b/snapshot_tests/operations/customTypes.re similarity index 100% rename from tests_bucklescript/operations/customTypes.re rename to snapshot_tests/operations/customTypes.re diff --git a/tests_bucklescript/operations/defaultObjectValueOnScalar.re b/snapshot_tests/operations/defaultObjectValueOnScalar.re similarity index 100% rename from tests_bucklescript/operations/defaultObjectValueOnScalar.re rename to snapshot_tests/operations/defaultObjectValueOnScalar.re diff --git a/tests_bucklescript/operations/enumInput.re b/snapshot_tests/operations/enumInput.re similarity index 100% rename from tests_bucklescript/operations/enumInput.re rename to snapshot_tests/operations/enumInput.re diff --git a/tests_bucklescript/operations/errors/InvalidObjectValues2.re b/snapshot_tests/operations/errors/InvalidObjectValues2.re similarity index 100% rename from tests_bucklescript/operations/errors/InvalidObjectValues2.re rename to snapshot_tests/operations/errors/InvalidObjectValues2.re diff --git a/tests_bucklescript/operations/errors/InvalidObjectValues3.re b/snapshot_tests/operations/errors/InvalidObjectValues3.re similarity index 100% rename from tests_bucklescript/operations/errors/InvalidObjectValues3.re rename to snapshot_tests/operations/errors/InvalidObjectValues3.re diff --git a/tests_bucklescript/operations/errors/InvalidObjectValues4.re b/snapshot_tests/operations/errors/InvalidObjectValues4.re similarity index 100% rename from tests_bucklescript/operations/errors/InvalidObjectValues4.re rename to snapshot_tests/operations/errors/InvalidObjectValues4.re diff --git a/tests_bucklescript/operations/errors/InvalidObjectValues5.re b/snapshot_tests/operations/errors/InvalidObjectValues5.re similarity index 100% rename from tests_bucklescript/operations/errors/InvalidObjectValues5.re rename to snapshot_tests/operations/errors/InvalidObjectValues5.re diff --git a/tests_bucklescript/operations/errors/deprecatedFields.re b/snapshot_tests/operations/errors/deprecatedFields.re similarity index 100% rename from tests_bucklescript/operations/errors/deprecatedFields.re rename to snapshot_tests/operations/errors/deprecatedFields.re diff --git a/snapshot_tests/operations/errors/expected/InvalidObjectValues2.re.txt b/snapshot_tests/operations/errors/expected/InvalidObjectValues2.re.txt new file mode 100644 index 00000000..be28b819 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/InvalidObjectValues2.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/InvalidObjectValues2.re:8:13-18 + + 6 ┆ query { + 7 ┆ invalidObjectValues( + 8 ┆ nonRec: { + 9 ┆ nullableArray: [""] + 10 ┆ field: "" + + Invalid argument. The field "nonNullableField" on argument "nonRec" is missing. + diff --git a/snapshot_tests/operations/errors/expected/InvalidObjectValues3.re.txt b/snapshot_tests/operations/errors/expected/InvalidObjectValues3.re.txt new file mode 100644 index 00000000..2291b65d --- /dev/null +++ b/snapshot_tests/operations/errors/expected/InvalidObjectValues3.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/InvalidObjectValues3.re:9:35 + + 7 ┆ invalidObjectValues( + 8 ┆ nonRec: { + 9 ┆ nonNullableField: 5 + 10 ┆ nullableArray: [""] + 11 ┆ field: "" + + Invalid argument. Expected "String!" but received "Int!". + diff --git a/snapshot_tests/operations/errors/expected/InvalidObjectValues4.re.txt b/snapshot_tests/operations/errors/expected/InvalidObjectValues4.re.txt new file mode 100644 index 00000000..f1ecf54a --- /dev/null +++ b/snapshot_tests/operations/errors/expected/InvalidObjectValues4.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/InvalidObjectValues4.re:10:32-34 + + 8 ┆ nonRec: { + 9 ┆ nonNullableField: "!" + 10 ┆ nullableArray: [2] + 11 ┆ field: "" + 12 ┆ enum: FIRST + + Invalid argument. Expected "[String]" but received "[Int!]!". + diff --git a/snapshot_tests/operations/errors/expected/InvalidObjectValues5.re.txt b/snapshot_tests/operations/errors/expected/InvalidObjectValues5.re.txt new file mode 100644 index 00000000..2189ab17 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/InvalidObjectValues5.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/InvalidObjectValues5.re:20:23-24 + + 18 ┆ otherField: "" + 19 ┆ } + 20 ┆ enum: [] + 21 ┆ } + 22 ┆ ) + + Invalid argument. Expected "Enum" but received "EmptyList!". + diff --git a/snapshot_tests/operations/errors/expected/deprecatedFields.re.txt b/snapshot_tests/operations/errors/expected/deprecatedFields.re.txt new file mode 100644 index 00000000..294e32fd --- /dev/null +++ b/snapshot_tests/operations/errors/expected/deprecatedFields.re.txt @@ -0,0 +1,4 @@ +File "snapshot_tests/operations/errors/deprecatedFields.re", line 7, characters 6-21: +7 | deprecatedField + ^^^^^^^^^^^^^^^ +Warning 22 [preprocessor]: Field "deprecatedField" has been deprecated. Reason: Use something else instead diff --git a/snapshot_tests/operations/errors/expected/fragmentIssue.re.txt b/snapshot_tests/operations/errors/expected/fragmentIssue.re.txt new file mode 100644 index 00000000..e166897b --- /dev/null +++ b/snapshot_tests/operations/errors/expected/fragmentIssue.re.txt @@ -0,0 +1,15 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/fragmentIssue.re:8:5-10:5 + + 6 │ + 7 │ fragment DemoVersion_Model on DemoVersion { + 8 │ screens { + 9 │  ...Screen_Model + 10 │  } + 11 │ } + 12 │ |} + + This type constructor, `Screen_Model.Raw.t_DemoScreen`, can't be found. + + diff --git a/snapshot_tests/operations/errors/expected/fragmentSpreadMissing.re.txt b/snapshot_tests/operations/errors/expected/fragmentSpreadMissing.re.txt new file mode 100644 index 00000000..2700b824 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/fragmentSpreadMissing.re.txt @@ -0,0 +1,19 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/fragmentSpreadMissing.re:4:5-6:5 + + 2 ┆ {| + 3 ┆ query MyQuery { + 4 ┆ lists { + 5 ┆  ...MissingFragment + 6 ┆  } + 7 ┆ } + 8 ┆ |} + + The module or file MissingFragment can't be found. + - If it's a third-party dependency: + - Did you list it in bsconfig.json? + - Did you run `bsb` instead of `bsb -make-world` + (latter builds third-parties)? + - Did you include the file's directory in bsconfig.json? + diff --git a/snapshot_tests/operations/errors/expected/fragmentSpreadMissingInFragment.re.txt b/snapshot_tests/operations/errors/expected/fragmentSpreadMissingInFragment.re.txt new file mode 100644 index 00000000..40492089 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/fragmentSpreadMissingInFragment.re.txt @@ -0,0 +1,17 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re:5:5-22 + + 3 │ fragment ListFragment on Lists { + 4 │ nullableOfNullable + 5 │ ...MissingFragment + 6 │ } + 7 │ |} + + The module or file MissingFragment can't be found. + - If it's a third-party dependency: + - Did you list it in bsconfig.json? + - Did you run `bsb` instead of `bsb -make-world` + (latter builds third-parties)? + - Did you include the file's directory in bsconfig.json? + diff --git a/snapshot_tests/operations/errors/expected/fragmentWithWrongName.re.txt b/snapshot_tests/operations/errors/expected/fragmentWithWrongName.re.txt new file mode 100644 index 00000000..06dd83b2 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/fragmentWithWrongName.re.txt @@ -0,0 +1,17 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/fragmentWithWrongName.re:15:5-18:5 + + 13 ┆ {| + 14 ┆ query MyQuery { + 15 ┆ lists { + 16 ┆  ...WrongFragmentName + 17 ┆ + 18 ┆  } + 19 ┆ } + 20 ┆ |} + + This has type: [> `WrongFragmentName ] + Somewhere wanted: [ `ListFragment ] + The second variant type does not allow tag(s) `WrongFragmentName + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType1.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType1.re.txt new file mode 100644 index 00000000..14d31b31 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType1.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType1.re:9:25-28 + + 7 ┆ query invalidArgValues { + 8 ┆ invalidArgValues( + 9 ┆ stringRequired: $arg + 10 ┆ ) + 11 ┆ } + + Invalid argument. The variable "$arg" on argument "stringRequired" is missing. + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType2.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType2.re.txt new file mode 100644 index 00000000..e1369d34 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType2.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType2.re:8:25-28 + + 6 ┆ query invalidArgValues($arg: String) { + 7 ┆ invalidArgValues( + 8 ┆ stringRequired: $arg + 9 ┆ ) + 10 ┆ } + + Invalid argument. Trying to apply the nullable variable "$arg" to the required argument "stringRequired". + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType3.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType3.re.txt new file mode 100644 index 00000000..db1b8a1a --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType3.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType3.re:9:17-21 + + 7 ┆ invalidArgValues( + 8 ┆ stringRequired: $arg + 9 ┆ string: $arg2 + 10 ┆ ) + 11 ┆ } + + Invalid argument. Expected "String" but received "Int". + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType4.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType4.re.txt new file mode 100644 index 00000000..2aab9b39 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType4.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType4.re:10:14-18 + + 8 ┆ invalidArgValues( + 9 ┆ custom: $arg + 10 ┆ obj: $arg2 + 11 ┆ stringRequired: "" + 12 ┆ ) + + Invalid argument. Expected "InputObject" but received "Int". + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType5.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType5.re.txt new file mode 100644 index 00000000..d9058581 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType5.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType5.re:9:25-28 + + 7 ┆ invalidArgValues( + 8 ┆ id: $arg + 9 ┆ stringRequired: $arg + 10 ┆ ) + 11 ┆ } + + Invalid argument. Trying to apply the nullable variable "$arg" to the required argument "stringRequired". + diff --git a/snapshot_tests/operations/errors/expected/invalidArgVariableType6.re.txt b/snapshot_tests/operations/errors/expected/invalidArgVariableType6.re.txt new file mode 100644 index 00000000..e9c9a164 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidArgVariableType6.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidArgVariableType6.re:8:15-18 + + 6 ┆ query invalidArgValues($arg: String) { + 7 ┆ invalidArgValues( + 8 ┆ list: $arg + 9 ┆ stringRequired: "" + 10 ┆ ) + + Invalid argument. Expected "[String]" but received "String". + diff --git a/snapshot_tests/operations/errors/expected/invalidDefaultValue1.re.txt b/snapshot_tests/operations/errors/expected/invalidDefaultValue1.re.txt new file mode 100644 index 00000000..5347b003 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidDefaultValue1.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidDefaultValue1.re:21:14-26 + + 19 ┆ query invalidDefaultValues { + 20 ┆ invalidDefaultValues( + 21 ┆ int: "Some string" + 22 ┆ ) + 23 ┆ } + + Invalid argument. Expected "Int" but received "String!". + diff --git a/snapshot_tests/operations/errors/expected/invalidDefaultValue2.re.txt b/snapshot_tests/operations/errors/expected/invalidDefaultValue2.re.txt new file mode 100644 index 00000000..d855d61a --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidDefaultValue2.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidDefaultValue2.re:8:14-26 + + 6 ┆ query invalidDefaultValues { + 7 ┆ invalidDefaultValues( + 8 ┆ int: {test: "xxx"} + 9 ┆ ) + 10 ┆ } + + Invalid argument. Expected "Int" but received "InputObject!". + diff --git a/snapshot_tests/operations/errors/expected/invalidDefaultValue3.re.txt b/snapshot_tests/operations/errors/expected/invalidDefaultValue3.re.txt new file mode 100644 index 00000000..5f3b98c6 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidDefaultValue3.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidDefaultValue3.re:21:13 + + 19 ┆ query invalidDefaultValues { + 20 ┆ invalidDefaultValues( + 21 ┆ id: 5 + 22 ┆ ) + 23 ┆ } + + Invalid argument. Expected "ID" but received "Int!". + diff --git a/snapshot_tests/operations/errors/expected/invalidDefaultValue4.re.txt b/snapshot_tests/operations/errors/expected/invalidDefaultValue4.re.txt new file mode 100644 index 00000000..e26c49a4 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidDefaultValue4.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidDefaultValue4.re:8:17-26 + + 6 ┆ query invalidDefaultValues { + 7 ┆ invalidDefaultValues( + 8 ┆ string: ["1", "2"] + 9 ┆ ) + 10 ┆ } + + Invalid argument. Expected "String" but received "List". + diff --git a/snapshot_tests/operations/errors/expected/invalidObjectValues1.re.txt b/snapshot_tests/operations/errors/expected/invalidObjectValues1.re.txt new file mode 100644 index 00000000..cbee9ba6 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidObjectValues1.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidObjectValues1.re:19:37 + + 17 ┆ otherField: "" + 18 ┆ inner: { + 19 ┆ otherField: 5 + 20 ┆ } + 21 ┆ } + + Invalid argument. Expected "String" but received "Int!". + diff --git a/snapshot_tests/operations/errors/expected/invalidObjectValues6.re.txt b/snapshot_tests/operations/errors/expected/invalidObjectValues6.re.txt new file mode 100644 index 00000000..d93ed20d --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidObjectValues6.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidObjectValues6.re:20:27-37 + + 18 ┆ query { + 19 ┆ invalidObjectValuesLst( + 20 ┆ embeddedList: {field: ""} + 21 ┆ ) + 22 ┆ } + + Invalid argument. Expected "[InputObject]!" but received "InputObject!". + diff --git a/snapshot_tests/operations/errors/expected/invalidObjectValues7.re.txt b/snapshot_tests/operations/errors/expected/invalidObjectValues7.re.txt new file mode 100644 index 00000000..efaa0586 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/invalidObjectValues7.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/invalidObjectValues7.re:20:36 + + 18 ┆ query { + 19 ┆ invalidObjectValuesLst( + 20 ┆ embeddedList: [{field: 5}] + 21 ┆ ) + 22 ┆ } + + Invalid argument. Expected "String!" but received "Int!". + diff --git a/snapshot_tests/operations/errors/expected/missingField1.re.txt b/snapshot_tests/operations/errors/expected/missingField1.re.txt new file mode 100644 index 00000000..27b727f1 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/missingField1.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/missingField1.re:6:7-27 + + 4 ┆ customScalarField(argOptional: $opt, argRequired: $req) { + 5 ┆ nullable + 6 ┆ thisFieldDoesNotExist + 7 ┆ nonNullable + 8 ┆ } + + Unknown field 'thisFieldDoesNotExist' on type CustomScalarObject + diff --git a/snapshot_tests/operations/errors/expected/missingField2.re.txt b/snapshot_tests/operations/errors/expected/missingField2.re.txt new file mode 100644 index 00000000..d96b480f --- /dev/null +++ b/snapshot_tests/operations/errors/expected/missingField2.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/missingField2.re:13:9-28 + + 11 ┆ {| + 12 ┆ query { + 13 ┆ l1: thisTypeDoesNotExist { + 14 ┆ ...Fragments + 15 ┆ } + + Unknown field 'thisTypeDoesNotExist' on type Query + diff --git a/snapshot_tests/operations/errors/expected/missingField3.re.txt b/snapshot_tests/operations/errors/expected/missingField3.re.txt new file mode 100644 index 00000000..ed1e7b70 --- /dev/null +++ b/snapshot_tests/operations/errors/expected/missingField3.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/missingField3.re:15:7-18 + + 13 ┆ l1: lists { + 14 ┆ ...Fragments + 15 ┆ doesNotExist + 16 ┆ } + 17 ┆ } + + Unknown field 'doesNotExist' on type Lists + diff --git a/snapshot_tests/operations/errors/expected/missingFragment.re.txt b/snapshot_tests/operations/errors/expected/missingFragment.re.txt new file mode 100644 index 00000000..03a02f6c --- /dev/null +++ b/snapshot_tests/operations/errors/expected/missingFragment.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/missingFragment.re:3:28-42 + + 1 │ module Fragment = [%graphql + 2 │ {| + 3 │ fragment ListFragment on UnknownFragment { + 4 │ nullableOfNullable + 5 │ nullableOfNonNullable + + Can't find fragment type: UnknownFragment + diff --git a/snapshot_tests/operations/errors/expected/wrongArguments.re.txt b/snapshot_tests/operations/errors/expected/wrongArguments.re.txt new file mode 100644 index 00000000..db0c91ba --- /dev/null +++ b/snapshot_tests/operations/errors/expected/wrongArguments.re.txt @@ -0,0 +1,12 @@ + + We've found a bug for you! + snapshot_tests/operations/errors/wrongArguments.re:14:7-25 + + 12 ┆ lists { + 13 ┆ nonNullableOfNullable + 14 ┆ ...FragmentWithArgs + 15 ┆ } + 16 ┆ } + + This call is missing an argument of type (~arg1: [ `String ]) + diff --git a/tests_bucklescript/operations/errors/fragmentIssue.re b/snapshot_tests/operations/errors/fragmentIssue.re similarity index 100% rename from tests_bucklescript/operations/errors/fragmentIssue.re rename to snapshot_tests/operations/errors/fragmentIssue.re diff --git a/tests_bucklescript/operations/errors/fragmentSpreadMissing.re b/snapshot_tests/operations/errors/fragmentSpreadMissing.re similarity index 100% rename from tests_bucklescript/operations/errors/fragmentSpreadMissing.re rename to snapshot_tests/operations/errors/fragmentSpreadMissing.re diff --git a/tests_bucklescript/operations/errors/fragmentSpreadMissingInFragment.re b/snapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re similarity index 100% rename from tests_bucklescript/operations/errors/fragmentSpreadMissingInFragment.re rename to snapshot_tests/operations/errors/fragmentSpreadMissingInFragment.re diff --git a/tests_bucklescript/operations/errors/fragmentWithWrongName.re b/snapshot_tests/operations/errors/fragmentWithWrongName.re similarity index 100% rename from tests_bucklescript/operations/errors/fragmentWithWrongName.re rename to snapshot_tests/operations/errors/fragmentWithWrongName.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType1.re b/snapshot_tests/operations/errors/invalidArgVariableType1.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType1.re rename to snapshot_tests/operations/errors/invalidArgVariableType1.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType2.re b/snapshot_tests/operations/errors/invalidArgVariableType2.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType2.re rename to snapshot_tests/operations/errors/invalidArgVariableType2.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType3.re b/snapshot_tests/operations/errors/invalidArgVariableType3.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType3.re rename to snapshot_tests/operations/errors/invalidArgVariableType3.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType4.re b/snapshot_tests/operations/errors/invalidArgVariableType4.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType4.re rename to snapshot_tests/operations/errors/invalidArgVariableType4.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType5.re b/snapshot_tests/operations/errors/invalidArgVariableType5.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType5.re rename to snapshot_tests/operations/errors/invalidArgVariableType5.re diff --git a/tests_bucklescript/operations/errors/invalidArgVariableType6.re b/snapshot_tests/operations/errors/invalidArgVariableType6.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidArgVariableType6.re rename to snapshot_tests/operations/errors/invalidArgVariableType6.re diff --git a/tests_bucklescript/operations/errors/invalidDefaultValue1.re b/snapshot_tests/operations/errors/invalidDefaultValue1.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidDefaultValue1.re rename to snapshot_tests/operations/errors/invalidDefaultValue1.re diff --git a/tests_bucklescript/operations/errors/invalidDefaultValue2.re b/snapshot_tests/operations/errors/invalidDefaultValue2.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidDefaultValue2.re rename to snapshot_tests/operations/errors/invalidDefaultValue2.re diff --git a/tests_bucklescript/operations/errors/invalidDefaultValue3.re b/snapshot_tests/operations/errors/invalidDefaultValue3.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidDefaultValue3.re rename to snapshot_tests/operations/errors/invalidDefaultValue3.re diff --git a/tests_bucklescript/operations/errors/invalidDefaultValue4.re b/snapshot_tests/operations/errors/invalidDefaultValue4.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidDefaultValue4.re rename to snapshot_tests/operations/errors/invalidDefaultValue4.re diff --git a/tests_bucklescript/operations/errors/invalidObjectValues1.re b/snapshot_tests/operations/errors/invalidObjectValues1.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidObjectValues1.re rename to snapshot_tests/operations/errors/invalidObjectValues1.re diff --git a/tests_bucklescript/operations/errors/invalidObjectValues6.re b/snapshot_tests/operations/errors/invalidObjectValues6.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidObjectValues6.re rename to snapshot_tests/operations/errors/invalidObjectValues6.re diff --git a/tests_bucklescript/operations/errors/invalidObjectValues7.re b/snapshot_tests/operations/errors/invalidObjectValues7.re similarity index 100% rename from tests_bucklescript/operations/errors/invalidObjectValues7.re rename to snapshot_tests/operations/errors/invalidObjectValues7.re diff --git a/tests_bucklescript/operations/errors/missingField1.re b/snapshot_tests/operations/errors/missingField1.re similarity index 100% rename from tests_bucklescript/operations/errors/missingField1.re rename to snapshot_tests/operations/errors/missingField1.re diff --git a/tests_bucklescript/operations/errors/missingField2.re b/snapshot_tests/operations/errors/missingField2.re similarity index 100% rename from tests_bucklescript/operations/errors/missingField2.re rename to snapshot_tests/operations/errors/missingField2.re diff --git a/tests_bucklescript/operations/errors/missingField3.re b/snapshot_tests/operations/errors/missingField3.re similarity index 100% rename from tests_bucklescript/operations/errors/missingField3.re rename to snapshot_tests/operations/errors/missingField3.re diff --git a/tests_bucklescript/operations/errors/missingFragment.re b/snapshot_tests/operations/errors/missingFragment.re similarity index 100% rename from tests_bucklescript/operations/errors/missingFragment.re rename to snapshot_tests/operations/errors/missingFragment.re diff --git a/tests_bucklescript/operations/errors/wrongArguments.re b/snapshot_tests/operations/errors/wrongArguments.re similarity index 100% rename from tests_bucklescript/operations/errors/wrongArguments.re rename to snapshot_tests/operations/errors/wrongArguments.re diff --git a/tests_bucklescript/operations/ewert_reproduction.re b/snapshot_tests/operations/ewert_reproduction.re similarity index 100% rename from tests_bucklescript/operations/ewert_reproduction.re rename to snapshot_tests/operations/ewert_reproduction.re diff --git a/snapshot_tests/operations/expected/apollo/compile/argNamedQuery.re.txt b/snapshot_tests/operations/expected/apollo/compile/argNamedQuery.re.txt new file mode 100644 index 00000000..e4785aca --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/argNamedQuery.re.txt @@ -0,0 +1,120 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables(inp) { + return { + query: inp.query + }; +} + +function makeVariables(query, param) { + return { + query: query + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$1(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$1(inp) { + return { + query: inp.query + }; +} + +function makeVariables$1(query, param) { + return { + query: query + }; +} + +var Query1 = { + Raw: Raw$1, + query: "query Query1($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$2(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$2(inp) { + return { + query: inp.query + }; +} + +function makeVariables$2(query, param) { + return { + query: query + }; +} + +var Query2 = { + Raw: Raw$2, + query: "query Query2($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2 +}; + +var MultipleQueryWithSameVarName = { + Query1: Query1, + Query2: Query2 +}; + +exports.MyQuery = MyQuery; +exports.MultipleQueryWithSameVarName = MultipleQueryWithSameVarName; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/comment.re.txt b/snapshot_tests/operations/expected/apollo/compile/comment.re.txt new file mode 100644 index 00000000..3580ca2c --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/comment.re.txt @@ -0,0 +1,101 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/customDecoder.re.txt b/snapshot_tests/operations/expected/apollo/compile/customDecoder.re.txt new file mode 100644 index 00000000..3f50d0ab --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/customDecoder.re.txt @@ -0,0 +1,83 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_format = require("rescript/lib/js/caml_format.js"); + +function parse(prim) { + return String(prim); +} + +var serialize = Caml_format.caml_int_of_string; + +var StringOfInt = { + parse: parse, + serialize: serialize +}; + +var parse$1 = Caml_format.caml_int_of_string; + +function serialize$1(prim) { + return String(prim); +} + +var IntOfString = { + parse: parse$1, + serialize: serialize$1 +}; + +var Raw = {}; + +function parse$2(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + __typename: value$1.__typename, + string: Caml_format.caml_int_of_string(value$1.string), + int: String(value$1.int) + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = Caml_format.caml_int_of_string(value$2); + var value$4 = value$1.string; + var value$5 = String(value$4); + var value$6 = value$1.__typename; + var variousScalars = { + __typename: value$6, + string: value$5, + int: value$3 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.StringOfInt = StringOfInt; +exports.IntOfString = IntOfString; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/customScalars.re.txt b/snapshot_tests/operations/expected/apollo/compile/customScalars.re.txt new file mode 100644 index 00000000..b241d934 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/customScalars.re.txt @@ -0,0 +1,61 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nullable; + return { + customScalarField: { + __typename: value$1.__typename, + nullable: !(value$2 == null) ? Caml_option.some(value$2) : undefined, + nonNullable: value$1.nonNullable + } + }; +} + +function serialize(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nonNullable; + var value$3 = value$1.nullable; + var nullable = value$3 !== undefined ? Caml_option.valFromOption(value$3) : null; + var value$4 = value$1.__typename; + var customScalarField = { + __typename: value$4, + nullable: nullable, + nonNullable: value$2 + }; + return { + customScalarField: customScalarField + }; +} + +function serializeVariables(inp) { + var a = inp.opt; + return { + opt: a !== undefined ? Caml_option.valFromOption(a) : undefined, + req: inp.req + }; +} + +function makeVariables(opt, req, param) { + return { + opt: opt, + req: req + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($opt: CustomScalar, $req: CustomScalar!) {\ncustomScalarField(argOptional: $opt, argRequired: $req) {\n__typename \nnullable \nnonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/customTypes.re.txt b/snapshot_tests/operations/expected/apollo/compile/customTypes.re.txt new file mode 100644 index 00000000..77d745fc --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/customTypes.re.txt @@ -0,0 +1,164 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +function parse(json) { + var match = Js_json.decodeString(json); + if (match === undefined) { + return /* Red */0; + } + switch (match) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var Color = { + parse: parse, + serialize: serialize +}; + +function parse$1(color) { + if (color === undefined) { + return /* Red */0; + } + switch (color) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize$1(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var NullableString = { + parse: parse$1, + serialize: serialize$1 +}; + +function parse$2(json) { + var str = Js_json.decodeString(json); + if (str !== undefined) { + return new Date(str); + } else { + return new Date(); + } +} + +function serialize$2(date) { + return date.toISOString(); +} + +var DateTime = { + parse: parse$2, + serialize: serialize$2 +}; + +var Raw = {}; + +function parse$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.futureTime; + var value$3 = value$1.nullableColor; + var value$4 = value$1.nullableString; + return { + customFields: { + __typename: value$1.__typename, + currentTime: parse$2(value$1.currentTime), + favoriteColor: parse(value$1.favoriteColor), + futureTime: !(value$2 == null) ? Caml_option.some(parse$2(value$2)) : undefined, + nullableColor: !(value$3 == null) ? parse(value$3) : undefined, + nullableString: parse$1(!(value$4 == null) ? value$4 : undefined) + } + }; +} + +function serialize$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.nullableString; + var value$3 = serialize$1(value$2); + var nullableString = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.nullableColor; + var nullableColor = value$4 !== undefined ? serialize(value$4) : null; + var value$5 = value$1.futureTime; + var futureTime = value$5 !== undefined ? Caml_option.valFromOption(value$5).toISOString() : null; + var value$6 = value$1.favoriteColor; + var value$7 = serialize(value$6); + var value$8 = value$1.currentTime; + var value$9 = value$8.toISOString(); + var value$10 = value$1.__typename; + var customFields = { + __typename: value$10, + currentTime: value$9, + favoriteColor: value$7, + futureTime: futureTime, + nullableColor: nullableColor, + nullableString: nullableString + }; + return { + customFields: customFields + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ncustomFields {\n__typename \ncurrentTime \nfavoriteColor \nfutureTime \nnullableColor \nnullableString \n}\n\n}\n", + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Color = Color; +exports.NullableString = NullableString; +exports.DateTime = DateTime; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/apollo/compile/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..7fdcf6a9 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,43 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + defaultObjectValueOnScalar: value.defaultObjectValueOnScalar + }; +} + +function serialize(value) { + var value$1 = value.defaultObjectValueOnScalar; + return { + defaultObjectValueOnScalar: value$1 + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndefaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/enumInput.re.txt b/snapshot_tests/operations/expected/apollo/compile/enumInput.re.txt new file mode 100644 index 00000000..efbda819 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/enumInput.re.txt @@ -0,0 +1,45 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + enumInput: value.enumInput + }; +} + +function serialize(value) { + var value$1 = value.enumInput; + return { + enumInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.arg; + return { + arg: a === "THIRD" ? "THIRD" : ( + a === "SECOND" ? "SECOND" : "FIRST" + ) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: SampleField!) {\nenumInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/apollo/compile/ewert_reproduction.re.txt new file mode 100644 index 00000000..17e30e2e --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/ewert_reproduction.re.txt @@ -0,0 +1,59 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.user; + var value$2 = value$1.firstname; + return { + __typename: value.__typename, + user: { + __typename: value$1.__typename, + id: value$1.id, + firstname: !(value$2 == null) ? value$2 : undefined, + lastname: value$1.lastname + } + }; +} + +function serialize(value) { + var value$1 = value.user; + var value$2 = value$1.lastname; + var value$3 = value$1.firstname; + var firstname = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.id; + var value$5 = value$1.__typename; + var user = { + __typename: value$5, + id: value$4, + firstname: firstname, + lastname: value$2 + }; + var value$6 = value.__typename; + return { + __typename: value$6, + user: user + }; +} + +function verifyArgsAndParse(_userId, _UserData, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var UserData = { + Raw: Raw, + query: "fragment UserData on Workspace {\n__typename \nuser(id: $userId) {\n__typename \nid \nfirstname \nlastname \n}\n\n}\n", + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.UserData = UserData; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/explicit_object_record.re.txt b/snapshot_tests/operations/expected/apollo/compile/explicit_object_record.re.txt new file mode 100644 index 00000000..2f12c8b5 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/explicit_object_record.re.txt @@ -0,0 +1,195 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + __typename: value$1.__typename, + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$6 = value$1.__typename; + var lists = { + __typename: value$6, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var RecordsQuery = { + Raw: Raw, + query: "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + __typename: value$1.__typename, + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$6 = value$1.__typename; + var lists = { + __typename: value$6, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ObjectsQuery = { + Raw: Raw$1, + query: "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.RecordsQuery = RecordsQuery; +exports.ObjectsQuery = ObjectsQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/extensions.re.txt b/snapshot_tests/operations/expected/apollo/compile/extensions.re.txt new file mode 100644 index 00000000..eda15bdb --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/extensions.re.txt @@ -0,0 +1,241 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function ExtendQuery(M) { + var use = function (param) { + + }; + return { + use: use + }; +} + +var Parent = { + ExtendQuery: ExtendQuery +}; + +var Raw = {}; + +var query = "query Bla {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + __typename: value$1.__typename, + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$6 = value$1.__typename; + var lists = { + __typename: value$6, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Bla_inner = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +function use(param) { + +} + +var Bla = { + Bla_inner: Bla_inner, + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables, + use: use +}; + +var Raw$1 = {}; + +var query$1 = "query Bla2 {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + __typename: value$1.__typename, + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$6 = value$1.__typename; + var lists = { + __typename: value$6, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var Inner = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +function use$1(param) { + +} + +exports.Parent = Parent; +exports.Bla = Bla; +exports.Inner = Inner; +exports.Raw = Raw$1; +exports.query = query$1; +exports.parse = parse$1; +exports.serialize = serialize$1; +exports.serializeVariables = serializeVariables$1; +exports.makeVariables = makeVariables$1; +exports.makeDefaultVariables = makeDefaultVariables$1; +exports.use = use$1; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/apollo/compile/fragmentDefinition.re.txt new file mode 100644 index 00000000..c2260c9f --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/fragmentDefinition.re.txt @@ -0,0 +1,450 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment ListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$3 = value.__typename; + return { + __typename: value$3, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNonNullable: !(value$1 == null) ? value$1.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.__typename; + return { + __typename: value$2, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: "fragment Another on Lists {\n__typename \nnullableOfNonNullable \n}\n", + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$1 = "fragment FragmentWithArgs on Lists {\n__typename \nlistWithArg(arg1: $arg1) \n}\n"; + +function parse$2(value) { + var value$1 = value.listWithArg; + return { + __typename: value.__typename, + listWithArg: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize$2(value) { + var value$1 = value.listWithArg; + var listWithArg = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$2 = value.__typename; + return { + __typename: value$2, + listWithArg: listWithArg + }; +} + +function verifyArgsAndParse$2(_arg1, _FragmentWithArgs, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var FragmentWithArgs = { + Raw: Raw$2, + query: query$1, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +var Raw$3 = {}; + +var query$2 = "fragment InlineListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$3(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$3(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$3 = value.__typename; + return { + __typename: value$3, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$3(_InlineListFragment, value) { + return parse$3(value); +} + +function verifyName$3(param) { + +} + +var InlineListFragment = { + Raw: Raw$3, + query: query$2, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse$3, + verifyName: verifyName$3 +}; + +var Raw$4 = {}; + +function parse$4(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$4(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$3 = value.__typename; + return { + __typename: value$3, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$4(_InlineListFragment, value) { + return parse$4(value); +} + +function verifyName$4(param) { + +} + +var Wrapper = { + Raw: Raw$4, + query: "fragment InlineListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n", + parse: parse$4, + serialize: serialize$4, + verifyArgsAndParse: verifyArgsAndParse$4, + verifyName: verifyName$4 +}; + +var Raw$5 = {}; + +var query$3 = "query MyQuery($arg1: String) {\nl1: lists {\n...ListFragment \n}\n\nl2: lists {\n__typename \n...ListFragment \n...ListFragment \n}\n\nl3: lists {\n__typename \nnullableOfNullable \n...ListFragment \n...ListFragment \n}\n\nl4: lists {\n__typename \nnullableOfNullable \n...InlineListFragment \n}\n\nl5: lists {\n...FragmentWithArgs \n}\n\n}\nfragment FragmentWithArgs on Lists {\n__typename \nlistWithArg(arg1: $arg1) \n}\nfragment InlineListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\nfragment ListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$5(value) { + var value$1 = value.l2; + var value$2 = value.l3; + var value$3 = value$2["nullableOfNullable"]; + var value$4 = value.l4; + var value$5 = value$4["nullableOfNullable"]; + return { + l1: parse(value.l1), + l2: { + __typename: value$1["__typename"], + frag1: parse(value$1), + frag2: parse(value$1) + }, + l3: { + __typename: value$2["__typename"], + nullableOfNullable: !(value$3 == null) ? value$3.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + frag1: parse(value$2), + frag2: parse(value$2) + }, + l4: { + __typename: value$4["__typename"], + nullableOfNullable: !(value$5 == null) ? value$5.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + inlineListFragment: parse$3(value$4) + }, + l5: parse$2(value.l5) + }; +} + +function serialize$5(value) { + var value$1 = value.l5; + var l5 = serialize$2(value$1); + var value$2 = value.l4; + var value$3 = value$2.nullableOfNullable; + var nullableOfNullable = value$3 !== undefined ? value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$4 = value$2.__typename; + var l4 = [serialize$3(value$2.inlineListFragment)].reduce(deepMerge, { + __typename: value$4, + nullableOfNullable: nullableOfNullable + }); + var value$5 = value.l3; + var value$6 = value$5.nullableOfNullable; + var nullableOfNullable$1 = value$6 !== undefined ? value$6.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$7 = value$5.__typename; + var l3 = [ + serialize(value$5.frag1), + serialize(value$5.frag2) + ].reduce(deepMerge, { + __typename: value$7, + nullableOfNullable: nullableOfNullable$1 + }); + var value$8 = value.l2; + var l2 = [ + serialize(value$8.frag1), + serialize(value$8.frag2) + ].reduce(deepMerge, { + __typename: value$8.__typename + }); + var value$9 = value.l1; + var l1 = serialize(value$9); + return { + l1: l1, + l2: l2, + l3: l3, + l4: l4, + l5: l5 + }; +} + +function serializeVariables(inp) { + var a = inp.arg1; + return { + arg1: a !== undefined ? a : undefined + }; +} + +function makeVariables(arg1, param) { + return { + arg1: arg1 + }; +} + +function makeDefaultVariables(param) { + return { + arg1: undefined + }; +} + +var MyQuery = { + Raw: Raw$5, + query: query$3, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$6 = {}; + +var query$4 = "query {\nlists {\n...ListFragment \n}\n\n}\nfragment ListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$6(value) { + return { + lists: parse(value.lists) + }; +} + +function serialize$6(value) { + var value$1 = value.lists; + var lists = serialize(value$1); + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery2 = { + Raw: Raw$6, + query: query$4, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +exports.FragmentWithArgs = FragmentWithArgs; +exports.InlineListFragment = InlineListFragment; +exports.Wrapper = Wrapper; +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/apollo/compile/fragmentInFragment.re.txt new file mode 100644 index 00000000..71fb3bc7 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/fragmentInFragment.re.txt @@ -0,0 +1,117 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment ListFragment on Lists {\n__typename \nnullableOfNullable \n}\n"; + +function parse(value) { + var value$1 = value.nullableOfNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNullable; + var nullableOfNullable = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$2 = value.__typename; + return { + __typename: value$2, + nullableOfNullable: nullableOfNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment Another on Lists {\n__typename \nnullableOfNullable \n...ListFragment \n}\nfragment ListFragment on Lists {\n__typename \nnullableOfNullable \n}\n"; + +function parse$1(value) { + var value$1 = value["nullableOfNullable"]; + return { + __typename: value["__typename"], + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + listFragment: parse(value) + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNullable; + var nullableOfNullable = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$2 = value.__typename; + return [serialize(value.listFragment)].reduce(deepMerge, { + __typename: value$2, + nullableOfNullable: nullableOfNullable + }); +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/apollo/compile/fragmentOnInterface.re.txt new file mode 100644 index 00000000..f6cc4a84 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/fragmentOnInterface.re.txt @@ -0,0 +1,129 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse(value) { + return { + id: value.id + }; +} + +function serialize(value) { + var value$1 = value.id; + return { + id: value$1 + }; +} + +function verifyArgsAndParse(_InterfaceFragment, value) { + return { + id: value.id + }; +} + +function verifyName(param) { + +} + +var InterfaceFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment AnotherFragment on User {\n__typename\nid \n...InterfaceFragment \n}\nfragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse$1(value) { + return { + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$1(value) { + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + id: value.id + }); +} + +function verifyArgsAndParse$1(_AnotherFragment, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var AnotherFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = "fragment AnonUser on AnonymousUser {\n__typename \nid \n...InterfaceFragment \n}\nfragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse$2(value) { + return { + __typename: value["__typename"], + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$2(value) { + var value$1 = value.id; + var value$2 = value.__typename; + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + __typename: value$2, + id: value$1 + }); +} + +function verifyArgsAndParse$2(_AnonUser, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var AnonUser = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.InterfaceFragment = InterfaceFragment; +exports.AnotherFragment = AnotherFragment; +exports.AnonUser = AnonUser; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/fragmentUnion.re.txt b/snapshot_tests/operations/expected/apollo/compile/fragmentUnion.re.txt new file mode 100644 index 00000000..e6967bc2 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/fragmentUnion.re.txt @@ -0,0 +1,154 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var assign_typename = ((obj, typename) => { obj.__typename = typename; return obj }); + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +var query = "fragment DogFragment on Dog {\n__typename \nname \n}\n"; + +function parse(value) { + return { + __typename: value.__typename, + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + var value$2 = value.__typename; + return { + __typename: value$2, + name: value$1 + }; +} + +function verifyArgsAndParse(_DogFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var DogFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment HumanFragment on Human {\n__typename \nname \n}\n"; + +function parse$1(value) { + return { + __typename: value.__typename, + name: value.name + }; +} + +function serialize$1(value) { + var value$1 = value.name; + var value$2 = value.__typename; + return { + __typename: value$2, + name: value$1 + }; +} + +function verifyArgsAndParse$1(_HumanFragment, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var HumanFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = "query MyQuery {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n...on Human {\n...HumanFragment \n}\n\n}\n\n}\nfragment DogFragment on Dog {\n__typename \nname \n}\nfragment HumanFragment on Human {\n__typename \nname \n}\n"; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: parse(value$1) + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: parse$1(value$1) + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman = variant === "FutureAddedValue" ? value$1.VAL : ( + variant === "Dog" ? assign_typename(serialize(value$1.VAL), "Dog") : assign_typename(serialize$1(value$1.VAL), "Human") + ); + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.DogFragment = DogFragment; +exports.HumanFragment = HumanFragment; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/apollo/compile/fragmentvariableinput.re.txt new file mode 100644 index 00000000..2288be31 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/fragmentvariableinput.re.txt @@ -0,0 +1,61 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.reposts; + return { + __typename: value.__typename, + reposts: value$1.map(function (value) { + if (!(value == null)) { + return { + __typename: value.__typename, + id: value.id + }; + } + + }) + }; +} + +function serialize(value) { + var value$1 = value.reposts; + var reposts = value$1.map(function (value) { + if (value === undefined) { + return null; + } + var value$1 = value.id; + var value$2 = value.__typename; + return { + __typename: value$2, + id: value$1 + }; + }); + var value$2 = value.__typename; + return { + __typename: value$2, + reposts: reposts + }; +} + +function verifyArgsAndParse(_name, _test, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var Test = { + Raw: Raw, + query: "fragment test on Post {\n__typename \nreposts(arg: {name: $name}) {\n__typename \nid \n}\n\n}\n", + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.Test = Test; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/hasuraRepro.re.txt b/snapshot_tests/operations/expected/apollo/compile/hasuraRepro.re.txt new file mode 100644 index 00000000..cde3cc52 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/hasuraRepro.re.txt @@ -0,0 +1,95 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = "fragment Dog on Dog {\n__typename \nname \n}\n"; + +function parse(value) { + return { + __typename: value.__typename, + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + var value$2 = value.__typename; + return { + __typename: value$2, + name: value$1 + }; +} + +function verifyArgsAndParse(_Dog, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var Dog = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "query HasuraRepro($blockNumber: Int, $type: String) {\nhasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n...Dog \n}\n\n}\nfragment Dog on Dog {\n__typename \nname \n}\n"; + +function parse$1(value) { + return { + hasuraRepro: parse(value.hasuraRepro) + }; +} + +function serialize$1(value) { + var value$1 = value.hasuraRepro; + var hasuraRepro = serialize(value$1); + return { + hasuraRepro: hasuraRepro + }; +} + +function serializeVariables(inp) { + var a = inp.blockNumber; + var a$1 = inp.type; + return { + blockNumber: a !== undefined ? a : undefined, + type: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(blockNumber, type_, param) { + return { + blockNumber: blockNumber, + type: type_ + }; +} + +function makeDefaultVariables(param) { + return { + blockNumber: undefined, + type: undefined + }; +} + +var HasuraRepro = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Dog = Dog; +exports.HasuraRepro = HasuraRepro; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/interface.re.txt b/snapshot_tests/operations/expected/apollo/compile/interface.re.txt new file mode 100644 index 00000000..57a154dd --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/interface.re.txt @@ -0,0 +1,387 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + switch (typename) { + case "AdminUser" : + return { + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id, + name: value.name + } + }; + case "AnonymousUser" : + return { + NAME: "AnonymousUser", + VAL: { + __typename: value.__typename, + id: value.id, + anonymousId: value.anonymousId + } + }; + default: + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var variant = value.NAME; + if (variant === "UnspecifiedFragment") { + return {}; + } + if (variant === "AdminUser") { + var value$1 = value.VAL; + var value$2 = value$1.name; + var value$3 = value$1.id; + return { + __typename: "AdminUser", + id: value$3, + name: value$2 + }; + } + var value$4 = value.VAL; + var value$5 = value$4.anonymousId; + var value$6 = value$4.id; + return { + __typename: "AnonymousUser", + id: value$6, + anonymousId: value$5 + }; + }); + return { + users: users + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var QueryWithOnlyFragments = { + Raw: Raw, + query: "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \nname \n}\n\n...on AnonymousUser {\n__typename \nid \nanonymousId \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + if (typename === "AdminUser") { + return { + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }; + } else { + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize$1(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + if (value.NAME !== "AdminUser") { + return {}; + } + var value$1 = value.VAL.id; + return { + __typename: "AdminUser", + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var QueryWithTypename = { + Raw: Raw$1, + query: "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp; + switch (typename) { + case "AdminUser" : + tmp = { + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + name: value.name + } + }; + break; + case "AnonymousUser" : + tmp = { + NAME: "AnonymousUser", + VAL: { + __typename: value.__typename, + anonymousId: value.anonymousId + } + }; + break; + default: + tmp = { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + return { + fragment: tmp, + id: value["id"] + }; + }) + }; +} + +function serialize$2(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.fragment; + var variant = value$1.NAME; + var tmp; + if (variant === "UnspecifiedFragment") { + tmp = {}; + } else if (variant === "AdminUser") { + var value$2 = value$1.VAL.name; + tmp = { + __typename: "AdminUser", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.anonymousId; + tmp = { + __typename: "AnonymousUser", + anonymousId: value$3 + }; + } + return [tmp].reduce(deepMerge, { + id: value.id + }); + }); + return { + users: users + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var QueryWithMixedFragments = { + Raw: Raw$2, + query: "query {\nusers {\n__typename\nid \n...on AdminUser {\n__typename \nname \n}\n\n...on AnonymousUser {\n__typename \nanonymousId \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +function parse$3(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp = typename === "AdminUser" ? ({ + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }) : ({ + NAME: "UnspecifiedFragment", + VAL: typename + }); + return { + fragment: tmp, + __typename: value["__typename"], + id: value["id"] + }; + }) + }; +} + +function serialize$3(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + var value$2 = value.__typename; + var value$3 = value.fragment; + var tmp; + if (value$3.NAME === "AdminUser") { + var value$4 = value$3.VAL.id; + tmp = { + __typename: "AdminUser", + id: value$4 + }; + } else { + tmp = {}; + } + return [tmp].reduce(deepMerge, { + __typename: value$2, + id: value$1 + }); + }); + return { + users: users + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MixedQueryWithTypename = { + Raw: Raw$3, + query: "query {\nusers {\n__typename\nid \n__typename \n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n", + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +function parse$4(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + return { + id: value.id + }; + }) + }; +} + +function serialize$4(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + return { + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var QueryWithoutFragments = { + Raw: Raw$4, + query: "query {\nusers {\n__typename\nid \n}\n\n}\n", + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.QueryWithOnlyFragments = QueryWithOnlyFragments; +exports.QueryWithTypename = QueryWithTypename; +exports.QueryWithMixedFragments = QueryWithMixedFragments; +exports.MixedQueryWithTypename = MixedQueryWithTypename; +exports.QueryWithoutFragments = QueryWithoutFragments; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/lists.re.txt b/snapshot_tests/operations/expected/apollo/compile/lists.re.txt new file mode 100644 index 00000000..cbae9e2a --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/lists.re.txt @@ -0,0 +1,100 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + __typename: value$1.__typename, + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$6 = value$1.__typename; + var lists = { + __typename: value$6, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/listsArgs.re.txt b/snapshot_tests/operations/expected/apollo/compile/listsArgs.re.txt new file mode 100644 index 00000000..e7f28a51 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/listsArgs.re.txt @@ -0,0 +1,66 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function makeVariables(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\nlistsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/listsInput.re.txt b/snapshot_tests/operations/expected/apollo/compile/listsInput.re.txt new file mode 100644 index 00000000..d641f996 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/listsInput.re.txt @@ -0,0 +1,80 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeInputObjectListsInput(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectListsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectListsInput(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: ListsInput!) {\nlistsInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectListsInput: serializeInputObjectListsInput, + makeVariables: makeVariables, + makeInputObjectListsInput: makeInputObjectListsInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/module_type.re.txt b/snapshot_tests/operations/expected/apollo/compile/module_type.re.txt new file mode 100644 index 00000000..fe9238ab --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/module_type.re.txt @@ -0,0 +1,106 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Curry = require("rescript/lib/js/curry.js"); + +var MyQuery = {}; + +var MyQuery2 = {}; + +function parse(nestedObject) { + return { + otherInner: nestedObject.inner + }; +} + +function serialize(t) { + return { + inner: t.otherInner + }; +} + +var VariousScalars = { + parse: parse, + serialize: serialize +}; + +var Raw = {}; + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: Curry._1(parse, { + inner: tmp + }) + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = Curry._1(serialize, value$1); + var value$3 = value$2.inner; + var inner; + if (value$3 !== undefined) { + var value$4 = value$3.inner; + var inner$1; + if (value$4 !== undefined) { + var value$5 = value$4.field; + inner$1 = { + field: value$5 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQueryRecursive = { + Raw: Raw, + query: "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +exports.MyQueryRecursive = MyQueryRecursive; +exports.VariousScalars = VariousScalars; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/mutation.re.txt b/snapshot_tests/operations/expected/apollo/compile/mutation.re.txt new file mode 100644 index 00000000..b6df5804 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/mutation.re.txt @@ -0,0 +1,111 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.value; + var value$3 = value$1.errors; + return { + mutationWithError: { + __typename: value$1.__typename, + value: !(value$2 == null) ? ({ + __typename: value$2.__typename, + stringField: value$2.stringField + }) : undefined, + errors: !(value$3 == null) ? value$3.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + __typename: value.__typename, + field: tmp, + message: value.message + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.message; + var value$2 = value.field; + var field = typeof value$2 === "object" ? value$2.VAL : ( + value$2 === "THIRD" ? "THIRD" : ( + value$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + var value$3 = value.__typename; + return { + __typename: value$3, + field: field, + message: value$1 + }; + }) : null; + var value$3 = value$1.value; + var value$4; + if (value$3 !== undefined) { + var value$5 = value$3.stringField; + var value$6 = value$3.__typename; + value$4 = { + __typename: value$6, + stringField: value$5 + }; + } else { + value$4 = null; + } + var value$7 = value$1.__typename; + var mutationWithError = { + __typename: value$7, + value: value$4, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "mutation {\nmutationWithError {\n__typename \nvalue {\n__typename \nstringField \n}\n\nerrors {\n__typename \nfield \nmessage \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/apollo/compile/mutationWithArgs.re.txt new file mode 100644 index 00000000..b0db8792 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/mutationWithArgs.re.txt @@ -0,0 +1,42 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/apollo/compile/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..b0db8792 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,42 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/nested.re.txt b/snapshot_tests/operations/expected/apollo/compile/nested.re.txt new file mode 100644 index 00000000..1b9bf417 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/nested.re.txt @@ -0,0 +1,362 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + var value$4 = value.second; + var value$5 = value$4.inner; + var tmp$1; + if (value$5 == null) { + tmp$1 = undefined; + } else { + var value$6 = value$5.inner; + tmp$1 = { + __typename: value$5.__typename, + inner: !(value$6 == null) ? ({ + __typename: value$6.__typename, + f1: value$6.f1, + f2: value$6.f2 + }) : undefined + }; + } + var value$7 = value.let; + var value$8 = value$7.inner; + var tmp$2; + if (value$8 == null) { + tmp$2 = undefined; + } else { + var value$9 = value$8.inner; + tmp$2 = { + __typename: value$8.__typename, + inner: !(value$9 == null) ? ({ + __typename: value$9.__typename, + field: value$9.field + }) : undefined + }; + } + return { + first: { + __typename: value$1.__typename, + inner: tmp + }, + second: { + __typename: value$4.__typename, + inner: tmp$1 + }, + let: { + __typename: value$7.__typename, + inner: tmp$2 + } + }; +} + +function serialize(value) { + var value$1 = value.let; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var let_ = { + __typename: value$7, + inner: inner + }; + var value$8 = value.second; + var value$9 = value$8.inner; + var inner$2; + if (value$9 !== undefined) { + var value$10 = value$9.inner; + var inner$3; + if (value$10 !== undefined) { + var value$11 = value$10.f2; + var value$12 = value$10.f1; + var value$13 = value$10.__typename; + inner$3 = { + __typename: value$13, + f1: value$12, + f2: value$11 + }; + } else { + inner$3 = null; + } + var value$14 = value$9.__typename; + inner$2 = { + __typename: value$14, + inner: inner$3 + }; + } else { + inner$2 = null; + } + var value$15 = value$8.__typename; + var second = { + __typename: value$15, + inner: inner$2 + }; + var value$16 = value.first; + var value$17 = value$16.inner; + var inner$4; + if (value$17 !== undefined) { + var value$18 = value$17.inner; + var inner$5; + if (value$18 !== undefined) { + var value$19 = value$18.field; + var value$20 = value$18.__typename; + inner$5 = { + __typename: value$20, + field: value$19 + }; + } else { + inner$5 = null; + } + var value$21 = value$17.__typename; + inner$4 = { + __typename: value$21, + inner: inner$5 + }; + } else { + inner$4 = null; + } + var value$22 = value$16.__typename; + var first = { + __typename: value$22, + inner: inner$4 + }; + return { + first: first, + second: second, + let: let_ + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\nsecond: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nf1: field \nf2: field \n}\n\n}\n\n}\n\nlet: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + __typename: value$1.__typename, + inner: tmp + } + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var nestedObject = { + __typename: value$7, + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryWithSig = { + Raw: Raw$1, + query: "query {\nnestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Test = { + MyQueryWithSig: MyQueryWithSig +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + __typename: value$1.__typename, + inner: tmp + } + }; +} + +function serialize$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var nestedObject = { + __typename: value$7, + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQueryWithSigDirect = { + Raw: Raw$2, + query: "query {\nnestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +exports.MyQueryWithSigDirect = MyQueryWithSigDirect; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/apollo/compile/nonrecursiveInput.re.txt new file mode 100644 index 00000000..9b3a492a --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/nonrecursiveInput.re.txt @@ -0,0 +1,201 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + scalarsInput: value.scalarsInput, + more: value.more + }; +} + +function serialize$1(value) { + var value$1 = value.more; + var value$2 = value.scalarsInput; + return { + scalarsInput: value$2, + more: value$1 + }; +} + +function serializeInputObjectEmbeddedInput$1(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput$1(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput$1(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables$1(inp) { + return { + arg: serializeInputObjectNonrecursiveInput$1(inp.arg), + arg2: serializeInputObjectNonrecursiveInput$1(inp.arg2) + }; +} + +function makeVariables$1(arg, arg2, param) { + return { + arg: arg, + arg2: arg2 + }; +} + +function makeInputObjectNonrecursiveInput$1(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput$1(field, param) { + return { + field: field + }; +} + +var MyQuery2 = { + Raw: Raw$1, + query: "query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\nscalarsInput(arg: $arg) \nmore: scalarsInput(arg: $arg2) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput$1, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput$1, + makeVariables: makeVariables$1, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput$1, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/apollo/compile/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..14731693 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/omitFutureValueEnum.re.txt @@ -0,0 +1,265 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + __typename: value$1.__typename, + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + __typename: value.__typename, + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = typeof value$1 === "object" ? value$1.VAL : ( + value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + var value$2 = value.message; + var value$3 = value.__typename; + return { + __typename: value$3, + message: value$2, + field: field + }; + }) : null; + var value$3 = value$1.__typename; + var mutationWithError = { + __typename: value$3, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + __typename: value$1.__typename, + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + __typename: value.__typename, + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + var value$3 = value.__typename; + return { + __typename: value$3, + message: value$2, + field: field + }; + }) : null; + var value$3 = value$1.__typename; + var mutationWithError = { + __typename: value$3, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + __typename: value$1.__typename, + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + __typename: value.__typename, + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + var value$3 = value.__typename; + return { + __typename: value$3, + message: value$2, + field: field + }; + }) : null; + var value$3 = value$1.__typename; + var mutationWithError = { + __typename: value$3, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/apollo/compile/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..8fc19916 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/omitFutureValueUnion.re.txt @@ -0,0 +1,260 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/apollo/compile/pokedexApolloMode.re.txt new file mode 100644 index 00000000..5e9bf098 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/pokedexApolloMode.re.txt @@ -0,0 +1,69 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + __typename: value$1.__typename, + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + var value$4 = value$1.__typename; + pokemon = { + __typename: value$4, + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\npokemon(name: \"Pikachu\") {\n__typename \nid \nname \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/pokedexScalars.re.txt b/snapshot_tests/operations/expected/apollo/compile/pokedexScalars.re.txt new file mode 100644 index 00000000..aee2d984 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/pokedexScalars.re.txt @@ -0,0 +1,155 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + __typename: value$1.__typename, + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + var value$4 = value$1.__typename; + pokemon = { + __typename: value$4, + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQuery = { + Raw: Raw, + query: "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\n__typename \nid \nname \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + __typename: value$1.__typename, + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + var value$4 = value$1.__typename; + pokemon = { + __typename: value$4, + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables$1(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables$1(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables$1(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQueryDirectives = { + Raw: Raw$1, + query: "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\n__typename \nid \nname \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQueryDirectives = MyQueryDirectives; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/record.re.txt b/snapshot_tests/operations/expected/apollo/compile/record.re.txt new file mode 100644 index 00000000..486cb55f --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/record.re.txt @@ -0,0 +1,410 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + __typename: value$1.__typename, + string: value$1.string, + int: value$1.int + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = value$1.string; + var value$4 = value$1.__typename; + var variousScalars = { + __typename: value$4, + string: value$3, + int: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.__typename; + var variousScalars = { + __typename: value$3, + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var OneFieldQuery = { + Raw: Raw$1, + query: "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.__typename; + var variousScalars = { + __typename: value$3, + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var OneFieldQueryWithTypename = { + Raw: Raw$2, + query: "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query = "fragment Fragment on VariousScalars {\n__typename \nstring \nint \n}\n"; + +function parse$3(value) { + return { + __typename: value.__typename, + string: value.string, + int: value.int + }; +} + +function serialize$3(value) { + var value$1 = value.int; + var value$2 = value.string; + var value$3 = value.__typename; + return { + __typename: value$3, + string: value$2, + int: value$1 + }; +} + +function verifyArgsAndParse(_Fragment, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var Fragment = { + Raw: Raw$3, + query: query, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$1 = "query {\nvariousScalars {\n...Fragment \n}\n\n}\nfragment Fragment on VariousScalars {\n__typename \nstring \nint \n}\n"; + +function parse$4(value) { + return { + variousScalars: parse$3(value.variousScalars) + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var variousScalars = serialize$3(value$1); + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var Untitled1 = { + Raw: Raw$4, + query: query$1, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var ExternalFragmentQuery = { + Fragment: Fragment, + Untitled1: Untitled1 +}; + +var Raw$5 = {}; + +function parse$5(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$5(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var InlineFragmentQuery = { + Raw: Raw$5, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n", + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$6 = {}; + +var query$2 = "fragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + +function parse$6(value) { + return { + __typename: value.__typename, + name: value.name, + barkVolume: value.barkVolume + }; +} + +function serialize$6(value) { + var value$1 = value.barkVolume; + var value$2 = value.name; + var value$3 = value.__typename; + return { + __typename: value$3, + name: value$2, + barkVolume: value$1 + }; +} + +function verifyArgsAndParse$1(_DogFragment, value) { + return parse$6(value); +} + +function verifyName$1(param) { + +} + +var DogFragment = { + Raw: Raw$6, + query: query$2, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$7 = {}; + +var query$3 = "query {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n}\n\n}\nfragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + +function parse$7(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$6(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$7(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$6(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var Untitled1$1 = { + Raw: Raw$7, + query: query$3, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var UnionExternalFragmentQuery = { + DogFragment: DogFragment, + Untitled1: Untitled1$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.OneFieldQuery = OneFieldQuery; +exports.OneFieldQueryWithTypename = OneFieldQueryWithTypename; +exports.ExternalFragmentQuery = ExternalFragmentQuery; +exports.InlineFragmentQuery = InlineFragmentQuery; +exports.UnionExternalFragmentQuery = UnionExternalFragmentQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/recursiveInput.re.txt b/snapshot_tests/operations/expected/apollo/compile/recursiveInput.re.txt new file mode 100644 index 00000000..0d3daa37 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/recursiveInput.re.txt @@ -0,0 +1,155 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + recursiveInput: value.recursiveInput + }; +} + +function serialize(value) { + var value$1 = value.recursiveInput; + return { + recursiveInput: value$1 + }; +} + +function serializeInputObjectRecursiveInput(inp) { + var a = inp.otherField; + var a$1 = inp.inner; + var a$2 = inp.enum; + return { + otherField: a !== undefined ? a : undefined, + inner: a$1 !== undefined ? serializeInputObjectRecursiveInput(a$1) : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectRecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectRecursiveInput(otherField, inner, $$enum, param) { + return { + otherField: otherField, + inner: inner, + enum: $$enum + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: RecursiveInput!) {\nrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectRecursiveInput: serializeInputObjectRecursiveInput, + makeVariables: makeVariables, + makeInputObjectRecursiveInput: makeInputObjectRecursiveInput +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + recursiveRepro: value.recursiveRepro + }; +} + +function serialize$1(value) { + var value$1 = value.recursiveRepro; + return { + recursiveRepro: value$1 + }; +} + +function serializeInputObjectnested_type(inp) { + var a = inp.the_problem; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined + }; +} + +function serializeInputObjectthis_will_be_duplicated(inp) { + return { + id: inp.id + }; +} + +function serializeInputObjectproblem_input(inp) { + var a = inp.the_problem; + var a$1 = inp.b; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined, + b: a$1 !== undefined ? serializeInputObjectnested_type(a$1) : undefined + }; +} + +function serializeVariables$1(inp) { + return { + input: serializeInputObjectproblem_input(inp.input) + }; +} + +function makeVariables$1(input, param) { + return { + input: input + }; +} + +function makeInputObjectproblem_input(the_problem, b, param) { + return { + the_problem: the_problem, + b: b + }; +} + +function makeInputObjectthis_will_be_duplicated(id, param) { + return { + id: id + }; +} + +function makeInputObjectnested_type(the_problem, param) { + return { + the_problem: the_problem + }; +} + +var Test = { + Raw: Raw$1, + query: "query Test($input: problem_input!) {\nrecursiveRepro(input: $input) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectproblem_input: serializeInputObjectproblem_input, + serializeInputObjectthis_will_be_duplicated: serializeInputObjectthis_will_be_duplicated, + serializeInputObjectnested_type: serializeInputObjectnested_type, + makeVariables: makeVariables$1, + makeInputObjectproblem_input: makeInputObjectproblem_input, + makeInputObjectthis_will_be_duplicated: makeInputObjectthis_will_be_duplicated, + makeInputObjectnested_type: makeInputObjectnested_type +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/scalars.re.txt b/snapshot_tests/operations/expected/apollo/compile/scalars.re.txt new file mode 100644 index 00000000..4344ae3c --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/scalars.re.txt @@ -0,0 +1,90 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\n__typename \nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/scalarsArgs.re.txt b/snapshot_tests/operations/expected/apollo/compile/scalarsArgs.re.txt new file mode 100644 index 00000000..a6b9626b --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/scalarsArgs.re.txt @@ -0,0 +1,65 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function makeVariables(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\nscalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/scalarsInput.re.txt b/snapshot_tests/operations/expected/apollo/compile/scalarsInput.re.txt new file mode 100644 index 00000000..e957664f --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/scalarsInput.re.txt @@ -0,0 +1,79 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeInputObjectVariousScalarsInput(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectVariousScalarsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectVariousScalarsInput(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: VariousScalarsInput!) {\nscalarsInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectVariousScalarsInput: serializeInputObjectVariousScalarsInput, + makeVariables: makeVariables, + makeInputObjectVariousScalarsInput: makeInputObjectVariousScalarsInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/skipDirectives.re.txt b/snapshot_tests/operations/expected/apollo/compile/skipDirectives.re.txt new file mode 100644 index 00000000..c3a1fa08 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/skipDirectives.re.txt @@ -0,0 +1,79 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.v1; + var value$2 = value$1.nullableString; + var value$3 = value$1.string; + var value$4 = value.v2; + var value$5 = value$4.nullableString; + var value$6 = value$4.string; + return { + v1: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: !(value$3 == null) ? value$3 : undefined + }, + v2: { + __typename: value$4.__typename, + nullableString: !(value$5 == null) ? value$5 : undefined, + string: !(value$6 == null) ? value$6 : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.v2; + var value$2 = value$1.string; + var string = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.nullableString; + var nullableString = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.__typename; + var v2 = { + __typename: value$4, + nullableString: nullableString, + string: string + }; + var value$5 = value.v1; + var value$6 = value$5.string; + var string$1 = value$6 !== undefined ? value$6 : null; + var value$7 = value$5.nullableString; + var nullableString$1 = value$7 !== undefined ? value$7 : null; + var value$8 = value$5.__typename; + var v1 = { + __typename: value$8, + nullableString: nullableString$1, + string: string$1 + }; + return { + v1: v1, + v2: v2 + }; +} + +function serializeVariables(inp) { + return { + var: inp.var + }; +} + +function makeVariables($$var, param) { + return { + var: $$var + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($var: Boolean!) {\nv1: variousScalars {\n__typename \nnullableString @skip(if: $var) \nstring @skip(if: $var) \n}\n\nv2: variousScalars {\n__typename \nnullableString @include(if: $var) \nstring @include(if: $var) \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/subscription.re.txt b/snapshot_tests/operations/expected/apollo/compile/subscription.re.txt new file mode 100644 index 00000000..8d3bb073 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/subscription.re.txt @@ -0,0 +1,88 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.simpleSubscription; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + simpleSubscription: tmp + }; +} + +function serialize(value) { + var value$1 = value.simpleSubscription; + var variant = value$1.NAME; + var simpleSubscription; + if (variant === "FutureAddedValue") { + simpleSubscription = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + simpleSubscription = { + __typename: "Dog", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.name; + simpleSubscription = { + __typename: "Human", + name: value$3 + }; + } + return { + simpleSubscription: simpleSubscription + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "subscription {\nsimpleSubscription {\n__typename\n...on Dog {\n__typename \nname \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/tagged_template.re.txt b/snapshot_tests/operations/expected/apollo/compile/tagged_template.re.txt new file mode 100644 index 00000000..a1ffc067 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/tagged_template.re.txt @@ -0,0 +1,998 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var ApolloClient = require("apollo-client"); + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (graphql` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var MyTypes = {}; + +var Raw$1 = {}; + +var query$1 = (graphql` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery1a = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (graphql` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQuery1b = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gatsby").graphql` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MyQuery2 = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +var query$4 = (require("gatsby").graphql` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var MyQuery3 = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$5 = {}; + +var query$5 = (require("gatsby")` + query { + variousScalars { + __typename + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var MyQuery4 = { + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var Raw$6 = {}; + +var query$6 = (require("gatsby")` + fragment ListFragment on Lists { + __typename + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse$6(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$6(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$3 = value.__typename; + return { + __typename: value$3, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse$6(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$7 = {}; + +var query$7 = (require("gatsby")` + query MyQuery5 { + lists { + ...ListFragment + } + } +`); + +function parse$7(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$7(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$6(param) { + +} + +function makeVariables$6(param) { + +} + +function makeDefaultVariables$6(param) { + +} + +var MyQuery5 = { + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$6, + makeVariables: makeVariables$6, + makeDefaultVariables: makeDefaultVariables$6 +}; + +var Raw$8 = {}; + +var query$8 = ((frag_0) => require("gatsby")` + query MyQuery6 { + lists { + ...ListFragment + } + } + ${frag_0} +`)(query$6); + +function parse$8(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$8(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$7(param) { + +} + +function makeVariables$7(param) { + +} + +function makeDefaultVariables$7(param) { + +} + +var MyQuery6 = { + Raw: Raw$8, + query: query$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$7, + makeVariables: makeVariables$7, + makeDefaultVariables: makeDefaultVariables$7 +}; + +var Raw$9 = {}; + +var query$9 = (graphql` + query MyQuery7 { + lists { + ...ListFragment + } + } +`); + +function parse$9(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$9(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$8(param) { + +} + +function makeVariables$8(param) { + +} + +function makeDefaultVariables$8(param) { + +} + +var MyQuery7 = { + Raw: Raw$9, + query: query$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$8, + makeVariables: makeVariables$8, + makeDefaultVariables: makeDefaultVariables$8 +}; + +var Raw$10 = {}; + +var query$10 = ApolloClient.gql(["fragment ListFragment8 on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"]); + +function parse$10(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + __typename: value.__typename, + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$10(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var value$3 = value.__typename; + return { + __typename: value$3, + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_ListFragment8, value) { + return parse$10(value); +} + +function verifyName$1(param) { + +} + +var ListFragment8 = { + Raw: Raw$10, + query: query$10, + parse: parse$10, + serialize: serialize$10, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$11 = {}; + +var query$11 = ApolloClient.gql([ + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\n__typename \nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "" + ], query$10); + +function parse$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + lists: parse$10(value.lists), + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var value$12 = value$1.__typename; + var variousScalars = { + __typename: value$12, + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + var value$13 = value.lists; + var lists = serialize$10(value$13); + return { + lists: lists, + variousScalars: variousScalars + }; +} + +function serializeVariables$9(param) { + +} + +function makeVariables$9(param) { + +} + +function makeDefaultVariables$9(param) { + +} + +var MyQuery8 = { + Raw: Raw$11, + query: query$11, + parse: parse$11, + serialize: serialize$11, + serializeVariables: serializeVariables$9, + makeVariables: makeVariables$9, + makeDefaultVariables: makeDefaultVariables$9 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyTypes = MyTypes; +exports.MyQuery1a = MyQuery1a; +exports.MyQuery1b = MyQuery1b; +exports.MyQuery2 = MyQuery2; +exports.MyQuery3 = MyQuery3; +exports.MyQuery4 = MyQuery4; +exports.ListFragment = ListFragment; +exports.MyQuery5 = MyQuery5; +exports.MyQuery6 = MyQuery6; +exports.MyQuery7 = MyQuery7; +exports.ListFragment8 = ListFragment8; +exports.MyQuery8 = MyQuery8; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/apollo/compile/typename.re.txt b/snapshot_tests/operations/expected/apollo/compile/typename.re.txt new file mode 100644 index 00000000..926fa068 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/typename.re.txt @@ -0,0 +1,89 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + return { + first: { + __typename: value$1.__typename, + inner: tmp + } + }; +} + +function serialize(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var first = { + __typename: value$7, + inner: inner + }; + return { + first: first + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/union.re.txt b/snapshot_tests/operations/expected/apollo/compile/union.re.txt new file mode 100644 index 00000000..fdb840b6 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/union.re.txt @@ -0,0 +1,363 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + __typename: value$1.__typename, + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryNoError = { + Raw: Raw$1, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + dogOrHuman = { + name: value$2, + __typename: "Dog" + }; + } else { + var value$3 = value$1.VAL.name; + dogOrHuman = { + name: value$3, + __typename: "Human" + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var NamedQuery = { + Raw: Raw$2, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \n__typename \n}\n\n...on Human {\nname \n__typename \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query = "fragment DogFields on Dog {\nname \n__typename \n}\n"; + +function parse$3(value) { + return { + name: value.name, + __typename: value.__typename + }; +} + +function serialize$3(value) { + var value$1 = value.__typename; + var value$2 = value.name; + return { + name: value$2, + __typename: value$1 + }; +} + +function verifyArgsAndParse(_DogFields, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var DogFields = { + Raw: Raw$3, + query: query, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$1 = "query dogOrHuman {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFields \n}\n\n}\n\n}\nfragment DogFields on Dog {\nname \n__typename \n}\n"; + +function parse$4(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$3(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$4(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$3(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var DogOrHuman = { + Raw: Raw$4, + query: query$1, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var NamedSpread = { + DogFields: DogFields, + DogOrHuman: DogOrHuman +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyQueryNoError = MyQueryNoError; +exports.NamedQuery = NamedQuery; +exports.NamedSpread = NamedSpread; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/unionPartial.re.txt b/snapshot_tests/operations/expected/apollo/compile/unionPartial.re.txt new file mode 100644 index 00000000..9330e27b --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/unionPartial.re.txt @@ -0,0 +1,69 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/compile/variant.re.txt b/snapshot_tests/operations/expected/apollo/compile/variant.re.txt new file mode 100644 index 00000000..5d3d05df --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/compile/variant.re.txt @@ -0,0 +1,137 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationForVariant; + var value$2 = Js_json.decodeObject(value$1); + var tmp; + if (value$2 !== undefined) { + var value$3 = Caml_option.valFromOption(value$2); + var temp = value$3["baseType"]; + var match = Js_json.decodeNull(temp); + if (match !== undefined) { + var temp$1 = value$3["baseTypeList"]; + var match$1 = Js_json.decodeNull(temp$1); + if (match$1 !== undefined) { + var temp$2 = value$3["dog"]; + var match$2 = Js_json.decodeNull(temp$2); + if (match$2 !== undefined) { + var temp$3 = value$3["human"]; + var match$3 = Js_json.decodeNull(temp$3); + if (match$3 !== undefined) { + var temp$4 = value$3["dogOrHuman"]; + var match$4 = Js_json.decodeNull(temp$4); + if (match$4 !== undefined) { + tmp = Js_exn.raiseError("graphql-ppx: All fields on variant selection set on type VariantTestResult were null"); + } else { + var typename = temp$4["__typename"]; + var tmp$1; + switch (typename) { + case "Dog" : + tmp$1 = { + NAME: "Dog", + VAL: { + __typename: temp$4.__typename, + name: temp$4.name, + barkVolume: temp$4.barkVolume + } + }; + break; + case "Human" : + tmp$1 = { + NAME: "Human", + VAL: { + __typename: temp$4.__typename, + name: temp$4.name + } + }; + break; + default: + tmp$1 = { + NAME: "FutureAddedValue", + VAL: temp$4 + }; + } + tmp = { + NAME: "DogOrHuman", + VAL: tmp$1 + }; + } + } else { + tmp = { + NAME: "Human", + VAL: { + __typename: temp$3.__typename, + name: temp$3.name + } + }; + } + } else { + tmp = { + NAME: "Dog", + VAL: { + __typename: temp$2.__typename, + name: temp$2.name, + barkVolume: temp$2.barkVolume + } + }; + } + } else { + tmp = { + NAME: "BaseTypeList", + VAL: temp$1.map(function (value) { + return value; + }) + }; + } + } else { + tmp = { + NAME: "BaseType", + VAL: temp + }; + } + } else { + tmp = Js_exn.raiseError("graphql-ppx: Expected type VariantTestResult to be an object"); + } + return { + mutationForVariant: tmp + }; +} + +function serialize(value) { + var mutationForVariant = null; + return { + mutationForVariant: mutationForVariant + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "mutation {\nmutationForVariant {\nbaseType \nbaseTypeList \ndog {\n__typename \nname \nbarkVolume \n}\n\nhuman {\n__typename \nname \n}\n\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/apollo/generate/argNamedQuery.re.txt b/snapshot_tests/operations/expected/apollo/generate/argNamedQuery.re.txt new file mode 100644 index 00000000..4b440215 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/argNamedQuery.re.txt @@ -0,0 +1,185 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query ($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MultipleQueryWithSameVarName = { + module Query1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query1($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + module Query2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query2($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/comment.re.txt b/snapshot_tests/operations/expected/apollo/generate/comment.re.txt new file mode 100644 index 00000000..7d75b6f7 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/comment.re.txt @@ -0,0 +1,282 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/customDecoder.re.txt b/snapshot_tests/operations/expected/apollo/generate/customDecoder.re.txt new file mode 100644 index 00000000..3011cf3d --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/customDecoder.re.txt @@ -0,0 +1,137 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module StringOfInt = { + let parse = string_of_int; + let serialize = int_of_string; + type t = string; +}; +module IntOfString = { + let parse = int_of_string; + let serialize = string_of_int; + type t = int; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + IntOfString.parse(value); + }, + int: { + let value = (value: Raw.t_variousScalars).int; + StringOfInt.parse(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: t_variousScalars).int; + let value = StringOfInt.serialize(value); + value; + } + and string = { + let value = (value: t_variousScalars).string; + let value = IntOfString.serialize(value); + value; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/customScalars.re.txt b/snapshot_tests/operations/expected/apollo/generate/customScalars.re.txt new file mode 100644 index 00000000..6eff76c6 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/customScalars.re.txt @@ -0,0 +1,154 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customScalarField = { + __typename: string, + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + __typename: string, + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~opt: Js.Json.t=?, ~req: Js.Json.t, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customScalarField = { + __typename: string, + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + __typename: string, + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + let query = "query ($opt: CustomScalar, $req: CustomScalar!) {\ncustomScalarField(argOptional: $opt, argRequired: $req) {\n__typename \nnullable \nnonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customScalarField: { + let value = (value: Raw.t).customScalarField; + ( + { + __typename: { + let value = (value: Raw.t_customScalarField).__typename; + value; + }, + nullable: { + let value = (value: Raw.t_customScalarField).nullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + nonNullable: { + let value = (value: Raw.t_customScalarField).nonNullable; + value; + }, + }: t_customScalarField + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customScalarField = { + let value = (value: t).customScalarField; + ( + { + let nonNullable = { + let value = (value: t_customScalarField).nonNullable; + value; + } + and nullable = { + let value = (value: t_customScalarField).nullable; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_customScalarField).__typename; + value; + }; + {__typename, nullable, nonNullable}; + }: Raw.t_customScalarField + ); + }; + {customScalarField: customScalarField}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + opt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).opt, + ), + req: (a => a)((inp: t_variables).req), + }; + let makeVariables = (~opt=?, ~req, ()): t_variables => {opt, req}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/customTypes.re.txt b/snapshot_tests/operations/expected/apollo/generate/customTypes.re.txt new file mode 100644 index 00000000..15da6214 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/customTypes.re.txt @@ -0,0 +1,259 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Color = { + type t = + | Red + | Green + | Blue; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") + | Some(_) + | None => Red + }; + let serialize = color => + ( + switch (color) { + | Red => "red" + | Green => "green" + | Blue => "blue" + } + ) + |> Js.Json.string; +}; + +module NullableString = { + type t = + | Red + | Green + | Blue; + let parse: option(string) => t = + color => + switch (color) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") => Red + | Some(_) + | None => Red + }; + let serialize: t => option(string) = + color => + switch (color) { + | Red => Some("red") + | Green => Some("green") + | Blue => Some("blue") + }; +}; + +module DateTime = { + type t = Js.Date.t; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some(str) => str |> Js.Date.fromString + | None => Js.Date.make() + }; + let serialize = date => date |> Js.Date.toISOString |> Js.Json.string; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customFields = { + __typename: string, + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + __typename: string, + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customFields = { + __typename: string, + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + __typename: string, + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + let query = "query {\ncustomFields {\n__typename \ncurrentTime \nfavoriteColor \nfutureTime \nnullableColor \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customFields: { + let value = (value: Raw.t).customFields; + ( + { + __typename: { + let value = (value: Raw.t_customFields).__typename; + value; + }, + currentTime: { + let value = (value: Raw.t_customFields).currentTime; + DateTime.parse(value); + }, + favoriteColor: { + let value = (value: Raw.t_customFields).favoriteColor; + Color.parse(value); + }, + futureTime: { + let value = (value: Raw.t_customFields).futureTime; + switch (Js.toOption(value)) { + | Some(value) => Some(DateTime.parse(value)) + | None => None + }; + }, + nullableColor: { + let value = (value: Raw.t_customFields).nullableColor; + switch (Js.toOption(value)) { + | Some(value) => Some(Color.parse(value)) + | None => None + }; + }, + nullableString: { + let value = (value: Raw.t_customFields).nullableString; + NullableString.parse( + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }, + ); + }, + }: t_customFields + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customFields = { + let value = (value: t).customFields; + ( + { + let nullableString = { + let value = (value: t_customFields).nullableString; + let value = NullableString.serialize(value); + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableColor = { + let value = (value: t_customFields).nullableColor; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = Color.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and futureTime = { + let value = (value: t_customFields).futureTime; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = DateTime.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and favoriteColor = { + let value = (value: t_customFields).favoriteColor; + let value = Color.serialize(value); + value; + } + and currentTime = { + let value = (value: t_customFields).currentTime; + let value = DateTime.serialize(value); + value; + } + and __typename = { + let value = (value: t_customFields).__typename; + value; + }; + { + __typename, + currentTime, + favoriteColor, + futureTime, + nullableColor, + nullableString, + }; + }: Raw.t_customFields + ); + }; + {customFields: customFields}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/apollo/generate/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..82a237e4 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,74 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + let query = "query {\ndefaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + defaultObjectValueOnScalar: { + let value = (value: Raw.t).defaultObjectValueOnScalar; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let defaultObjectValueOnScalar = { + let value = (value: t).defaultObjectValueOnScalar; + value; + }; + {defaultObjectValueOnScalar: defaultObjectValueOnScalar}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/enumInput.re.txt b/snapshot_tests/operations/expected/apollo/generate/enumInput.re.txt new file mode 100644 index 00000000..64cb2b5e --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/enumInput.re.txt @@ -0,0 +1,86 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~arg: [ | `FIRST | `SECOND | `THIRD], unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + let query = "query ($arg: SampleField!) {\nenumInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + enumInput: { + let value = (value: Raw.t).enumInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let enumInput = { + let value = (value: t).enumInput; + value; + }; + {enumInput: enumInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + (inp: t_variables).arg, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/apollo/generate/ewert_reproduction.re.txt new file mode 100644 index 00000000..c34ae93f --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/ewert_reproduction.re.txt @@ -0,0 +1,168 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module UserData: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_user = { + __typename: string, + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = { + __typename: string, + user: t_user, + }; + type nonrec t_Workspace = t; + }; + type t_user = { + __typename: string, + id: string, + firstname: option(string), + lastname: string, + }; + type t = { + __typename: string, + user: t_user, + }; + type nonrec t_Workspace = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~userId: [ | `NonNull_String], ~fragmentName: [ | `UserData], Raw.t) => t; + let verifyName: [ | `UserData] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_user = { + __typename: string, + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = { + __typename: string, + user: t_user, + }; + type nonrec t_Workspace = t; + }; + type t_user = { + __typename: string, + id: string, + firstname: option(string), + lastname: string, + }; + type t = { + __typename: string, + user: t_user, + }; + type nonrec t_Workspace = t; + let query = "fragment UserData on Workspace {\n__typename \nuser(id: $userId) {\n__typename \nid \nfirstname \nlastname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + user: { + let value = (value: Raw.t).user; + ( + { + __typename: { + let value = (value: Raw.t_user).__typename; + value; + }, + id: { + let value = (value: Raw.t_user).id; + value; + }, + firstname: { + let value = (value: Raw.t_user).firstname; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + lastname: { + let value = (value: Raw.t_user).lastname; + value; + }, + }: t_user + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let user = { + let value = (value: t).user; + ( + { + let lastname = { + let value = (value: t_user).lastname; + value; + } + and firstname = { + let value = (value: t_user).firstname; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_user).id; + value; + } + and __typename = { + let value = (value: t_user).__typename; + value; + }; + {__typename, id, firstname, lastname}; + }: Raw.t_user + ); + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, user}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~userId as _userId: [ | `NonNull_String], + ~fragmentName as _UserData: [ | `UserData], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `UserData => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/explicit_object_record.re.txt b/snapshot_tests/operations/expected/apollo/generate/explicit_object_record.re.txt new file mode 100644 index 00000000..d9f441cc --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/explicit_object_record.re.txt @@ -0,0 +1,378 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module RecordsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + __typename: { + let value = (value: Raw.t_lists).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_lists).__typename; + value; + }; + { + __typename, + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ObjectsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + __typename: { + let value = (value: Raw.t_lists).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_lists).__typename; + value; + }; + { + __typename, + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/extensions.re.txt b/snapshot_tests/operations/expected/apollo/generate/extensions.re.txt new file mode 100644 index 00000000..c5b3fdf8 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/extensions.re.txt @@ -0,0 +1,446 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module type GraphQLQuery = { + module Raw: { + type t; + type t_variables; + }; + type t; + type t_variables; + + let query: string; + let parse: Raw.t => t; + let serialize: t => Raw.t; +}; + +module Parent = { + module ExtendQuery = (M: GraphQLQuery) : {let use: unit => unit;} => { + let use = () => (); + }; +}; +module Bla: { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include (module type of { + include Bla_inner; + }); + include (module type of { + include Parent.ExtendQuery(Bla_inner); + }); +} = { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + __typename: { + let value = (value: Raw.t_lists).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_lists).__typename; + value; + }; + { + __typename, + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include Bla_inner; + include Parent.ExtendQuery(Bla_inner); +}; +module Inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla2 {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + __typename: { + let value = (value: Raw.t_lists).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_lists).__typename; + value; + }; + { + __typename, + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +include Inner; +include Parent.ExtendQuery(Inner); diff --git a/snapshot_tests/operations/expected/apollo/generate/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/apollo/generate/fragmentDefinition.re.txt new file mode 100644 index 00000000..6aff5bde --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/fragmentDefinition.re.txt @@ -0,0 +1,976 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment Another on Lists {\n__typename \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module FragmentWithArgs: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + listWithArg: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + listWithArg: option(array(option(string))), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~arg1: [ | `String], ~fragmentName: [ | `FragmentWithArgs], Raw.t) => t; + let verifyName: [ | `FragmentWithArgs] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + listWithArg: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + listWithArg: option(array(option(string))), + }; + type nonrec t_Lists = t; + let query = "fragment FragmentWithArgs on Lists {\n__typename \nlistWithArg(arg1: $arg1) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + listWithArg: { + let value = (value: Raw.t).listWithArg; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listWithArg = { + let value = (value: t).listWithArg; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, listWithArg}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~arg1 as _arg1: [ | `String], + ~fragmentName as _FragmentWithArgs: [ | `FragmentWithArgs], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `FragmentWithArgs => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module InlineListFragment = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module Wrapper = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + __typename: string, + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + __typename: string, + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + __typename: string, + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~arg1: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + __typename: string, + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + __typename: string, + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + __typename: string, + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + let query = + ( + ( + "query MyQuery($arg1: String) {\nl1: lists {\n...ListFragment \n}\n\nl2: lists {\n__typename \n...ListFragment \n...ListFragment \n}\n\nl3: lists {\n__typename \nnullableOfNullable \n...ListFragment \n...ListFragment \n}\n\nl4: lists {\n__typename \nnullableOfNullable \n...InlineListFragment \n}\n\nl5: lists {\n...FragmentWithArgs \n}\n\n}\n" + ++ FragmentWithArgs.query + ) + ++ InlineListFragment.query + ) + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + l1: { + let value = (value: Raw.t).l1; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + l2: { + let value = (value: Raw.t).l2; + ( + { + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l2 + ); + }, + l3: { + let value = (value: Raw.t).l3; + ( + { + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l3 + ); + }, + l4: { + let value = (value: Raw.t).l4; + ( + { + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + inlineListFragment: { + let value: InlineListFragment.Raw.t = Obj.magic(value); + + InlineListFragment.verifyArgsAndParse( + ~fragmentName=`InlineListFragment, + value, + ); + }, + }: t_l4 + ); + }, + l5: { + let value = (value: Raw.t).l5; + + FragmentWithArgs.verifyArgsAndParse( + ~arg1=`String, + ~fragmentName=`FragmentWithArgs, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let l5 = { + let value = (value: t).l5; + FragmentWithArgs.serialize(value); + } + and l4 = { + let value = (value: t).l4; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l4).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_l4).__typename; + value; + }; + { + "__typename": __typename, + "nullableOfNullable": nullableOfNullable, + }; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InlineListFragment.serialize( + (value: t_l4).inlineListFragment, + ), + ): Js.Json.t + ), + |], + ), + ): Raw.t_l4 + ); + } + and l3 = { + let value = (value: t).l3; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l3).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_l3).__typename; + value; + }; + { + "__typename": __typename, + "nullableOfNullable": nullableOfNullable, + }; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l3 + ); + } + and l2 = { + let value = (value: t).l2; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let __typename = { + let value = (value: t_l2).__typename; + value; + }; + {"__typename": __typename}; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l2 + ); + } + and l1 = { + let value = (value: t).l1; + ListFragment.serialize(value); + }; + {l1, l2, l3, l4, l5}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg1: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).arg1, + ), + }; + let makeVariables = (~arg1=?, ()): t_variables => {arg1: arg1}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query = + "query {\nlists {\n...ListFragment \n}\n\n}\n" ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/apollo/generate/fragmentInFragment.re.txt new file mode 100644 index 00000000..0831f40c --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/fragmentInFragment.re.txt @@ -0,0 +1,243 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + }; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\n__typename \nnullableOfNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + let query = + "fragment Another on Lists {\n__typename \nnullableOfNullable \n...ListFragment \n}\n" + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + value; + }, + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "nullableOfNullable"), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + listFragment: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + { + "__typename": __typename, + "nullableOfNullable": nullableOfNullable, + }; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t).listFragment)): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/apollo/generate/fragmentOnInterface.re.txt new file mode 100644 index 00000000..d134e6c5 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/fragmentOnInterface.re.txt @@ -0,0 +1,287 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module InterfaceFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `InterfaceFragment], Raw.t) => t; + let verifyName: [ | `InterfaceFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = "fragment InterfaceFragment on User {\n__typename\nid \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = (value: Raw.t).id; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let id = { + let value = (value: t).id; + value; + }; + {id: id}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InterfaceFragment: [ | `InterfaceFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InterfaceFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnotherFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnotherFragment], Raw.t) => t; + let verifyName: [ | `AnotherFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = + "fragment AnotherFragment on User {\n__typename\nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnotherFragment: [ | `AnotherFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnotherFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnonUser: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + __typename: string, + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnonUser], Raw.t) => t; + let verifyName: [ | `AnonUser] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + __typename: string, + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + let query = + "fragment AnonUser on AnonymousUser {\n__typename \nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + value; + }, + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {"__typename": __typename, "id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnonUser: [ | `AnonUser], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnonUser => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/fragmentUnion.re.txt b/snapshot_tests/operations/expected/apollo/generate/fragmentUnion.re.txt new file mode 100644 index 00000000..07965a1c --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/fragmentUnion.re.txt @@ -0,0 +1,295 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; + +module Graphql_ppx_runtime = { + let assign_typename: (Js.Json.t, string) => Js.Json.t = [%raw + {| (obj, typename) => { obj.__typename = typename; return obj } |} + ]; +}; +module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\n__typename \nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HumanFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Human = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Human = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `HumanFragment], Raw.t) => t; + let verifyName: [ | `HumanFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Human = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Human = t; + let query = "fragment HumanFragment on Human {\n__typename \nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _HumanFragment: [ | `HumanFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `HumanFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + ( + "query MyQuery {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n...on Human {\n...HumanFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query + ) + ++ HumanFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | "Human" => + `Human( + { + let value: HumanFragment.Raw.t = Obj.magic(value); + + HumanFragment.verifyArgsAndParse( + ~fragmentName=`HumanFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(HumanFragment.serialize(value)): Js.Json.t, + "Human", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/apollo/generate/fragmentvariableinput.re.txt new file mode 100644 index 00000000..bdf25081 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/fragmentvariableinput.re.txt @@ -0,0 +1,152 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_reposts = { + __typename: string, + id: int, + }; + type t = { + __typename: string, + reposts: array(Js.Nullable.t(t_reposts)), + }; + type nonrec t_Post = t; + }; + type t_reposts = { + __typename: string, + id: int, + }; + type t = { + __typename: string, + reposts: array(option(t_reposts)), + }; + type nonrec t_Post = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~name: [ | `NonNull_String], ~fragmentName: [ | `test], Raw.t) => t; + let verifyName: [ | `test] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_reposts = { + __typename: string, + id: int, + }; + type t = { + __typename: string, + reposts: array(Js.Nullable.t(t_reposts)), + }; + type nonrec t_Post = t; + }; + type t_reposts = { + __typename: string, + id: int, + }; + type t = { + __typename: string, + reposts: array(option(t_reposts)), + }; + type nonrec t_Post = t; + let query = "fragment test on Post {\n__typename \nreposts(arg: {name: $name}) {\n__typename \nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + reposts: { + let value = (value: Raw.t).reposts; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_reposts).__typename; + value; + }, + id: { + let value = (value: Raw.t_reposts).id; + value; + }, + }: t_reposts, + ) + | None => None + } + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let reposts = { + let value = (value: t).reposts; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let id = { + let value = (value: t_reposts).id; + value; + } + and __typename = { + let value = (value: t_reposts).__typename; + value; + }; + {__typename, id}; + }: Raw.t_reposts, + ) + | None => Js.Nullable.null + } + ); + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, reposts}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~name as _name: [ | `NonNull_String], + ~fragmentName as _test: [ | `test], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `test => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/hasuraRepro.re.txt b/snapshot_tests/operations/expected/apollo/generate/hasuraRepro.re.txt new file mode 100644 index 00000000..c4385688 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/hasuraRepro.re.txt @@ -0,0 +1,196 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Dog: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Dog], Raw.t) => t; + let verifyName: [ | `Dog] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + }; + type nonrec t_Dog = t; + let query = "fragment Dog on Dog {\n__typename \nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name}; + }: Raw.t + ); + let verifyArgsAndParse = (~fragmentName as _Dog: [ | `Dog], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Dog => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HasuraRepro: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~blockNumber: int=?, ~type_: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + let query = + "query HasuraRepro($blockNumber: Int, $type: String) {\nhasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n...Dog \n}\n\n}\n" + ++ Dog.query; + let parse: Raw.t => t = + (value) => ( + { + hasuraRepro: { + let value = (value: Raw.t).hasuraRepro; + + Dog.verifyArgsAndParse(~fragmentName=`Dog, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let hasuraRepro = { + let value = (value: t).hasuraRepro; + Dog.serialize(value); + }; + {hasuraRepro: hasuraRepro}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + blockNumber: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).blockNumber, + ), + type_: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).type_, + ), + }; + let makeVariables = (~blockNumber=?, ~type_=?, ()): t_variables => { + blockNumber, + type_, + }; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +let _ = HasuraRepro.makeVariables(~blockNumber=1, ~type_="1", ()); diff --git a/snapshot_tests/operations/expected/apollo/generate/interface.re.txt b/snapshot_tests/operations/expected/apollo/generate/interface.re.txt new file mode 100644 index 00000000..f36f4510 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/interface.re.txt @@ -0,0 +1,908 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module QueryWithOnlyFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \nname \n}\n\n...on AnonymousUser {\n__typename \nid \nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AnonymousUser). + __typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AnonymousUser).id; + value; + }, + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser).__typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser).anonymousId; + value; + } + and id = { + let value = (value: t_users_User_AnonymousUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AnonymousUser).__typename; + value; + }; + {__typename: "AnonymousUser", id, anonymousId}; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_users_User_AdminUser).name; + value; + } + and id = { + let value = (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser).__typename; + value; + }; + {__typename: "AdminUser", id, name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser).__typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser).__typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithMixedFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n...on AdminUser {\n__typename \nname \n}\n\n...on AnonymousUser {\n__typename \nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AnonymousUser). + __typename; + value; + }, + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser). + __typename; + value; + }, + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser). + anonymousId; + value; + } + and __typename = { + let value = + (value: t_users_User_AnonymousUser). + __typename; + value; + }; + { + __typename: "AnonymousUser", + anonymousId, + }; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = + (value: t_users_User_AdminUser).name; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser). + __typename; + value; + }; + {__typename: "AdminUser", name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MixedQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n__typename \n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser). + __typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + } + and __typename = { + let value = (value: t_users).__typename; + value; + }; + {"__typename": __typename, "id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = + (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser). + __typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithoutFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + id: { + let value = (value: Raw.t_users).id; + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + { + let id = { + let value = (value: t_users).id; + value; + }; + {id: id}; + }: Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/lists.re.txt b/snapshot_tests/operations/expected/apollo/generate/lists.re.txt new file mode 100644 index 00000000..44dcf1d5 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/lists.re.txt @@ -0,0 +1,198 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + __typename: { + let value = (value: Raw.t_lists).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_lists).__typename; + value; + }; + { + __typename, + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/listsArgs.re.txt b/snapshot_tests/operations/expected/apollo/generate/listsArgs.re.txt new file mode 100644 index 00000000..fdeca039 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/listsArgs.re.txt @@ -0,0 +1,181 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\nlistsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables).nonNullableOfNonNullable, + ), + }; + let makeVariables = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/listsInput.re.txt b/snapshot_tests/operations/expected/apollo/generate/listsInput.re.txt new file mode 100644 index 00000000..36e74c91 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/listsInput.re.txt @@ -0,0 +1,194 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput; + let makeVariables: (~arg: t_variables_ListsInput, unit) => t_variables; + let makeInputObjectListsInput: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables_ListsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($arg: ListsInput!) {\nlistsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: (a => serializeInputObjectListsInput(a))((inp: t_variables).arg), + } + and serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables_ListsInput).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables_ListsInput).nonNullableOfNonNullable, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectListsInput = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables_ListsInput => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/module_type.re.txt b/snapshot_tests/operations/expected/apollo/generate/module_type.re.txt new file mode 100644 index 00000000..3332c2af --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/module_type.re.txt @@ -0,0 +1,304 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: {type t;} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + type t_variousScalars; + type t = {variousScalars: t_variousScalars}; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module rec MyQueryRecursive: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + VariousScalars.parse( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + let value = VariousScalars.serialize(value); + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} + +and VariousScalars: { + type t; + let parse: MyQueryRecursive.t_nestedObject => t; + let serialize: t => MyQueryRecursive.t_nestedObject; +} = { + type t = {otherInner: option(MyQueryRecursive.t_nestedObject_inner)}; + let parse = (nestedObject: MyQueryRecursive.t_nestedObject) => { + otherInner: nestedObject.inner, + }; + let serialize: t => MyQueryRecursive.t_nestedObject = + t => {inner: t.otherInner}; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/mutation.re.txt b/snapshot_tests/operations/expected/apollo/generate/mutation.re.txt new file mode 100644 index 00000000..4120fc26 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/mutation.re.txt @@ -0,0 +1,278 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_value = { + __typename: string, + stringField: string, + }; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + __typename: string, + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = { + __typename: string, + stringField: string, + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + __typename: string, + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + __typename: string, + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_value = { + __typename: string, + stringField: string, + }; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + __typename: string, + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = { + __typename: string, + stringField: string, + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + __typename: string, + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + __typename: string, + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\n__typename \nvalue {\n__typename \nstringField \n}\n\nerrors {\n__typename \nfield \nmessage \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + __typename: { + let value = (value: Raw.t_mutationWithError).__typename; + value; + }, + value: { + let value = (value: Raw.t_mutationWithError).value; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_mutationWithError_value).__typename; + value; + }, + stringField: { + let value = + (value: Raw.t_mutationWithError_value).stringField; + value; + }, + }: t_mutationWithError_value, + ) + | None => None + }; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + __typename: { + let value = + (value: Raw.t_mutationWithError_errors). + __typename; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + } + and __typename = { + let value = + (value: t_mutationWithError_errors). + __typename; + value; + }; + {__typename, field, message}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and value = { + let value = (value: t_mutationWithError).value; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let stringField = { + let value = + (value: t_mutationWithError_value).stringField; + value; + } + and __typename = { + let value = + (value: t_mutationWithError_value).__typename; + value; + }; + {__typename, stringField}; + }: Raw.t_mutationWithError_value, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_mutationWithError).__typename; + value; + }; + {__typename, value, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/apollo/generate/mutationWithArgs.re.txt new file mode 100644 index 00000000..7791db0d --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/mutationWithArgs.re.txt @@ -0,0 +1,73 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/apollo/generate/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..7791db0d --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,73 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/nested.re.txt b/snapshot_tests/operations/expected/apollo/generate/nested.re.txt new file mode 100644 index 00000000..9c99b3ef --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/nested.re.txt @@ -0,0 +1,979 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +type record = { + f1: string, + f2: string, +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t_second_inner_inner = { + __typename: string, + f1: string, + f2: string, + }; + type t_second_inner = { + __typename: string, + inner: Js.Nullable.t(t_second_inner_inner), + }; + type t_second = { + __typename: string, + inner: Js.Nullable.t(t_second_inner), + }; + type t_let_inner_inner = { + __typename: string, + field: string, + }; + type t_let_inner = { + __typename: string, + inner: Js.Nullable.t(t_let_inner_inner), + }; + type t_let = { + __typename: string, + inner: Js.Nullable.t(t_let_inner), + }; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t_second_inner_inner = { + __typename: string, + f1: string, + f2: string, + }; + type t_second_inner = { + __typename: string, + inner: option(t_second_inner_inner), + }; + type t_second = { + __typename: string, + inner: option(t_second_inner), + }; + type t_let_inner_inner = { + __typename: string, + field: string, + }; + type t_let_inner = { + __typename: string, + inner: option(t_let_inner_inner), + }; + type t_let = { + __typename: string, + inner: option(t_let_inner), + }; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t_second_inner_inner = { + __typename: string, + f1: string, + f2: string, + }; + type t_second_inner = { + __typename: string, + inner: Js.Nullable.t(t_second_inner_inner), + }; + type t_second = { + __typename: string, + inner: Js.Nullable.t(t_second_inner), + }; + type t_let_inner_inner = { + __typename: string, + field: string, + }; + type t_let_inner = { + __typename: string, + inner: Js.Nullable.t(t_let_inner_inner), + }; + type t_let = { + __typename: string, + inner: Js.Nullable.t(t_let_inner), + }; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t_second_inner_inner = { + __typename: string, + f1: string, + f2: string, + }; + type t_second_inner = { + __typename: string, + inner: option(t_second_inner_inner), + }; + type t_second = { + __typename: string, + inner: option(t_second_inner), + }; + type t_let_inner_inner = { + __typename: string, + field: string, + }; + type t_let_inner = { + __typename: string, + inner: option(t_let_inner_inner), + }; + type t_let = { + __typename: string, + inner: option(t_let_inner), + }; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\nsecond: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nf1: field \nf2: field \n}\n\n}\n\n}\n\nlet: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + __typename: { + let value = (value: Raw.t_first).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_first_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_first_inner_inner).__typename; + value; + }, + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + second: { + let value = (value: Raw.t).second; + ( + { + __typename: { + let value = (value: Raw.t_second).__typename; + value; + }, + inner: { + let value = (value: Raw.t_second).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_second_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_second_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_second_inner_inner).__typename; + value; + }, + f1: { + let value = + (value: Raw.t_second_inner_inner).f1; + value; + }, + f2: { + let value = + (value: Raw.t_second_inner_inner).f2; + value; + }, + }: t_second_inner_inner, + ) + | None => None + }; + }, + }: t_second_inner, + ) + | None => None + }; + }, + }: t_second + ); + }, + let_: { + let value = (value: Raw.t).let_; + ( + { + __typename: { + let value = (value: Raw.t_let).__typename; + value; + }, + inner: { + let value = (value: Raw.t_let).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_let_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_let_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_let_inner_inner).__typename; + value; + }, + field: { + let value = + (value: Raw.t_let_inner_inner).field; + value; + }, + }: t_let_inner_inner, + ) + | None => None + }; + }, + }: t_let_inner, + ) + | None => None + }; + }, + }: t_let + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let let_ = { + let value = (value: t).let_; + ( + { + let inner = { + let value = (value: t_let).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_let_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_let_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_let_inner_inner).__typename; + value; + }; + {__typename, field}; + }: Raw.t_let_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_let_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_let_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_let).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_let + ); + } + and second = { + let value = (value: t).second; + ( + { + let inner = { + let value = (value: t_second).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_second_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let f2 = { + let value = (value: t_second_inner_inner).f2; + value; + } + and f1 = { + let value = (value: t_second_inner_inner).f1; + value; + } + and __typename = { + let value = + (value: t_second_inner_inner).__typename; + value; + }; + {__typename, f1, f2}; + }: Raw.t_second_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_second_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_second_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_second).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_second + ); + } + and first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_first_inner_inner).__typename; + value; + }; + {__typename, field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first + ); + }; + {first, second, let_}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module Test: { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: option(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: option(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +} = { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: option(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: option(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: option(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: option(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + __typename: { + let value = (value: Raw.t_nestedObject).__typename; + value; + }, + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_nestedObject_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_nestedObject_inner_inner). + __typename; + value; + }, + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_nestedObject_inner_inner). + __typename; + value; + }; + {__typename, field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_nestedObject_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_nestedObject).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module MyQueryWithSigDirect: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: option(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: option(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: Js.Nullable.t(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = { + __typename: string, + field: string, + }; + type t_nestedObject_inner = { + __typename: string, + inner: option(t_nestedObject_inner_inner), + }; + type t_nestedObject = { + __typename: string, + inner: option(t_nestedObject_inner), + }; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + __typename: { + let value = (value: Raw.t_nestedObject).__typename; + value; + }, + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_nestedObject_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_nestedObject_inner_inner). + __typename; + value; + }, + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_nestedObject_inner_inner). + __typename; + value; + }; + {__typename, field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_nestedObject_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_nestedObject).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/apollo/generate/nonrecursiveInput.re.txt new file mode 100644 index 00000000..b2b6ba7d --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/nonrecursiveInput.re.txt @@ -0,0 +1,587 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + ( + ~arg: t_variables_NonrecursiveInput, + ~arg2: t_variables_NonrecursiveInput, + unit + ) => + t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\nscalarsInput(arg: $arg) \nmore: scalarsInput(arg: $arg2) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + more: { + let value = (value: Raw.t).more; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let more = { + let value = (value: t).more; + value; + } + and scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput, more}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + arg2: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg2, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ~arg2, ()): t_variables => {arg, arg2} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/apollo/generate/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..4245dc53 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/omitFutureValueEnum.re.txt @@ -0,0 +1,587 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + __typename: { + let value = (value: Raw.t_mutationWithError).__typename; + value; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + __typename: { + let value = + (value: Raw.t_mutationWithError_errors). + __typename; + value; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and __typename = { + let value = + (value: t_mutationWithError_errors). + __typename; + value; + }; + {__typename, message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_mutationWithError).__typename; + value; + }; + {__typename, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + __typename: { + let value = (value: Raw.t_mutationWithError).__typename; + value; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + __typename: { + let value = + (value: Raw.t_mutationWithError_errors). + __typename; + value; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and __typename = { + let value = + (value: t_mutationWithError_errors). + __typename; + value; + }; + {__typename, message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_mutationWithError).__typename; + value; + }; + {__typename, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + __typename: string, + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + __typename: string, + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\n__typename \nerrors {\n__typename \nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + __typename: { + let value = (value: Raw.t_mutationWithError).__typename; + value; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + __typename: { + let value = + (value: Raw.t_mutationWithError_errors). + __typename; + value; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and __typename = { + let value = + (value: t_mutationWithError_errors). + __typename; + value; + }; + {__typename, message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_mutationWithError).__typename; + value; + }; + {__typename, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/apollo/generate/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..3a883046 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/omitFutureValueUnion.re.txt @@ -0,0 +1,570 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/apollo/generate/pokedexApolloMode.re.txt new file mode 100644 index 00000000..d62b9001 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/pokedexApolloMode.re.txt @@ -0,0 +1,139 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + let query = "query {\npokemon(name: \"Pikachu\") {\n__typename \nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_pokemon).__typename; + value; + }, + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + } + and __typename = { + let value = (value: t_pokemon).__typename; + value; + }; + {__typename, id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/pokedexScalars.re.txt b/snapshot_tests/operations/expected/apollo/generate/pokedexScalars.re.txt new file mode 100644 index 00000000..1c9fd9c9 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/pokedexScalars.re.txt @@ -0,0 +1,328 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\n__typename \nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_pokemon).__typename; + value; + }, + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + } + and __typename = { + let value = (value: t_pokemon).__typename; + value; + }; + {__typename, id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryDirectives: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + __typename: string, + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + __typename: string, + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\n__typename \nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_pokemon).__typename; + value; + }, + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + } + and __typename = { + let value = (value: t_pokemon).__typename; + value; + }; + {__typename, id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/record.re.txt b/snapshot_tests/operations/expected/apollo/generate/record.re.txt new file mode 100644 index 00000000..96976934 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/record.re.txt @@ -0,0 +1,805 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; + +type scalars = { + __typename: string, + string, + int, +}; + +type dog = { + __typename: string, + name: string, + barkVolume: float, +}; + +type oneFieldQuery = {nullableString: option(string)}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + }: scalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: scalars).int; + value; + } + and string = { + let value = (value: scalars).string; + value; + } + and __typename = { + let value = (value: scalars).__typename; + value; + }; + {__typename, string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ExternalFragmentQuery = { + module Fragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + __typename: string, + string, + int, + }; + type nonrec t_VariousScalars = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Fragment], Raw.t) => t; + let verifyName: [ | `Fragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + __typename: string, + string, + int, + }; + type nonrec t_VariousScalars = t; + let query = "fragment Fragment on VariousScalars {\n__typename \nstring \nint \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + string: { + let value = (value: Raw.t).string; + value; + }, + int: { + let value = (value: Raw.t).int; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let int = { + let value = (value: t).int; + value; + } + and string = { + let value = (value: t).string; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, string, int}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Fragment: [ | `Fragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Fragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + let query = + "query {\nvariousScalars {\n...Fragment \n}\n\n}\n" + ++ Fragment.query; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + + Fragment.verifyArgsAndParse(~fragmentName=`Fragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + Fragment.serialize(value); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module InlineFragmentQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module UnionExternalFragmentQuery = { + module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + barkVolume: { + let value = (value: Raw.t).barkVolume; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let barkVolume = { + let value = (value: t).barkVolume; + value; + } + and name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name, barkVolume}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/recursiveInput.re.txt b/snapshot_tests/operations/expected/apollo/generate/recursiveInput.re.txt new file mode 100644 index 00000000..ce51b1b9 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/recursiveInput.re.txt @@ -0,0 +1,336 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput; + let makeVariables: (~arg: t_variables_RecursiveInput, unit) => t_variables; + let makeInputObjectRecursiveInput: + ( + ~otherField: string=?, + ~inner: t_variables_RecursiveInput=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + unit + ) => + t_variables_RecursiveInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + let query = "query ($arg: RecursiveInput!) {\nrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveInput: { + let value = (value: Raw.t).recursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveInput = { + let value = (value: t).recursiveInput; + value; + }; + {recursiveInput: recursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectRecursiveInput(a))((inp: t_variables).arg), + } + and serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput = + inp => { + otherField: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_RecursiveInput).otherField, + ), + inner: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectRecursiveInput(a))(b), + ) + } + )( + (inp: t_variables_RecursiveInput).inner, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_RecursiveInput).enum, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectRecursiveInput = + (~otherField=?, ~inner=?, ~enum=?, ()): t_variables_RecursiveInput => { + otherField, + inner, + enum, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input; + let serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated; + let serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type; + let makeVariables: (~input: t_variables_problem_input, unit) => t_variables; + let makeInputObjectproblem_input: + ( + ~the_problem: t_variables_this_will_be_duplicated=?, + ~b: t_variables_nested_type=?, + unit + ) => + t_variables_problem_input; + let makeInputObjectthis_will_be_duplicated: + (~id: string, unit) => t_variables_this_will_be_duplicated; + let makeInputObjectnested_type: + (~the_problem: t_variables_this_will_be_duplicated=?, unit) => + t_variables_nested_type; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + let query = "query Test($input: problem_input!) {\nrecursiveRepro(input: $input) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveRepro: { + let value = (value: Raw.t).recursiveRepro; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveRepro = { + let value = (value: t).recursiveRepro; + value; + }; + {recursiveRepro: recursiveRepro}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + input: + (a => serializeInputObjectproblem_input(a))( + (inp: t_variables).input, + ), + } + and serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_problem_input).the_problem, + ), + b: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectnested_type(a))(b), + ) + } + )( + (inp: t_variables_problem_input).b, + ), + } + and serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated = + inp => {id: (a => a)((inp: t_variables_this_will_be_duplicated).id)} + and serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_nested_type).the_problem, + ), + }; + let makeVariables = (~input, ()): t_variables => {input: input} + and makeInputObjectproblem_input = + (~the_problem=?, ~b=?, ()): t_variables_problem_input => { + the_problem, + b, + } + and makeInputObjectthis_will_be_duplicated = + (~id, ()): t_variables_this_will_be_duplicated => { + id: id, + } + and makeInputObjectnested_type = + (~the_problem=?, ()): t_variables_nested_type => { + the_problem: the_problem, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/scalars.re.txt b/snapshot_tests/operations/expected/apollo/generate/scalars.re.txt new file mode 100644 index 00000000..6fa12272 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/scalars.re.txt @@ -0,0 +1,263 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/scalarsArgs.re.txt b/snapshot_tests/operations/expected/apollo/generate/scalarsArgs.re.txt new file mode 100644 index 00000000..2c70fae4 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/scalarsArgs.re.txt @@ -0,0 +1,212 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\nscalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableString, + ), + string: (a => a)((inp: t_variables).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableInt, + ), + int: (a => a)((inp: t_variables).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableFloat, + ), + float: (a => a)((inp: t_variables).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableID, + ), + id: (a => a)((inp: t_variables).id), + }; + let makeVariables = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/scalarsInput.re.txt b/snapshot_tests/operations/expected/apollo/generate/scalarsInput.re.txt new file mode 100644 index 00000000..b6feb9ac --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/scalarsInput.re.txt @@ -0,0 +1,229 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput; + let makeVariables: + (~arg: t_variables_VariousScalarsInput, unit) => t_variables; + let makeInputObjectVariousScalarsInput: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables_VariousScalarsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($arg: VariousScalarsInput!) {\nscalarsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectVariousScalarsInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableString, + ), + string: (a => a)((inp: t_variables_VariousScalarsInput).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableInt, + ), + int: (a => a)((inp: t_variables_VariousScalarsInput).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableFloat, + ), + float: (a => a)((inp: t_variables_VariousScalarsInput).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables_VariousScalarsInput).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableID, + ), + id: (a => a)((inp: t_variables_VariousScalarsInput).id), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectVariousScalarsInput = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables_VariousScalarsInput => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/skipDirectives.re.txt b/snapshot_tests/operations/expected/apollo/generate/skipDirectives.re.txt new file mode 100644 index 00000000..e7f8a6d8 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/skipDirectives.re.txt @@ -0,0 +1,219 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_v1 = { + __typename: string, + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + __typename: string, + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + __typename: string, + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + __typename: string, + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~var: bool, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_v1 = { + __typename: string, + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + __typename: string, + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + __typename: string, + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + __typename: string, + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + let query = "query ($var: Boolean!) {\nv1: variousScalars {\n__typename \nnullableString @skip(if: $var) \nstring @skip(if: $var) \n}\n\nv2: variousScalars {\n__typename \nnullableString @include(if: $var) \nstring @include(if: $var) \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + v1: { + let value = (value: Raw.t).v1; + ( + { + __typename: { + let value = (value: Raw.t_v1).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_v1).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v1).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v1 + ); + }, + v2: { + let value = (value: Raw.t).v2; + ( + { + __typename: { + let value = (value: Raw.t_v2).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_v2).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v2).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v2 + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let v2 = { + let value = (value: t).v2; + ( + { + let string = { + let value = (value: t_v2).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v2).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_v2).__typename; + value; + }; + {__typename, nullableString, string}; + }: Raw.t_v2 + ); + } + and v1 = { + let value = (value: t).v1; + ( + { + let string = { + let value = (value: t_v1).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v1).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_v1).__typename; + value; + }; + {__typename, nullableString, string}; + }: Raw.t_v1 + ); + }; + {v1, v2}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {var: (a => a)((inp: t_variables).var)}; + let makeVariables = (~var, ()): t_variables => {var: var}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/subscription.re.txt b/snapshot_tests/operations/expected/apollo/generate/subscription.re.txt new file mode 100644 index 00000000..456464ed --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/subscription.re.txt @@ -0,0 +1,197 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + let query = "subscription {\nsimpleSubscription {\n__typename\n...on Dog {\n__typename \nname \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + simpleSubscription: { + let value = (value: Raw.t).simpleSubscription; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_simpleSubscription_Dog = Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_simpleSubscription_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_simpleSubscription_Dog).name; + value; + }, + }: t_simpleSubscription_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_simpleSubscription_Human = Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_simpleSubscription_Human).__typename; + value; + }, + name: { + let value = + (value: Raw.t_simpleSubscription_Human).name; + value; + }, + }: t_simpleSubscription_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_simpleSubscription + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let simpleSubscription = { + let value = (value: t).simpleSubscription; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Dog).name; + value; + } + and __typename = { + let value = (value: t_simpleSubscription_Dog).__typename; + value; + }; + {__typename: "Dog", name}; + }: Raw.t_simpleSubscription_Dog, + ): Raw.t_simpleSubscription + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Human).name; + value; + } + and __typename = { + let value = (value: t_simpleSubscription_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_simpleSubscription_Human, + ): Raw.t_simpleSubscription + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_simpleSubscription + ) + }; + }; + {simpleSubscription: simpleSubscription}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/tagged_template.re.txt b/snapshot_tests/operations/expected/apollo/generate/tagged_template.re.txt new file mode 100644 index 00000000..e2bbfd88 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/tagged_template.re.txt @@ -0,0 +1,2209 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module MyTypes = { + type query; +}; +module MyQuery1a: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: MyTypes.query; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: MyTypes.query = [%raw + "graphql`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery1b: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery3: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery4: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query {\n variousScalars {\n __typename\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gatsby\")`\n fragment ListFragment on Lists {\n __typename\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery5: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query MyQuery5 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery6: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gatsby\")`\n query MyQuery6 {\n lists {\n ...ListFragment\n }\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery7: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query MyQuery7 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: int; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment8], Raw.t) => t; + let verifyName: [ | `ListFragment8] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + __typename: string, + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + [@bs.module "apollo-client"] external graphql: array(string) => int = "gql"; + let query = + graphql([| + "fragment ListFragment8 on Lists {\n__typename \nnullableOfNullable \nnullableOfNonNullable \n}\n", + |]); + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment8: [ | `ListFragment8], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment8 => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: int; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + [@bs.module "apollo-client"] + external graphql: (array(string), int) => int = "gql"; + let query = + graphql( + [| + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\n__typename \nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "", + |], + ListFragment8.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment8.verifyArgsAndParse( + ~fragmentName=`ListFragment8, + value, + ); + }, + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + { + __typename, + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + } + and lists = { + let value = (value: t).lists; + ListFragment8.serialize(value); + }; + {lists, variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/typename.re.txt b/snapshot_tests/operations/expected/apollo/generate/typename.re.txt new file mode 100644 index 00000000..45f327db --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/typename.re.txt @@ -0,0 +1,210 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + __typename: { + let value = (value: Raw.t_first).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_first_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_first_inner_inner).__typename; + value; + }, + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_first_inner_inner).__typename; + value; + }; + {__typename, field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first + ); + }; + {first: first}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/union.re.txt b/snapshot_tests/operations/expected/apollo/generate/union.re.txt new file mode 100644 index 00000000..5b8a9890 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/union.re.txt @@ -0,0 +1,725 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryNoError: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Human).__typename; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +type named = { + name: string, + __typename: string, +}; +module NamedQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \n__typename \n}\n\n...on Human {\nname \n__typename \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + }: named + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + }: named + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Dog"}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Human"}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module NamedSpread = { + module DogFields: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => named; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: named => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFields], Raw.t) => t; + let verifyName: [ | `DogFields] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + let query = "fragment DogFields on Dog {\nname \n__typename \n}\n"; + let parse: Raw.t => named = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + }: named + ); + let serialize: named => Raw.t = + (value) => ( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFields: [ | `DogFields], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFields => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module DogOrHuman: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query dogOrHuman {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFields \n}\n\n}\n\n}\n" + ++ DogFields.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFields.Raw.t = Obj.magic(value); + + DogFields.verifyArgsAndParse( + ~fragmentName=`DogFields, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFields.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/unionPartial.re.txt b/snapshot_tests/operations/expected/apollo/generate/unionPartial.re.txt new file mode 100644 index 00000000..629454c4 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/unionPartial.re.txt @@ -0,0 +1,153 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/apollo/generate/variant.re.txt b/snapshot_tests/operations/expected/apollo/generate/variant.re.txt new file mode 100644 index 00000000..5a7eb2d6 --- /dev/null +++ b/snapshot_tests/operations/expected/apollo/generate/variant.re.txt @@ -0,0 +1,334 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + let query = "mutation {\nmutationForVariant {\nbaseType \nbaseTypeList \ndog {\n__typename \nname \nbarkVolume \n}\n\nhuman {\n__typename \nname \n}\n\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n...on Human {\n__typename \nname \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationForVariant: { + let value = (value: Raw.t).mutationForVariant; + switch (Js.Json.decodeObject(Obj.magic(value): Js.Json.t)) { + | None => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "Expected type " + ++ "VariantTestResult" + ++ " to be an object", + ) + | Some(value) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseType"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseType(value); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseTypeList"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseTypeList(value |> Js.Array.map(value => value)); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "dog"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Dog( + { + __typename: { + let value = + (value: Raw.t_mutationForVariant_dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_mutationForVariant_dog).name; + value; + }, + barkVolume: { + let value = + (value: Raw.t_mutationForVariant_dog).barkVolume; + value; + }, + }: t_mutationForVariant_dog, + ); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "human"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Human( + { + __typename: { + let value = + (value: Raw.t_mutationForVariant_human).__typename; + value; + }, + name: { + let value = + (value: Raw.t_mutationForVariant_human).name; + value; + }, + }: t_mutationForVariant_human, + ); + | Some(_) => + let temp = + Js.Dict.unsafeGet(Obj.magic(value), "dogOrHuman"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `DogOrHuman( + { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "__typename", + ), + ); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Dog = + Obj.magic(value); + ( + { + __typename: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + __typename; + value; + }, + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + name; + value; + }, + barkVolume: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + barkVolume; + value; + }, + }: t_mutationForVariant_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Human = + Obj.magic(value); + ( + { + __typename: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Human + ). + __typename; + value; + }, + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Human + ). + name; + value; + }, + }: t_mutationForVariant_dogOrHuman_Human + ); + }, + ) + | _ => + `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_mutationForVariant_dogOrHuman + ); + }, + ); + | Some(_) => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "All fields on variant selection set on type " + ++ "VariantTestResult" + ++ " were null", + ) + }; + }; + }; + }; + }; + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationForVariant = { + let value = (value: t).mutationForVariant; + let _temp = value; + Obj.magic(Js.Json.null); + }; + {mutationForVariant: mutationForVariant}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/argNamedQuery.re.txt b/snapshot_tests/operations/expected/native/generate/argNamedQuery.re.txt new file mode 100644 index 00000000..edb04d1d --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/argNamedQuery.re.txt @@ -0,0 +1,191 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query ($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = Graphql_ppx_runtime.Json.member("argNamedQuery", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + `Int(value); + }; + `Assoc([("argNamedQuery", argNamedQuery)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => `Assoc([("query", (a => `Int(a))((inp: t_variables).query))]); + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MultipleQueryWithSameVarName = { + module Query1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query1($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = + Graphql_ppx_runtime.Json.member("argNamedQuery", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + `Int(value); + }; + `Assoc([("argNamedQuery", argNamedQuery)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => `Assoc([("query", (a => `Int(a))((inp: t_variables).query))]); + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; + module Query2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query2($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = + Graphql_ppx_runtime.Json.member("argNamedQuery", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + `Int(value); + }; + `Assoc([("argNamedQuery", argNamedQuery)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => `Assoc([("query", (a => `Int(a))((inp: t_variables).query))]); + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/native/generate/comment.re.txt b/snapshot_tests/operations/expected/native/generate/comment.re.txt new file mode 100644 index 00000000..42a6dbdf --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/comment.re.txt @@ -0,0 +1,286 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_NonrecursiveInput + and t_variables_EmbeddedInput; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Graphql_ppx_runtime.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_NonrecursiveInput = Graphql_ppx_runtime.Json.t + and t_variables_EmbeddedInput = Graphql_ppx_runtime.Json.t; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = + Graphql_ppx_runtime.Json.member("nonrecursiveInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + `String(value); + }; + `Assoc([("nonrecursiveInput", nonrecursiveInput)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + ), + ]) + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => + `Assoc([ + ( + "nonNullableField", + (a => `String(a))( + (inp: t_variables_NonrecursiveInput).nonNullableField, + ), + ), + ( + "nullableArray", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + ), + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + ), + ( + "enum", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + switch (a) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + } + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + ), + ( + "embeddedInput", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => + (a => serializeInputObjectEmbeddedInput(a))( + b, + ) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + ), + ( + "custom", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => a)(b) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + ), + ]) + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => + `Assoc([ + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/customDecoder.re.txt b/snapshot_tests/operations/expected/native/generate/customDecoder.re.txt new file mode 100644 index 00000000..1232f792 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/customDecoder.re.txt @@ -0,0 +1,114 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module StringOfInt = { + let parse = string_of_int; + let serialize = int_of_string; + type t = string; +}; +module IntOfString = { + let parse = int_of_string; + let serialize = string_of_int; + type t = int; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + IntOfString.parse(Graphql_ppx_runtime.Json.to_string(value)); + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + StringOfInt.parse(Graphql_ppx_runtime.Json.to_int(value)); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let int = { + let value = (value: t_variousScalars).int; + let value = StringOfInt.serialize(value); + `Int(value); + } + and string = { + let value = (value: t_variousScalars).string; + let value = IntOfString.serialize(value); + `String(value); + }; + `Assoc([("string", string), ("int", int)]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/customScalars.re.txt b/snapshot_tests/operations/expected/native/generate/customScalars.re.txt new file mode 100644 index 00000000..0635d220 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/customScalars.re.txt @@ -0,0 +1,136 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_customScalarField = { + nullable: option(Graphql_ppx_runtime.Json.t), + nonNullable: Graphql_ppx_runtime.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Graphql_ppx_runtime.Json.t), + req: Graphql_ppx_runtime.Json.t, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~opt: Graphql_ppx_runtime.Json.t=?, + ~req: Graphql_ppx_runtime.Json.t, + unit + ) => + t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_customScalarField = { + nullable: option(Graphql_ppx_runtime.Json.t), + nonNullable: Graphql_ppx_runtime.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Graphql_ppx_runtime.Json.t), + req: Graphql_ppx_runtime.Json.t, + }; + let query = "query ($opt: CustomScalar, $req: CustomScalar!) {\ncustomScalarField(argOptional: $opt, argRequired: $req) {\nnullable \nnonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customScalarField: { + let value = + Graphql_ppx_runtime.Json.member("customScalarField", value); + ( + { + nullable: { + let value = + Graphql_ppx_runtime.Json.member("nullable", value); + switch (value) { + | `Null => None + | value => Some(value) + }; + }, + nonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nonNullable", value); + value; + }, + }: t_customScalarField + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let customScalarField = { + let value = (value: t).customScalarField; + let nonNullable = { + let value = (value: t_customScalarField).nonNullable; + value; + } + and nullable = { + let value = (value: t_customScalarField).nullable; + switch (value) { + | Some(value) => value + | None => `Null + }; + }; + `Assoc([("nullable", nullable), ("nonNullable", nonNullable)]); + }; + `Assoc([("customScalarField", customScalarField)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "opt", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => a)(b) + } + )( + (inp: t_variables).opt, + ), + ), + ("req", (a => a)((inp: t_variables).req)), + ]); + let makeVariables = (~opt=?, ~req, ()): t_variables => {opt, req}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/customTypes.re.txt b/snapshot_tests/operations/expected/native/generate/customTypes.re.txt new file mode 100644 index 00000000..b28e8149 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/customTypes.re.txt @@ -0,0 +1,225 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Color = { + type t = + | Red + | Green + | Blue; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") + | Some(_) + | None => Red + }; + let serialize = color => + ( + switch (color) { + | Red => "red" + | Green => "green" + | Blue => "blue" + } + ) + |> Js.Json.string; +}; + +module NullableString = { + type t = + | Red + | Green + | Blue; + let parse: option(string) => t = + color => + switch (color) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") => Red + | Some(_) + | None => Red + }; + let serialize: t => option(string) = + color => + switch (color) { + | Red => Some("red") + | Green => Some("green") + | Blue => Some("blue") + }; +}; + +module DateTime = { + type t = Js.Date.t; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some(str) => str |> Js.Date.fromString + | None => Js.Date.make() + }; + let serialize = date => date |> Js.Date.toISOString |> Js.Json.string; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + let query = "query {\ncustomFields {\ncurrentTime \nfavoriteColor \nfutureTime \nnullableColor \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customFields: { + let value = Graphql_ppx_runtime.Json.member("customFields", value); + ( + { + currentTime: { + let value = + Graphql_ppx_runtime.Json.member("currentTime", value); + DateTime.parse(value); + }, + favoriteColor: { + let value = + Graphql_ppx_runtime.Json.member("favoriteColor", value); + Color.parse(value); + }, + futureTime: { + let value = + Graphql_ppx_runtime.Json.member("futureTime", value); + switch (value) { + | `Null => None + | value => Some(DateTime.parse(value)) + }; + }, + nullableColor: { + let value = + Graphql_ppx_runtime.Json.member("nullableColor", value); + switch (value) { + | `Null => None + | value => Some(Color.parse(value)) + }; + }, + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + NullableString.parse( + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + ); + }, + }: t_customFields + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let customFields = { + let value = (value: t).customFields; + let nullableString = { + let value = (value: t_customFields).nullableString; + let value = NullableString.serialize(value); + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and nullableColor = { + let value = (value: t_customFields).nullableColor; + switch (value) { + | Some(value) => + let value = Color.serialize(value); + value; + | None => `Null + }; + } + and futureTime = { + let value = (value: t_customFields).futureTime; + switch (value) { + | Some(value) => + let value = DateTime.serialize(value); + value; + | None => `Null + }; + } + and favoriteColor = { + let value = (value: t_customFields).favoriteColor; + let value = Color.serialize(value); + value; + } + and currentTime = { + let value = (value: t_customFields).currentTime; + let value = DateTime.serialize(value); + value; + }; + `Assoc([ + ("currentTime", currentTime), + ("favoriteColor", favoriteColor), + ("futureTime", futureTime), + ("nullableColor", nullableColor), + ("nullableString", nullableString), + ]); + }; + `Assoc([("customFields", customFields)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/native/generate/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..6f2e40e1 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,78 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + let query = "query {\ndefaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + defaultObjectValueOnScalar: { + let value = + Graphql_ppx_runtime.Json.member( + "defaultObjectValueOnScalar", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let defaultObjectValueOnScalar = { + let value = (value: t).defaultObjectValueOnScalar; + `String(value); + }; + `Assoc([("defaultObjectValueOnScalar", defaultObjectValueOnScalar)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/enumInput.re.txt b/snapshot_tests/operations/expected/native/generate/enumInput.re.txt new file mode 100644 index 00000000..27e6fc23 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/enumInput.re.txt @@ -0,0 +1,89 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~arg: [ | `FIRST | `SECOND | `THIRD], unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + let query = "query ($arg: SampleField!) {\nenumInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + enumInput: { + let value = Graphql_ppx_runtime.Json.member("enumInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let enumInput = { + let value = (value: t).enumInput; + `String(value); + }; + `Assoc([("enumInput", enumInput)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + ( + a => + switch (a) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + } + )( + (inp: t_variables).arg, + ), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/native/generate/ewert_reproduction.re.txt new file mode 100644 index 00000000..f150d175 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/ewert_reproduction.re.txt @@ -0,0 +1,122 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module UserData: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~userId: [ | `NonNull_String], ~fragmentName: [ | `UserData], Raw.t) => t; + let verifyName: [ | `UserData] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + let query = "fragment UserData on Workspace {\nuser(id: $userId) {\nid \nfirstname \nlastname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + user: { + let value = Graphql_ppx_runtime.Json.member("user", value); + ( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + firstname: { + let value = + Graphql_ppx_runtime.Json.member("firstname", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + lastname: { + let value = + Graphql_ppx_runtime.Json.member("lastname", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_user + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let user = { + let value = (value: t).user; + let lastname = { + let value = (value: t_user).lastname; + `String(value); + } + and firstname = { + let value = (value: t_user).firstname; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and id = { + let value = (value: t_user).id; + `String(value); + }; + `Assoc([ + ("id", id), + ("firstname", firstname), + ("lastname", lastname), + ]); + }; + `Assoc([("user", user)]); + }; + let verifyArgsAndParse = + ( + ~userId as _userId: [ | `NonNull_String], + ~fragmentName as _UserData: [ | `UserData], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `UserData => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/explicit_object_record.re.txt b/snapshot_tests/operations/expected/native/generate/explicit_object_record.re.txt new file mode 100644 index 00000000..7680149c --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/explicit_object_record.re.txt @@ -0,0 +1,434 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module RecordsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNonNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nonNullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + nonNullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNonNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ("nonNullableOfNullable", nonNullableOfNullable), + ("nonNullableOfNonNullable", nonNullableOfNonNullable), + ]); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ObjectsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNonNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nonNullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + nonNullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNonNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ("nonNullableOfNullable", nonNullableOfNullable), + ("nonNullableOfNonNullable", nonNullableOfNonNullable), + ]); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/extensions.re.txt b/snapshot_tests/operations/expected/native/generate/extensions.re.txt new file mode 100644 index 00000000..96a78a80 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/extensions.re.txt @@ -0,0 +1,497 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module type GraphQLQuery = { + module Raw: { + type t; + type t_variables; + }; + type t; + type t_variables; + + let query: string; + let parse: Raw.t => t; + let serialize: t => Raw.t; +}; + +module Parent = { + module ExtendQuery = (M: GraphQLQuery) : {let use: unit => unit;} => { + let use = () => (); + }; +}; +module Bla: { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; + include (module type of { + include Bla_inner; + }); + include (module type of { + include Parent.ExtendQuery(Bla_inner); + }); +} = { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNonNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nonNullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + nonNullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNonNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ("nonNullableOfNullable", nonNullableOfNullable), + ("nonNullableOfNonNullable", nonNullableOfNonNullable), + ]); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; + include Bla_inner; + include Parent.ExtendQuery(Bla_inner); +}; +module Inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla2 {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNonNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nonNullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + nonNullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNonNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ("nonNullableOfNullable", nonNullableOfNullable), + ("nonNullableOfNonNullable", nonNullableOfNonNullable), + ]); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +include Inner; +include Parent.ExtendQuery(Inner); diff --git a/snapshot_tests/operations/expected/native/generate/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/native/generate/fragmentDefinition.re.txt new file mode 100644 index 00000000..5d5ed219 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/fragmentDefinition.re.txt @@ -0,0 +1,877 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ]); + }; + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + let query = "fragment Another on Lists {\nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + }; + `Assoc([("nullableOfNonNullable", nullableOfNonNullable)]); + }; + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module FragmentWithArgs: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~arg1: [ | `String], ~fragmentName: [ | `FragmentWithArgs], Raw.t) => t; + let verifyName: [ | `FragmentWithArgs] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + let query = "fragment FragmentWithArgs on Lists {\nlistWithArg(arg1: $arg1) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listWithArg: { + let value = Graphql_ppx_runtime.Json.member("listWithArg", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let listWithArg = { + let value = (value: t).listWithArg; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([("listWithArg", listWithArg)]); + }; + let verifyArgsAndParse = + ( + ~arg1 as _arg1: [ | `String], + ~fragmentName as _FragmentWithArgs: [ | `FragmentWithArgs], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `FragmentWithArgs => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; + +module InlineListFragment = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ]); + }; + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; + +module Wrapper = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ]); + }; + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~arg1: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + let query = + ( + ( + "query MyQuery($arg1: String) {\nl1: lists {\n...ListFragment \n}\n\nl2: lists {\n...ListFragment \n...ListFragment \n}\n\nl3: lists {\nnullableOfNullable \n...ListFragment \n...ListFragment \n}\n\nl4: lists {\nnullableOfNullable \n...InlineListFragment \n}\n\nl5: lists {\n...FragmentWithArgs \n}\n\n}\n" + ++ FragmentWithArgs.query + ) + ++ InlineListFragment.query + ) + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + l1: { + let value = Graphql_ppx_runtime.Json.member("l1", value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ); + }, + l2: { + let value = Graphql_ppx_runtime.Json.member("l2", value); + ( + { + frag1: + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ), + frag2: + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ), + }: t_l2 + ); + }, + l3: { + let value = Graphql_ppx_runtime.Json.member("l3", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + frag1: + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ), + frag2: + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ), + }: t_l3 + ); + }, + l4: { + let value = Graphql_ppx_runtime.Json.member("l4", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + inlineListFragment: + InlineListFragment.verifyArgsAndParse( + ~fragmentName=`InlineListFragment, + InlineListFragment.unsafe_fromJson(value), + ), + }: t_l4 + ); + }, + l5: { + let value = Graphql_ppx_runtime.Json.member("l5", value); + + FragmentWithArgs.verifyArgsAndParse( + ~arg1=`String, + ~fragmentName=`FragmentWithArgs, + FragmentWithArgs.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let l5 = { + let value = (value: t).l5; + FragmentWithArgs.toJson(FragmentWithArgs.serialize(value)); + } + and l4 = { + let value = (value: t).l4; + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let nullableOfNullable = { + let value = (value: t_l4).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + [| + InlineListFragment.toJson( + InlineListFragment.serialize((value: t_l4).inlineListFragment), + ), + |], + ); + } + and l3 = { + let value = (value: t).l3; + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let nullableOfNullable = { + let value = (value: t_l3).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + [| + ListFragment.toJson(ListFragment.serialize((value: t_l3).frag1)), + ListFragment.toJson(ListFragment.serialize((value: t_l3).frag2)), + |], + ); + } + and l2 = { + let value = (value: t).l2; + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + `Assoc([]), + [| + ListFragment.toJson(ListFragment.serialize((value: t_l2).frag1)), + ListFragment.toJson(ListFragment.serialize((value: t_l2).frag2)), + |], + ); + } + and l1 = { + let value = (value: t).l1; + ListFragment.toJson(ListFragment.serialize(value)); + }; + `Assoc([ + ("l1", l1), + ("l2", l2), + ("l3", l3), + ("l4", l4), + ("l5", l5), + ]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg1", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).arg1, + ), + ), + ]); + let makeVariables = (~arg1=?, ()): t_variables => {arg1: arg1}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query = + "query {\nlists {\n...ListFragment \n}\n\n}\n" ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + ListFragment.toJson(ListFragment.serialize(value)); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/native/generate/fragmentInFragment.re.txt new file mode 100644 index 00000000..7c9d6777 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/fragmentInFragment.re.txt @@ -0,0 +1,209 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\nnullableOfNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([("nullableOfNullable", nullableOfNullable)]); + }; + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + let query = + "fragment Another on Lists {\nnullableOfNullable \n...ListFragment \n}\n" + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + listFragment: + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ), + }: t + ); + let serialize: t => Raw.t = + value => + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + [| + ListFragment.toJson( + ListFragment.serialize((value: t).listFragment), + ), + |], + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/native/generate/fragmentOnInterface.re.txt new file mode 100644 index 00000000..36fe174f --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/fragmentOnInterface.re.txt @@ -0,0 +1,230 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module InterfaceFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `InterfaceFragment], Raw.t) => t; + let verifyName: [ | `InterfaceFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = "fragment InterfaceFragment on User {\n__typename\nid \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let id = { + let value = (value: t).id; + `String(value); + }; + `Assoc([("id", id)]); + }; + let verifyArgsAndParse = + ( + ~fragmentName as _InterfaceFragment: [ | `InterfaceFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InterfaceFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module AnotherFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnotherFragment], Raw.t) => t; + let verifyName: [ | `AnotherFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = + "fragment AnotherFragment on User {\n__typename\nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + interfaceFragment: + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + InterfaceFragment.unsafe_fromJson(value), + ), + }: t + ); + let serialize: t => Raw.t = + value => + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let id = { + let value = (value: t).id; + `String(value); + }; + {"id": id}; + }, + [| + InterfaceFragment.toJson( + InterfaceFragment.serialize((value: t).interfaceFragment), + ), + |], + ); + let verifyArgsAndParse = + (~fragmentName as _AnotherFragment: [ | `AnotherFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnotherFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module AnonUser: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnonUser], Raw.t) => t; + let verifyName: [ | `AnonUser] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + let query = + "fragment AnonUser on AnonymousUser {\nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + interfaceFragment: + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + InterfaceFragment.unsafe_fromJson(value), + ), + }: t + ); + let serialize: t => Raw.t = + value => + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let id = { + let value = (value: t).id; + `String(value); + }; + {"id": id}; + }, + [| + InterfaceFragment.toJson( + InterfaceFragment.serialize((value: t).interfaceFragment), + ), + |], + ); + let verifyArgsAndParse = + (~fragmentName as _AnonUser: [ | `AnonUser], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnonUser => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/fragmentUnion.re.txt b/snapshot_tests/operations/expected/native/generate/fragmentUnion.re.txt new file mode 100644 index 00000000..c219a8c5 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/fragmentUnion.re.txt @@ -0,0 +1,229 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; + +module Graphql_ppx_runtime = { + let assign_typename: (Js.Json.t, string) => Js.Json.t = [%raw + {| (obj, typename) => { obj.__typename = typename; return obj } |} + ]; +}; +module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let name = { + let value = (value: t).name; + `String(value); + }; + `Assoc([("name", name)]); + }; + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module HumanFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {name: string}; + type nonrec t_Human = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `HumanFragment], Raw.t) => t; + let verifyName: [ | `HumanFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {name: string}; + type nonrec t_Human = t; + let query = "fragment HumanFragment on Human {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let name = { + let value = (value: t).name; + `String(value); + }; + `Assoc([("name", name)]); + }; + let verifyArgsAndParse = + (~fragmentName as _HumanFragment: [ | `HumanFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `HumanFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + ( + "query MyQuery {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n...on Human {\n...HumanFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query + ) + ++ HumanFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + DogFragment.unsafe_fromJson(value), + ), + ) + | "Human" => + `Human( + HumanFragment.verifyArgsAndParse( + ~fragmentName=`HumanFragment, + HumanFragment.unsafe_fromJson(value), + ), + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + Graphql_ppx_runtime.assign_typename( + DogFragment.toJson(DogFragment.serialize(value)), + "Dog", + ) + | `Human(value) => + Graphql_ppx_runtime.assign_typename( + HumanFragment.toJson(HumanFragment.serialize(value)), + "Human", + ) + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/native/generate/fragmentvariableinput.re.txt new file mode 100644 index 00000000..ccda432e --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/fragmentvariableinput.re.txt @@ -0,0 +1,110 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~name: [ | `NonNull_String], ~fragmentName: [ | `test], Raw.t) => t; + let verifyName: [ | `test] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + let query = "fragment test on Post {\nreposts(arg: {name: $name}) {\nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + reposts: { + let value = Graphql_ppx_runtime.Json.member("reposts", value); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some( + { + id: { + let value = + Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t_reposts, + ) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let reposts = { + let value = (value: t).reposts; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => + let id = { + let value = (value: t_reposts).id; + `Int(value); + }; + `Assoc([("id", id)]); + | None => `Null + } + ) + |> Array.to_list, + ); + }; + `Assoc([("reposts", reposts)]); + }; + let verifyArgsAndParse = + ( + ~name as _name: [ | `NonNull_String], + ~fragmentName as _test: [ | `test], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `test => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/hasuraRepro.re.txt b/snapshot_tests/operations/expected/native/generate/hasuraRepro.re.txt new file mode 100644 index 00000000..7e1f65de --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/hasuraRepro.re.txt @@ -0,0 +1,168 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Dog: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Dog], Raw.t) => t; + let verifyName: [ | `Dog] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query = "fragment Dog on Dog {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let name = { + let value = (value: t).name; + `String(value); + }; + `Assoc([("name", name)]); + }; + let verifyArgsAndParse = (~fragmentName as _Dog: [ | `Dog], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Dog => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module HasuraRepro: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + type_: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~blockNumber: int=?, ~type_: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + type_: option(string), + }; + let query = + "query HasuraRepro($blockNumber: Int, $type: String) {\nhasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n...Dog \n}\n\n}\n" + ++ Dog.query; + let parse: Raw.t => t = + (value) => ( + { + hasuraRepro: { + let value = Graphql_ppx_runtime.Json.member("hasuraRepro", value); + + Dog.verifyArgsAndParse( + ~fragmentName=`Dog, + Dog.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let hasuraRepro = { + let value = (value: t).hasuraRepro; + Dog.toJson(Dog.serialize(value)); + }; + `Assoc([("hasuraRepro", hasuraRepro)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "blockNumber", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Int(a))(b) + } + )( + (inp: t_variables).blockNumber, + ), + ), + ( + "type", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).type_, + ), + ), + ]); + let makeVariables = (~blockNumber=?, ~type_=?, ()): t_variables => { + blockNumber, + type_, + }; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; + +let _ = HasuraRepro.makeVariables(~blockNumber=1, ~type_="1", ()); diff --git a/snapshot_tests/operations/expected/native/generate/interface.re.txt b/snapshot_tests/operations/expected/native/generate/interface.re.txt new file mode 100644 index 00000000..b498ce35 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/interface.re.txt @@ -0,0 +1,743 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module QueryWithOnlyFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\nid \nname \n}\n\n...on AnonymousUser {\nid \nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = Graphql_ppx_runtime.Json.member("users", value); + switch (value) { + | `List(json_list) => + List.map( + value => { + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + id: { + let value = + Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + anonymousId: { + let value = + Graphql_ppx_runtime.Json.member( + "anonymousId", + value, + ); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t_users_User_AnonymousUser, + ) + | "AdminUser" => + `AdminUser( + { + id: { + let value = + Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_users_User_AdminUser, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let users = { + let value = (value: t).users; + `List( + value + |> Array.map(value => + switch (value) { + | `AnonymousUser(value) => + let anonymousId = { + let value = (value: t_users_User_AnonymousUser).anonymousId; + `Int(value); + } + and id = { + let value = (value: t_users_User_AnonymousUser).id; + `String(value); + }; + `Assoc([ + ("__typename", `String("AnonymousUser")), + ("id", id), + ("anonymousId", anonymousId), + ]); + | `AdminUser(value) => + let name = { + let value = (value: t_users_User_AdminUser).name; + `String(value); + } + and id = { + let value = (value: t_users_User_AdminUser).id; + `String(value); + }; + `Assoc([ + ("__typename", `String("AdminUser")), + ("id", id), + ("name", name), + ]); + | `UnspecifiedFragment(_) => `Assoc([]) + } + ) + |> Array.to_list, + ); + }; + `Assoc([("users", users)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module QueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = Graphql_ppx_runtime.Json.member("users", value); + switch (value) { + | `List(json_list) => + List.map( + value => { + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member( + "__typename", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + id: { + let value = + Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_users_User_AdminUser, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let users = { + let value = (value: t).users; + `List( + value + |> Array.map(value => + switch (value) { + | `AdminUser(value) => + let id = { + let value = (value: t_users_User_AdminUser).id; + `String(value); + } + and __typename = { + let value = (value: t_users_User_AdminUser).__typename; + `String(value); + }; + `Assoc([ + ("__typename", `String("AdminUser")), + ("id", id), + ]); + | `UnspecifiedFragment(_) => `Assoc([]) + } + ) + |> Array.to_list, + ); + }; + `Assoc([("users", users)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module QueryWithMixedFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n...on AdminUser {\nname \n}\n\n...on AnonymousUser {\nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = Graphql_ppx_runtime.Json.member("users", value); + switch (value) { + | `List(json_list) => + List.map( + (value): t_users => + { + fragment: { + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + anonymousId: { + let value = + Graphql_ppx_runtime.Json.member( + "anonymousId", + value, + ); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t_users_User_AnonymousUser, + ) + | "AdminUser" => + `AdminUser( + { + name: { + let value = + Graphql_ppx_runtime.Json.member( + "name", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_users_User_AdminUser, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let users = { + let value = (value: t).users; + `List( + value + |> Array.map(value => + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let id = { + let value = (value: t_users).id; + `String(value); + }; + {"id": id}; + }, + [| + { + let value = (value: t_users).fragment; + switch (value) { + | `AnonymousUser(value) => + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser).anonymousId; + `Int(value); + }; + `Assoc([ + ("__typename", `String("AnonymousUser")), + ("anonymousId", anonymousId), + ]); + | `AdminUser(value) => + let name = { + let value = (value: t_users_User_AdminUser).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("AdminUser")), + ("name", name), + ]); + | `UnspecifiedFragment(_) => `Assoc([]) + }; + }, + |], + ) + ) + |> Array.to_list, + ); + }; + `Assoc([("users", users)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MixedQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n__typename \n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = Graphql_ppx_runtime.Json.member("users", value); + switch (value) { + | `List(json_list) => + List.map( + (value): t_users => + { + fragment: { + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member( + "__typename", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + id: { + let value = + Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_users_User_AdminUser, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let users = { + let value = (value: t).users; + `List( + value + |> Array.map(value => + Array.fold_left( + Graphql_ppx_runtime.deepMerge, + { + let id = { + let value = (value: t_users).id; + `String(value); + } + and __typename = { + let value = (value: t_users).__typename; + `String(value); + }; + {"__typename": __typename, "id": id}; + }, + [| + { + let value = (value: t_users).fragment; + switch (value) { + | `AdminUser(value) => + let id = { + let value = (value: t_users_User_AdminUser).id; + `String(value); + } + and __typename = { + let value = + (value: t_users_User_AdminUser).__typename; + `String(value); + }; + `Assoc([ + ("__typename", `String("AdminUser")), + ("id", id), + ]); + | `UnspecifiedFragment(_) => `Assoc([]) + }; + }, + |], + ) + ) + |> Array.to_list, + ); + }; + `Assoc([("users", users)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module QueryWithoutFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = Graphql_ppx_runtime.Json.member("users", value); + switch (value) { + | `List(json_list) => + List.map( + (value): t_users => + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let users = { + let value = (value: t).users; + `List( + value + |> Array.map(value => + let id = { + let value = (value: t_users).id; + `String(value); + }; + `Assoc([("id", id)]); + ) + |> Array.to_list, + ); + }; + `Assoc([("users", users)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/lists.re.txt b/snapshot_tests/operations/expected/native/generate/lists.re.txt new file mode 100644 index 00000000..cc3b557a --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/lists.re.txt @@ -0,0 +1,226 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nullableOfNonNullable", + value, + ); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nonNullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + nonNullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member( + "nonNullableOfNonNullable", + value, + ); + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }; + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List( + value |> Array.map(value => `String(value)) |> Array.to_list, + ) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ("nonNullableOfNullable", nonNullableOfNullable), + ("nonNullableOfNonNullable", nonNullableOfNonNullable), + ]); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/listsArgs.re.txt b/snapshot_tests/operations/expected/native/generate/listsArgs.re.txt new file mode 100644 index 00000000..3f49cfda --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/listsArgs.re.txt @@ -0,0 +1,195 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\nlistsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = Graphql_ppx_runtime.Json.member("listsInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let listsInput = { + let value = (value: t).listsInput; + `String(value); + }; + `Assoc([("listsInput", listsInput)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "nullableOfNullable", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables).nullableOfNullable, + ), + ), + ( + "nullableOfNonNullable", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map(b => (a => `String(a))(b), a) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables).nullableOfNonNullable, + ), + ), + ( + "nonNullableOfNullable", + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + (inp: t_variables).nonNullableOfNullable, + ), + ), + ( + "nonNullableOfNonNullable", + ( + a => + `List( + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, + ) + )( + (inp: t_variables).nonNullableOfNonNullable, + ), + ), + ]); + let makeVariables = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/listsInput.re.txt b/snapshot_tests/operations/expected/native/generate/listsInput.re.txt new file mode 100644 index 00000000..a44dccf7 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/listsInput.re.txt @@ -0,0 +1,212 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_ListsInput; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput; + let makeVariables: (~arg: t_variables_ListsInput, unit) => t_variables; + let makeInputObjectListsInput: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables_ListsInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_ListsInput = Graphql_ppx_runtime.Json.t; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($arg: ListsInput!) {\nlistsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = Graphql_ppx_runtime.Json.member("listsInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let listsInput = { + let value = (value: t).listsInput; + `String(value); + }; + `Assoc([("listsInput", listsInput)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectListsInput(a))((inp: t_variables).arg), + ), + ]) + and serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput = + inp => + `Assoc([ + ( + "nullableOfNullable", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNullable, + ), + ), + ( + "nullableOfNonNullable", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map(b => (a => `String(a))(b), a) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNonNullable, + ), + ), + ( + "nonNullableOfNullable", + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + (inp: t_variables_ListsInput).nonNullableOfNullable, + ), + ), + ( + "nonNullableOfNonNullable", + ( + a => + `List( + Array.map(b => (a => `String(a))(b), a) |> Array.to_list, + ) + )( + (inp: t_variables_ListsInput).nonNullableOfNonNullable, + ), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectListsInput = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables_ListsInput => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/module_type.re.txt b/snapshot_tests/operations/expected/native/generate/module_type.re.txt new file mode 100644 index 00000000..69a6ec89 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/module_type.re.txt @@ -0,0 +1,246 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: {type t;} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let string = { + let value = (value: t_variousScalars).string; + `String(value); + }; + `Assoc([("string", string)]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery2: { + type t_variousScalars; + type t = {variousScalars: t_variousScalars}; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let string = { + let value = (value: t_variousScalars).string; + `String(value); + }; + `Assoc([("string", string)]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; + +module rec MyQueryRecursive: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = Graphql_ppx_runtime.Json.member("nestedObject", value); + VariousScalars.parse( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_nestedObject_inner_inner, + ) + }; + }, + }: t_nestedObject_inner, + ) + }; + }, + }: t_nestedObject, + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nestedObject = { + let value = (value: t).nestedObject; + let value = VariousScalars.serialize(value); + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_nestedObject_inner_inner).field; + `String(value); + }; + `Assoc([("field", field)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + }; + `Assoc([("nestedObject", nestedObject)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} + +and VariousScalars: { + type t; + let parse: MyQueryRecursive.t_nestedObject => t; + let serialize: t => MyQueryRecursive.t_nestedObject; +} = { + type t = {otherInner: option(MyQueryRecursive.t_nestedObject_inner)}; + let parse = (nestedObject: MyQueryRecursive.t_nestedObject) => { + otherInner: nestedObject.inner, + }; + let serialize: t => MyQueryRecursive.t_nestedObject = + t => {inner: t.otherInner}; +}; diff --git a/snapshot_tests/operations/expected/native/generate/mutation.re.txt b/snapshot_tests/operations/expected/native/generate/mutation.re.txt new file mode 100644 index 00000000..e00ab864 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/mutation.re.txt @@ -0,0 +1,209 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nvalue {\nstringField \n}\n\nerrors {\nfield \nmessage \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = + Graphql_ppx_runtime.Json.member("mutationWithError", value); + ( + { + value: { + let value = Graphql_ppx_runtime.Json.member("value", value); + switch (value) { + | `Null => None + | value => + Some( + { + stringField: { + let value = + Graphql_ppx_runtime.Json.member( + "stringField", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_mutationWithError_value, + ) + }; + }, + errors: { + let value = Graphql_ppx_runtime.Json.member("errors", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + (value): t_mutationWithError_errors => + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + switch ( + value |> Graphql_ppx_runtime.Json.to_string + ) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + message: { + let value = + Graphql_ppx_runtime.Json.member( + "message", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let mutationWithError = { + let value = (value: t).mutationWithError; + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + let message = { + let value = (value: t_mutationWithError_errors).message; + `String(value); + } + and field = { + let value = (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + | `FutureAddedValue(other) => `String(other) + }; + }; + `Assoc([("field", field), ("message", message)]); + ) + |> Array.to_list, + ) + | None => `Null + }; + } + and value = { + let value = (value: t_mutationWithError).value; + switch (value) { + | Some(value) => + let stringField = { + let value = (value: t_mutationWithError_value).stringField; + `String(value); + }; + `Assoc([("stringField", stringField)]); + | None => `Null + }; + }; + `Assoc([("value", value), ("errors", errors)]); + }; + `Assoc([("mutationWithError", mutationWithError)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/native/generate/mutationWithArgs.re.txt new file mode 100644 index 00000000..f922eb26 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/mutationWithArgs.re.txt @@ -0,0 +1,77 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = + Graphql_ppx_runtime.Json.member("optionalInputArgs", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + `String(value); + }; + `Assoc([("optionalInputArgs", optionalInputArgs)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ("required", (a => `String(a))((inp: t_variables).required)), + ]); + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/native/generate/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..f922eb26 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,77 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = + Graphql_ppx_runtime.Json.member("optionalInputArgs", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + `String(value); + }; + `Assoc([("optionalInputArgs", optionalInputArgs)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ("required", (a => `String(a))((inp: t_variables).required)), + ]); + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/nested.re.txt b/snapshot_tests/operations/expected/native/generate/nested.re.txt new file mode 100644 index 00000000..51deb343 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/nested.re.txt @@ -0,0 +1,568 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +type record = { + f1: string, + f2: string, +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\nsecond: nestedObject {\ninner {\ninner {\nf1: field \nf2: field \n}\n\n}\n\n}\n\nlet: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = Graphql_ppx_runtime.Json.member("first", value); + ( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_first_inner_inner, + ) + }; + }, + }: t_first_inner, + ) + }; + }, + }: t_first + ); + }, + second: { + let value = Graphql_ppx_runtime.Json.member("second", value); + ( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + f1: { + let value = + Graphql_ppx_runtime.Json.member( + "f1", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + f2: { + let value = + Graphql_ppx_runtime.Json.member( + "f2", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_second_inner_inner, + ) + }; + }, + }: t_second_inner, + ) + }; + }, + }: t_second + ); + }, + let_: { + let value = Graphql_ppx_runtime.Json.member("let", value); + ( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_let_inner_inner, + ) + }; + }, + }: t_let_inner, + ) + }; + }, + }: t_let + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let let_ = { + let value = (value: t).let_; + let inner = { + let value = (value: t_let).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_let_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_let_inner_inner).field; + `String(value); + }; + `Assoc([("field", field)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + } + and second = { + let value = (value: t).second; + let inner = { + let value = (value: t_second).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_second_inner).inner; + switch (value) { + | Some(value) => + let f2 = { + let value = (value: t_second_inner_inner).f2; + `String(value); + } + and f1 = { + let value = (value: t_second_inner_inner).f1; + `String(value); + }; + `Assoc([("f1", f1), ("f2", f2)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + } + and first = { + let value = (value: t).first; + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_first_inner_inner).field; + `String(value); + }; + `Assoc([("field", field)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + }; + `Assoc([("first", first), ("second", second), ("let", let_)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; + +module Test: { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +} = { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = + Graphql_ppx_runtime.Json.member("nestedObject", value); + ( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_nestedObject_inner_inner, + ) + }; + }, + }: t_nestedObject_inner, + ) + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nestedObject = { + let value = (value: t).nestedObject; + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_nestedObject_inner_inner).field; + `String(value); + }; + `Assoc([("field", field)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + }; + `Assoc([("nestedObject", nestedObject)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +}; +module MyQueryWithSigDirect: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = Graphql_ppx_runtime.Json.member("nestedObject", value); + ( + { + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_nestedObject_inner_inner, + ) + }; + }, + }: t_nestedObject_inner, + ) + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nestedObject = { + let value = (value: t).nestedObject; + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_nestedObject_inner_inner).field; + `String(value); + }; + `Assoc([("field", field)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + | None => `Null + }; + }; + `Assoc([("inner", inner)]); + }; + `Assoc([("nestedObject", nestedObject)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/native/generate/nonrecursiveInput.re.txt new file mode 100644 index 00000000..8f9d24ad --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/nonrecursiveInput.re.txt @@ -0,0 +1,584 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_NonrecursiveInput + and t_variables_EmbeddedInput; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Graphql_ppx_runtime.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_NonrecursiveInput = Graphql_ppx_runtime.Json.t + and t_variables_EmbeddedInput = Graphql_ppx_runtime.Json.t; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = + Graphql_ppx_runtime.Json.member("nonrecursiveInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + `String(value); + }; + `Assoc([("nonrecursiveInput", nonrecursiveInput)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + ), + ]) + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => + `Assoc([ + ( + "nonNullableField", + (a => `String(a))( + (inp: t_variables_NonrecursiveInput).nonNullableField, + ), + ), + ( + "nullableArray", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + ), + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + ), + ( + "enum", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + switch (a) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + } + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + ), + ( + "embeddedInput", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => + (a => serializeInputObjectEmbeddedInput(a))( + b, + ) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + ), + ( + "custom", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => a)(b) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + ), + ]) + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => + `Assoc([ + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_NonrecursiveInput + and t_variables_EmbeddedInput; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + ( + ~arg: t_variables_NonrecursiveInput, + ~arg2: t_variables_NonrecursiveInput, + unit + ) => + t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Graphql_ppx_runtime.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_NonrecursiveInput = Graphql_ppx_runtime.Json.t + and t_variables_EmbeddedInput = Graphql_ppx_runtime.Json.t; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Graphql_ppx_runtime.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\nscalarsInput(arg: $arg) \nmore: scalarsInput(arg: $arg2) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = Graphql_ppx_runtime.Json.member("scalarsInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + more: { + let value = Graphql_ppx_runtime.Json.member("more", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let more = { + let value = (value: t).more; + `String(value); + } + and scalarsInput = { + let value = (value: t).scalarsInput; + `String(value); + }; + `Assoc([("scalarsInput", scalarsInput), ("more", more)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + ), + ( + "arg2", + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg2, + ), + ), + ]) + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => + `Assoc([ + ( + "nonNullableField", + (a => `String(a))( + (inp: t_variables_NonrecursiveInput).nonNullableField, + ), + ), + ( + "nullableArray", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + ), + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + ), + ( + "enum", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + switch (a) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + } + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + ), + ( + "embeddedInput", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + `List( + Array.map( + b => + ( + a => + switch (a) { + | None => `Null + | Some(b) => + (a => serializeInputObjectEmbeddedInput(a))( + b, + ) + } + )( + b, + ), + a, + ) + |> Array.to_list, + ) + )( + b, + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + ), + ( + "custom", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => a)(b) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + ), + ]) + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => + `Assoc([ + ( + "field", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + ), + ]); + let makeVariables = (~arg, ~arg2, ()): t_variables => {arg, arg2} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/native/generate/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..5576276b --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/omitFutureValueEnum.re.txt @@ -0,0 +1,464 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = + Graphql_ppx_runtime.Json.member("mutationWithError", value); + ( + { + errors: { + let value = Graphql_ppx_runtime.Json.member("errors", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + (value): t_mutationWithError_errors => + { + message: { + let value = + Graphql_ppx_runtime.Json.member( + "message", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + switch ( + value |> Graphql_ppx_runtime.Json.to_string + ) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let mutationWithError = { + let value = (value: t).mutationWithError; + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + let field = { + let value = (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + | `FutureAddedValue(other) => `String(other) + }; + } + and message = { + let value = (value: t_mutationWithError_errors).message; + `String(value); + }; + `Assoc([("message", message), ("field", field)]); + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([("errors", errors)]); + }; + `Assoc([("mutationWithError", mutationWithError)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = + Graphql_ppx_runtime.Json.member("mutationWithError", value); + ( + { + errors: { + let value = Graphql_ppx_runtime.Json.member("errors", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + (value): t_mutationWithError_errors => + { + message: { + let value = + Graphql_ppx_runtime.Json.member( + "message", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + switch ( + value |> Graphql_ppx_runtime.Json.to_string + ) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let mutationWithError = { + let value = (value: t).mutationWithError; + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + let field = { + let value = (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + }; + } + and message = { + let value = (value: t_mutationWithError_errors).message; + `String(value); + }; + `Assoc([("message", message), ("field", field)]); + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([("errors", errors)]); + }; + `Assoc([("mutationWithError", mutationWithError)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = + Graphql_ppx_runtime.Json.member("mutationWithError", value); + ( + { + errors: { + let value = Graphql_ppx_runtime.Json.member("errors", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + (value): t_mutationWithError_errors => + { + message: { + let value = + Graphql_ppx_runtime.Json.member( + "message", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + switch ( + value |> Graphql_ppx_runtime.Json.to_string + ) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let mutationWithError = { + let value = (value: t).mutationWithError; + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + let field = { + let value = (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + }; + } + and message = { + let value = (value: t_mutationWithError_errors).message; + `String(value); + }; + `Assoc([("message", message), ("field", field)]); + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([("errors", errors)]); + }; + `Assoc([("mutationWithError", mutationWithError)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/native/generate/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..aac636a3 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/omitFutureValueUnion.re.txt @@ -0,0 +1,405 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_dogOrHuman_Human, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `Human(value) => + let name = { + let value = (value: t_dogOrHuman_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_dogOrHuman_Human, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `Human(value) => + let name = { + let value = (value: t_dogOrHuman_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_dogOrHuman_Human, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `Human(value) => + let name = { + let value = (value: t_dogOrHuman_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/native/generate/pokedexApolloMode.re.txt new file mode 100644 index 00000000..0b495ad7 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/pokedexApolloMode.re.txt @@ -0,0 +1,115 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + let query = "query {\npokemon(name: \"Pikachu\") {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = Graphql_ppx_runtime.Json.member("pokemon", value); + switch (value) { + | `Null => None + | value => + Some( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_pokemon, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and id = { + let value = (value: t_pokemon).id; + `String(value); + }; + `Assoc([("id", id), ("name", name)]); + | None => `Null + }; + }; + `Assoc([("pokemon", pokemon)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/pokedexScalars.re.txt b/snapshot_tests/operations/expected/native/generate/pokedexScalars.re.txt new file mode 100644 index 00000000..5230cfa6 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/pokedexScalars.re.txt @@ -0,0 +1,278 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = Graphql_ppx_runtime.Json.member("pokemon", value); + switch (value) { + | `Null => None + | value => + Some( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_pokemon, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and id = { + let value = (value: t_pokemon).id; + `String(value); + }; + `Assoc([("id", id), ("name", name)]); + | None => `Null + }; + }; + `Assoc([("pokemon", pokemon)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "id", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).id, + ), + ), + ( + "name", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).name, + ), + ), + ]); + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQueryDirectives: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = Graphql_ppx_runtime.Json.member("pokemon", value); + switch (value) { + | `Null => None + | value => + Some( + { + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_pokemon, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and id = { + let value = (value: t_pokemon).id; + `String(value); + }; + `Assoc([("id", id), ("name", name)]); + | None => `Null + }; + }; + `Assoc([("pokemon", pokemon)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "id", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).id, + ), + ), + ( + "name", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).name, + ), + ), + ]); + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/record.re.txt b/snapshot_tests/operations/expected/native/generate/record.re.txt new file mode 100644 index 00000000..c5963089 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/record.re.txt @@ -0,0 +1,723 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; + +type scalars = { + __typename: string, + string, + int, +}; + +type dog = { + __typename: string, + name: string, + barkVolume: float, +}; + +type oneFieldQuery = {nullableString: option(string)}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: scalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let int = { + let value = (value: scalars).int; + `Int(value); + } + and string = { + let value = (value: scalars).string; + `String(value); + } + and __typename = { + let value = (value: scalars).__typename; + `String(value); + }; + `Assoc([ + ("__typename", __typename), + ("string", string), + ("int", int), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module OneFieldQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([("nullableString", nullableString)]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module OneFieldQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + `String(value); + }; + `Assoc([ + ("__typename", __typename), + ("nullableString", nullableString), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ExternalFragmentQuery = { + module Fragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Fragment], Raw.t) => t; + let verifyName: [ | `Fragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + let query = "fragment Fragment on VariousScalars {\nstring \nint \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let int = { + let value = (value: t).int; + `Int(value); + } + and string = { + let value = (value: t).string; + `String(value); + }; + `Assoc([("string", string), ("int", int)]); + }; + let verifyArgsAndParse = + (~fragmentName as _Fragment: [ | `Fragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Fragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + let query = + "query {\nvariousScalars {\n...Fragment \n}\n\n}\n" + ++ Fragment.query; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + + Fragment.verifyArgsAndParse( + ~fragmentName=`Fragment, + Fragment.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + Fragment.toJson(Fragment.serialize(value)); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +}; +module InlineFragmentQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module UnionExternalFragmentQuery = { + module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let barkVolume = { + let value = (value: t).barkVolume; + `Float(value); + } + and name = { + let value = (value: t).name; + `String(value); + } + and __typename = { + let value = (value: t).__typename; + `String(value); + }; + `Assoc([ + ("__typename", __typename), + ("name", name), + ("barkVolume", barkVolume), + ]); + }; + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + DogFragment.unsafe_fromJson(value), + ), + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + Graphql_ppx_runtime.assign_typename( + DogFragment.toJson(DogFragment.serialize(value)), + "Dog", + ) + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/native/generate/recursiveInput.re.txt b/snapshot_tests/operations/expected/native/generate/recursiveInput.re.txt new file mode 100644 index 00000000..8255460c --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/recursiveInput.re.txt @@ -0,0 +1,337 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_RecursiveInput; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput; + let makeVariables: (~arg: t_variables_RecursiveInput, unit) => t_variables; + let makeInputObjectRecursiveInput: + ( + ~otherField: string=?, + ~inner: t_variables_RecursiveInput=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + unit + ) => + t_variables_RecursiveInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_RecursiveInput = Graphql_ppx_runtime.Json.t; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + let query = "query ($arg: RecursiveInput!) {\nrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveInput: { + let value = + Graphql_ppx_runtime.Json.member("recursiveInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let recursiveInput = { + let value = (value: t).recursiveInput; + `String(value); + }; + `Assoc([("recursiveInput", recursiveInput)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectRecursiveInput(a))( + (inp: t_variables).arg, + ), + ), + ]) + and serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput = + inp => + `Assoc([ + ( + "otherField", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_RecursiveInput).otherField, + ), + ), + ( + "inner", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => serializeInputObjectRecursiveInput(a))(b) + } + )( + (inp: t_variables_RecursiveInput).inner, + ), + ), + ( + "enum", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + ( + a => + switch (a) { + | `FIRST => `String("FIRST") + | `SECOND => `String("SECOND") + | `THIRD => `String("THIRD") + } + )( + b, + ) + } + )( + (inp: t_variables_RecursiveInput).enum, + ), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectRecursiveInput = + (~otherField=?, ~inner=?, ~enum=?, ()): t_variables_RecursiveInput => { + otherField, + inner, + enum, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_problem_input + and t_variables_this_will_be_duplicated + and t_variables_nested_type; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input; + let serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated; + let serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type; + let makeVariables: (~input: t_variables_problem_input, unit) => t_variables; + let makeInputObjectproblem_input: + ( + ~the_problem: t_variables_this_will_be_duplicated=?, + ~b: t_variables_nested_type=?, + unit + ) => + t_variables_problem_input; + let makeInputObjectthis_will_be_duplicated: + (~id: string, unit) => t_variables_this_will_be_duplicated; + let makeInputObjectnested_type: + (~the_problem: t_variables_this_will_be_duplicated=?, unit) => + t_variables_nested_type; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_problem_input = Graphql_ppx_runtime.Json.t + and t_variables_this_will_be_duplicated = Graphql_ppx_runtime.Json.t + and t_variables_nested_type = Graphql_ppx_runtime.Json.t; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + let query = "query Test($input: problem_input!) {\nrecursiveRepro(input: $input) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveRepro: { + let value = + Graphql_ppx_runtime.Json.member("recursiveRepro", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let recursiveRepro = { + let value = (value: t).recursiveRepro; + `Bool(value); + }; + `Assoc([("recursiveRepro", recursiveRepro)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "input", + (a => serializeInputObjectproblem_input(a))( + (inp: t_variables).input, + ), + ), + ]) + and serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input = + inp => + `Assoc([ + ( + "the_problem", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + (a => serializeInputObjectthis_will_be_duplicated(a))(b) + } + )( + (inp: t_variables_problem_input).the_problem, + ), + ), + ( + "b", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => serializeInputObjectnested_type(a))(b) + } + )( + (inp: t_variables_problem_input).b, + ), + ), + ]) + and serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated = + inp => + `Assoc([ + ( + "id", + (a => `String(a))((inp: t_variables_this_will_be_duplicated).id), + ), + ]) + and serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type = + inp => + `Assoc([ + ( + "the_problem", + ( + a => + switch (a) { + | None => `Null + | Some(b) => + (a => serializeInputObjectthis_will_be_duplicated(a))(b) + } + )( + (inp: t_variables_nested_type).the_problem, + ), + ), + ]); + let makeVariables = (~input, ()): t_variables => {input: input} + and makeInputObjectproblem_input = + (~the_problem=?, ~b=?, ()): t_variables_problem_input => { + the_problem, + b, + } + and makeInputObjectthis_will_be_duplicated = + (~id, ()): t_variables_this_will_be_duplicated => { + id: id, + } + and makeInputObjectnested_type = + (~the_problem=?, ()): t_variables_nested_type => { + the_problem: the_problem, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/scalars.re.txt b/snapshot_tests/operations/expected/native/generate/scalars.re.txt new file mode 100644 index 00000000..dc4c153d --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/scalars.re.txt @@ -0,0 +1,228 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/scalarsArgs.re.txt b/snapshot_tests/operations/expected/native/generate/scalarsArgs.re.txt new file mode 100644 index 00000000..140df909 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/scalarsArgs.re.txt @@ -0,0 +1,201 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\nscalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = Graphql_ppx_runtime.Json.member("scalarsInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let scalarsInput = { + let value = (value: t).scalarsInput; + `String(value); + }; + `Assoc([("scalarsInput", scalarsInput)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "nullableString", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).nullableString, + ), + ), + ("string", (a => `String(a))((inp: t_variables).string)), + ( + "nullableInt", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Int(a))(b) + } + )( + (inp: t_variables).nullableInt, + ), + ), + ("int", (a => `Int(a))((inp: t_variables).int)), + ( + "nullableFloat", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Float(a))(b) + } + )( + (inp: t_variables).nullableFloat, + ), + ), + ("float", (a => `Float(a))((inp: t_variables).float)), + ( + "nullableBoolean", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Bool(a))(b) + } + )( + (inp: t_variables).nullableBoolean, + ), + ), + ("boolean", (a => `Bool(a))((inp: t_variables).boolean)), + ( + "nullableID", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables).nullableID, + ), + ), + ("id", (a => `String(a))((inp: t_variables).id)), + ]); + let makeVariables = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/scalarsInput.re.txt b/snapshot_tests/operations/expected/native/generate/scalarsInput.re.txt new file mode 100644 index 00000000..1f2d256a --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/scalarsInput.re.txt @@ -0,0 +1,233 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables + and t_variables_VariousScalarsInput; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput; + let makeVariables: + (~arg: t_variables_VariousScalarsInput, unit) => t_variables; + let makeInputObjectVariousScalarsInput: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables_VariousScalarsInput; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t + and t_variables_VariousScalarsInput = Graphql_ppx_runtime.Json.t; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($arg: VariousScalarsInput!) {\nscalarsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = Graphql_ppx_runtime.Json.member("scalarsInput", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let scalarsInput = { + let value = (value: t).scalarsInput; + `String(value); + }; + `Assoc([("scalarsInput", scalarsInput)]); + }; + let rec serializeVariables: t_variables => Raw.t_variables = + inp => + `Assoc([ + ( + "arg", + (a => serializeInputObjectVariousScalarsInput(a))( + (inp: t_variables).arg, + ), + ), + ]) + and serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput = + inp => + `Assoc([ + ( + "nullableString", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_VariousScalarsInput).nullableString, + ), + ), + ( + "string", + (a => `String(a))((inp: t_variables_VariousScalarsInput).string), + ), + ( + "nullableInt", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Int(a))(b) + } + )( + (inp: t_variables_VariousScalarsInput).nullableInt, + ), + ), + ("int", (a => `Int(a))((inp: t_variables_VariousScalarsInput).int)), + ( + "nullableFloat", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Float(a))(b) + } + )( + (inp: t_variables_VariousScalarsInput).nullableFloat, + ), + ), + ( + "float", + (a => `Float(a))((inp: t_variables_VariousScalarsInput).float), + ), + ( + "nullableBoolean", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `Bool(a))(b) + } + )( + (inp: t_variables_VariousScalarsInput).nullableBoolean, + ), + ), + ( + "boolean", + (a => `Bool(a))((inp: t_variables_VariousScalarsInput).boolean), + ), + ( + "nullableID", + ( + a => + switch (a) { + | None => `Null + | Some(b) => (a => `String(a))(b) + } + )( + (inp: t_variables_VariousScalarsInput).nullableID, + ), + ), + ( + "id", + (a => `String(a))((inp: t_variables_VariousScalarsInput).id), + ), + ]); + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectVariousScalarsInput = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables_VariousScalarsInput => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/skipDirectives.re.txt b/snapshot_tests/operations/expected/native/generate/skipDirectives.re.txt new file mode 100644 index 00000000..7457f7f9 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/skipDirectives.re.txt @@ -0,0 +1,167 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~var: bool, unit) => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + let query = "query ($var: Boolean!) {\nv1: variousScalars {\nnullableString @skip(if: $var) \nstring @skip(if: $var) \n}\n\nv2: variousScalars {\nnullableString @include(if: $var) \nstring @include(if: $var) \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + v1: { + let value = Graphql_ppx_runtime.Json.member("v1", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_v1 + ); + }, + v2: { + let value = Graphql_ppx_runtime.Json.member("v2", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + }: t_v2 + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let v2 = { + let value = (value: t).v2; + let string = { + let value = (value: t_v2).string; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and nullableString = { + let value = (value: t_v2).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([("nullableString", nullableString), ("string", string)]); + } + and v1 = { + let value = (value: t).v1; + let string = { + let value = (value: t_v1).string; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and nullableString = { + let value = (value: t_v1).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([("nullableString", nullableString), ("string", string)]); + }; + `Assoc([("v1", v1), ("v2", v2)]); + }; + let serializeVariables: t_variables => Raw.t_variables = + inp => `Assoc([("var", (a => `Bool(a))((inp: t_variables).var))]); + let makeVariables = (~var, ()): t_variables => {var: var}; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/subscription.re.txt b/snapshot_tests/operations/expected/native/generate/subscription.re.txt new file mode 100644 index 00000000..5149901b --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/subscription.re.txt @@ -0,0 +1,131 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + let query = "subscription {\nsimpleSubscription {\n__typename\n...on Dog {\nname \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + simpleSubscription: { + let value = + Graphql_ppx_runtime.Json.member("simpleSubscription", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_simpleSubscription_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_simpleSubscription_Human, + ) + | _ => `FutureAddedValue(value) + }: t_simpleSubscription + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let simpleSubscription = { + let value = (value: t).simpleSubscription; + switch (value) { + | `Dog(value) => + let name = { + let value = (value: t_simpleSubscription_Dog).name; + `String(value); + }; + `Assoc([("__typename", `String("Dog")), ("name", name)]); + | `Human(value) => + let name = { + let value = (value: t_simpleSubscription_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("simpleSubscription", simpleSubscription)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/tagged_template.re.txt b/snapshot_tests/operations/expected/native/generate/tagged_template.re.txt new file mode 100644 index 00000000..61e7e3fc --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/tagged_template.re.txt @@ -0,0 +1,1967 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; + +module MyTypes = { + type query; +}; +module MyQuery1a: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: MyTypes.query; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: MyTypes.query = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery1b: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery3: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery4: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + }; + `Assoc([("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gatsby\")`\n fragment ListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ]); + }; + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module MyQuery5: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query MyQuery5 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + ListFragment.toJson(ListFragment.serialize(value)); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery6: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gatsby\")`\n query MyQuery6 {\n lists {\n ...ListFragment\n }\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + ListFragment.toJson(ListFragment.serialize(value)); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQuery7: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query MyQuery7 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + ListFragment.unsafe_fromJson(value), + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let lists = { + let value = (value: t).lists; + ListFragment.toJson(ListFragment.serialize(value)); + }; + `Assoc([("lists", lists)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module ListFragment8: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: int; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment8], Raw.t) => t; + let verifyName: [ | `ListFragment8] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + [@bs.module "apollo-client"] external graphql: array(string) => int = "gql"; + let query = + graphql([| + "fragment ListFragment8 on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n", + |]); + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => + switch (value) { + | `Null => None + | value => + Some(Graphql_ppx_runtime.Json.to_string(value)) + }, + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + nullableOfNonNullable: { + let value = + Graphql_ppx_runtime.Json.member("nullableOfNonNullable", value); + switch (value) { + | `Null => None + | value => + Some( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ) + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + `List(value |> Array.map(value => `String(value)) |> Array.to_list) + | None => `Null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + `List( + value + |> Array.map(value => + switch (value) { + | Some(value) => `String(value) + | None => `Null + } + ) + |> Array.to_list, + ) + | None => `Null + }; + }; + `Assoc([ + ("nullableOfNullable", nullableOfNullable), + ("nullableOfNonNullable", nullableOfNonNullable), + ]); + }; + let verifyArgsAndParse = + (~fragmentName as _ListFragment8: [ | `ListFragment8], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment8 => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; +}; +module MyQuery8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: int; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + [@bs.module "apollo-client"] + external graphql: (array(string), int) => int = "gql"; + let query = + graphql( + [| + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "", + |], + ListFragment8.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = Graphql_ppx_runtime.Json.member("lists", value); + + ListFragment8.verifyArgsAndParse( + ~fragmentName=`ListFragment8, + ListFragment8.unsafe_fromJson(value), + ); + }, + variousScalars: { + let value = + Graphql_ppx_runtime.Json.member("variousScalars", value); + ( + { + nullableString: { + let value = + Graphql_ppx_runtime.Json.member("nullableString", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + string: { + let value = Graphql_ppx_runtime.Json.member("string", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + nullableInt: { + let value = + Graphql_ppx_runtime.Json.member("nullableInt", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_int(value)) + }; + }, + int: { + let value = Graphql_ppx_runtime.Json.member("int", value); + Graphql_ppx_runtime.Json.to_int(value); + }, + nullableFloat: { + let value = + Graphql_ppx_runtime.Json.member("nullableFloat", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_float(value)) + }; + }, + float: { + let value = Graphql_ppx_runtime.Json.member("float", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + nullableBoolean: { + let value = + Graphql_ppx_runtime.Json.member("nullableBoolean", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_bool(value)) + }; + }, + boolean: { + let value = Graphql_ppx_runtime.Json.member("boolean", value); + Graphql_ppx_runtime.Json.to_bool(value); + }, + nullableID: { + let value = + Graphql_ppx_runtime.Json.member("nullableID", value); + switch (value) { + | `Null => None + | value => Some(Graphql_ppx_runtime.Json.to_string(value)) + }; + }, + id: { + let value = Graphql_ppx_runtime.Json.member("id", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let variousScalars = { + let value = (value: t).variousScalars; + let id = { + let value = (value: t_variousScalars).id; + `String(value); + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + `Bool(value); + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => `Bool(value) + | None => `Null + }; + } + and float = { + let value = (value: t_variousScalars).float; + `Float(value); + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => `Float(value) + | None => `Null + }; + } + and int = { + let value = (value: t_variousScalars).int; + `Int(value); + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => `Int(value) + | None => `Null + }; + } + and string = { + let value = (value: t_variousScalars).string; + `String(value); + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => `String(value) + | None => `Null + }; + }; + `Assoc([ + ("nullableString", nullableString), + ("string", string), + ("nullableInt", nullableInt), + ("int", int), + ("nullableFloat", nullableFloat), + ("float", float), + ("nullableBoolean", nullableBoolean), + ("boolean", boolean), + ("nullableID", nullableID), + ("id", id), + ]); + } + and lists = { + let value = (value: t).lists; + ListFragment8.toJson(ListFragment8.serialize(value)); + }; + `Assoc([("lists", lists), ("variousScalars", variousScalars)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/typename.re.txt b/snapshot_tests/operations/expected/native/generate/typename.re.txt new file mode 100644 index 00000000..810ab097 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/typename.re.txt @@ -0,0 +1,185 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = Graphql_ppx_runtime.Json.member("first", value); + ( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + inner: { + let value = Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member( + "__typename", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + inner: { + let value = + Graphql_ppx_runtime.Json.member("inner", value); + switch (value) { + | `Null => None + | value => + Some( + { + __typename: { + let value = + Graphql_ppx_runtime.Json.member( + "__typename", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + field: { + let value = + Graphql_ppx_runtime.Json.member( + "field", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_first_inner_inner, + ) + }; + }, + }: t_first_inner, + ) + }; + }, + }: t_first + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let first = { + let value = (value: t).first; + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + let field = { + let value = (value: t_first_inner_inner).field; + `String(value); + } + and __typename = { + let value = (value: t_first_inner_inner).__typename; + `String(value); + }; + `Assoc([("__typename", __typename), ("field", field)]); + | None => `Null + }; + } + and __typename = { + let value = (value: t_first_inner).__typename; + `String(value); + }; + `Assoc([("__typename", __typename), ("inner", inner)]); + | None => `Null + }; + } + and __typename = { + let value = (value: t_first).__typename; + `String(value); + }; + `Assoc([("__typename", __typename), ("inner", inner)]); + }; + `Assoc([("first", first)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/union.re.txt b/snapshot_tests/operations/expected/native/generate/union.re.txt new file mode 100644 index 00000000..7dc39b5a --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/union.re.txt @@ -0,0 +1,566 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_dogOrHuman_Human, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `Human(value) => + let name = { + let value = (value: t_dogOrHuman_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module MyQueryNoError: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_dogOrHuman_Human, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `Human(value) => + let name = { + let value = (value: t_dogOrHuman_Human).name; + `String(value); + }; + `Assoc([("__typename", `String("Human")), ("name", name)]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; + +type named = { + name: string, + __typename: string, +}; +module NamedQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \n__typename \n}\n\n...on Human {\nname \n__typename \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: named, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + __typename: { + let value = + Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: named, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let __typename = { + let value = (value: named).__typename; + `String(value); + } + and name = { + let value = (value: named).name; + `String(value); + }; + `Assoc([("name", name), ("__typename", `String("Dog"))]); + | `Human(value) => + let __typename = { + let value = (value: named).__typename; + `String(value); + } + and name = { + let value = (value: named).name; + `String(value); + }; + `Assoc([("name", name), ("__typename", `String("Human"))]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; +module NamedSpread = { + module DogFields: { + [@ocaml.warning "-32-30"]; + module Raw: {type t;}; + type t = named; + type nonrec t_Dog = named; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => named; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: named => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFields], Raw.t) => t; + let verifyName: [ | `DogFields] => unit; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + }; + type t = named; + type nonrec t_Dog = named; + let query = "fragment DogFields on Dog {\nname \n__typename \n}\n"; + let parse: Raw.t => named = + (value) => ( + { + name: { + let value = Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + __typename: { + let value = Graphql_ppx_runtime.Json.member("__typename", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: named + ); + let serialize: named => Raw.t = + value => { + let __typename = { + let value = (value: named).__typename; + `String(value); + } + and name = { + let value = (value: named).name; + `String(value); + }; + `Assoc([("name", name), ("__typename", __typename)]); + }; + let verifyArgsAndParse = + (~fragmentName as _DogFields: [ | `DogFields], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFields => (); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + }; + module DogOrHuman: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query dogOrHuman {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFields \n}\n\n}\n\n}\n" + ++ DogFields.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + DogFields.verifyArgsAndParse( + ~fragmentName=`DogFields, + DogFields.unsafe_fromJson(value), + ), + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + Graphql_ppx_runtime.assign_typename( + DogFields.toJson(DogFields.serialize(value)), + "Dog", + ) + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = + "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/native/generate/unionPartial.re.txt b/snapshot_tests/operations/expected/native/generate/unionPartial.re.txt new file mode 100644 index 00000000..5871cbc0 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/unionPartial.re.txt @@ -0,0 +1,129 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = Graphql_ppx_runtime.Json.member("dogOrHuman", value); + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member("barkVolume", value); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_dogOrHuman_Dog, + ) + | _ => `FutureAddedValue(value) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + `Float(value); + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + `String(value); + }; + `Assoc([ + ("__typename", `String("Dog")), + ("name", name), + ("barkVolume", barkVolume), + ]); + | `FutureAddedValue(value) => value + }; + }; + `Assoc([("dogOrHuman", dogOrHuman)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/native/generate/variant.re.txt b/snapshot_tests/operations/expected/native/generate/variant.re.txt new file mode 100644 index 00000000..229c8ba8 --- /dev/null +++ b/snapshot_tests/operations/expected/native/generate/variant.re.txt @@ -0,0 +1,256 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type t_variables; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = Graphql_ppx_runtime.Json.t; + type t_variables = Graphql_ppx_runtime.Json.t; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Graphql_ppx_runtime.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + let query = "mutation {\nmutationForVariant {\nbaseType \nbaseTypeList \ndog {\nname \nbarkVolume \n}\n\nhuman {\nname \n}\n\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationForVariant: { + let value = + Graphql_ppx_runtime.Json.member("mutationForVariant", value); + switch (value) { + | `Null => + raise( + Failure( + "graphql-ppx: " + ++ "Expected type " + ++ "VariantTestResult" + ++ " to be an object", + ), + ) + | value => + let temp = Graphql_ppx_runtime.Json.member("baseType", value); + switch (temp) { + | `Null => + let temp = + Graphql_ppx_runtime.Json.member("baseTypeList", value); + switch (temp) { + | `Null => + let temp = Graphql_ppx_runtime.Json.member("dog", value); + switch (temp) { + | `Null => + let temp = Graphql_ppx_runtime.Json.member("human", value); + switch (temp) { + | `Null => + let temp = + Graphql_ppx_runtime.Json.member("dogOrHuman", value); + switch (temp) { + | `Null => + raise( + Failure( + "graphql-ppx: " + ++ "All fields on variant selection set on type " + ++ "VariantTestResult" + ++ " were null", + ), + ) + | _ => + let value = temp; + `DogOrHuman( + { + let typename: string = + value + |> Graphql_ppx_runtime.Json.member("__typename") + |> Graphql_ppx_runtime.Json.to_string; + ( + switch (typename) { + | "Dog" => + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member( + "name", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member( + "barkVolume", + value, + ); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_mutationForVariant_dogOrHuman_Dog, + ) + | "Human" => + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member( + "name", + value, + ); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_mutationForVariant_dogOrHuman_Human, + ) + | _ => `FutureAddedValue(value) + }: t_mutationForVariant_dogOrHuman + ); + }, + ); + }; + | _ => + let value = temp; + `Human( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + }: t_mutationForVariant_human, + ); + }; + | _ => + let value = temp; + `Dog( + { + name: { + let value = + Graphql_ppx_runtime.Json.member("name", value); + Graphql_ppx_runtime.Json.to_string(value); + }, + barkVolume: { + let value = + Graphql_ppx_runtime.Json.member( + "barkVolume", + value, + ); + Graphql_ppx_runtime.Json.to_float(value); + }, + }: t_mutationForVariant_dog, + ); + }; + | _ => + let value = temp; + `BaseTypeList( + switch (value) { + | `List(json_list) => + List.map( + value => Graphql_ppx_runtime.Json.to_string(value), + json_list, + ) + |> Array.of_list + | _ => [||] + }, + ); + }; + | _ => + let value = temp; + `BaseType(Graphql_ppx_runtime.Json.to_string(value)); + }; + }; + }, + }: t + ); + let serialize: t => Raw.t = + value => { + let mutationForVariant = { + let value = (value: t).mutationForVariant; + let _temp = value; + `Null; + }; + `Assoc([("mutationForVariant", mutationForVariant)]); + }; + let serializeVariables = () => `Null; + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Graphql_ppx_runtime.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Graphql_ppx_runtime.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Graphql_ppx_runtime.Json.t = + "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/compile/argNamedQuery.re.txt b/snapshot_tests/operations/expected/records/compile/argNamedQuery.re.txt new file mode 100644 index 00000000..e4785aca --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/argNamedQuery.re.txt @@ -0,0 +1,120 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables(inp) { + return { + query: inp.query + }; +} + +function makeVariables(query, param) { + return { + query: query + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$1(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$1(inp) { + return { + query: inp.query + }; +} + +function makeVariables$1(query, param) { + return { + query: query + }; +} + +var Query1 = { + Raw: Raw$1, + query: "query Query1($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$2(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$2(inp) { + return { + query: inp.query + }; +} + +function makeVariables$2(query, param) { + return { + query: query + }; +} + +var Query2 = { + Raw: Raw$2, + query: "query Query2($query: Int!) {\nargNamedQuery(query: $query) \n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2 +}; + +var MultipleQueryWithSameVarName = { + Query1: Query1, + Query2: Query2 +}; + +exports.MyQuery = MyQuery; +exports.MultipleQueryWithSameVarName = MultipleQueryWithSameVarName; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/comment.re.txt b/snapshot_tests/operations/expected/records/compile/comment.re.txt new file mode 100644 index 00000000..3580ca2c --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/comment.re.txt @@ -0,0 +1,101 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/customDecoder.re.txt b/snapshot_tests/operations/expected/records/compile/customDecoder.re.txt new file mode 100644 index 00000000..c8c78156 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/customDecoder.re.txt @@ -0,0 +1,80 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_format = require("rescript/lib/js/caml_format.js"); + +function parse(prim) { + return String(prim); +} + +var serialize = Caml_format.caml_int_of_string; + +var StringOfInt = { + parse: parse, + serialize: serialize +}; + +var parse$1 = Caml_format.caml_int_of_string; + +function serialize$1(prim) { + return String(prim); +} + +var IntOfString = { + parse: parse$1, + serialize: serialize$1 +}; + +var Raw = {}; + +function parse$2(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + string: Caml_format.caml_int_of_string(value$1.string), + int: String(value$1.int) + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = Caml_format.caml_int_of_string(value$2); + var value$4 = value$1.string; + var value$5 = String(value$4); + var variousScalars = { + string: value$5, + int: value$3 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\nstring \nint \n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.StringOfInt = StringOfInt; +exports.IntOfString = IntOfString; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/customScalars.re.txt b/snapshot_tests/operations/expected/records/compile/customScalars.re.txt new file mode 100644 index 00000000..418f8d4e --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/customScalars.re.txt @@ -0,0 +1,58 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nullable; + return { + customScalarField: { + nullable: !(value$2 == null) ? Caml_option.some(value$2) : undefined, + nonNullable: value$1.nonNullable + } + }; +} + +function serialize(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nonNullable; + var value$3 = value$1.nullable; + var nullable = value$3 !== undefined ? Caml_option.valFromOption(value$3) : null; + var customScalarField = { + nullable: nullable, + nonNullable: value$2 + }; + return { + customScalarField: customScalarField + }; +} + +function serializeVariables(inp) { + var a = inp.opt; + return { + opt: a !== undefined ? Caml_option.valFromOption(a) : undefined, + req: inp.req + }; +} + +function makeVariables(opt, req, param) { + return { + opt: opt, + req: req + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($opt: CustomScalar, $req: CustomScalar!) {\ncustomScalarField(argOptional: $opt, argRequired: $req) {\nnullable \nnonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/customTypes.re.txt b/snapshot_tests/operations/expected/records/compile/customTypes.re.txt new file mode 100644 index 00000000..c195139f --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/customTypes.re.txt @@ -0,0 +1,161 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +function parse(json) { + var match = Js_json.decodeString(json); + if (match === undefined) { + return /* Red */0; + } + switch (match) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var Color = { + parse: parse, + serialize: serialize +}; + +function parse$1(color) { + if (color === undefined) { + return /* Red */0; + } + switch (color) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize$1(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var NullableString = { + parse: parse$1, + serialize: serialize$1 +}; + +function parse$2(json) { + var str = Js_json.decodeString(json); + if (str !== undefined) { + return new Date(str); + } else { + return new Date(); + } +} + +function serialize$2(date) { + return date.toISOString(); +} + +var DateTime = { + parse: parse$2, + serialize: serialize$2 +}; + +var Raw = {}; + +function parse$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.futureTime; + var value$3 = value$1.nullableColor; + var value$4 = value$1.nullableString; + return { + customFields: { + currentTime: parse$2(value$1.currentTime), + favoriteColor: parse(value$1.favoriteColor), + futureTime: !(value$2 == null) ? Caml_option.some(parse$2(value$2)) : undefined, + nullableColor: !(value$3 == null) ? parse(value$3) : undefined, + nullableString: parse$1(!(value$4 == null) ? value$4 : undefined) + } + }; +} + +function serialize$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.nullableString; + var value$3 = serialize$1(value$2); + var nullableString = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.nullableColor; + var nullableColor = value$4 !== undefined ? serialize(value$4) : null; + var value$5 = value$1.futureTime; + var futureTime = value$5 !== undefined ? Caml_option.valFromOption(value$5).toISOString() : null; + var value$6 = value$1.favoriteColor; + var value$7 = serialize(value$6); + var value$8 = value$1.currentTime; + var value$9 = value$8.toISOString(); + var customFields = { + currentTime: value$9, + favoriteColor: value$7, + futureTime: futureTime, + nullableColor: nullableColor, + nullableString: nullableString + }; + return { + customFields: customFields + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ncustomFields {\ncurrentTime \nfavoriteColor \nfutureTime \nnullableColor \nnullableString \n}\n\n}\n", + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Color = Color; +exports.NullableString = NullableString; +exports.DateTime = DateTime; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/records/compile/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..7fdcf6a9 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,43 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + defaultObjectValueOnScalar: value.defaultObjectValueOnScalar + }; +} + +function serialize(value) { + var value$1 = value.defaultObjectValueOnScalar; + return { + defaultObjectValueOnScalar: value$1 + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndefaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/enumInput.re.txt b/snapshot_tests/operations/expected/records/compile/enumInput.re.txt new file mode 100644 index 00000000..efbda819 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/enumInput.re.txt @@ -0,0 +1,45 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + enumInput: value.enumInput + }; +} + +function serialize(value) { + var value$1 = value.enumInput; + return { + enumInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.arg; + return { + arg: a === "THIRD" ? "THIRD" : ( + a === "SECOND" ? "SECOND" : "FIRST" + ) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: SampleField!) {\nenumInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/records/compile/ewert_reproduction.re.txt new file mode 100644 index 00000000..dde9b827 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/ewert_reproduction.re.txt @@ -0,0 +1,53 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.user; + var value$2 = value$1.firstname; + return { + user: { + id: value$1.id, + firstname: !(value$2 == null) ? value$2 : undefined, + lastname: value$1.lastname + } + }; +} + +function serialize(value) { + var value$1 = value.user; + var value$2 = value$1.lastname; + var value$3 = value$1.firstname; + var firstname = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.id; + var user = { + id: value$4, + firstname: firstname, + lastname: value$2 + }; + return { + user: user + }; +} + +function verifyArgsAndParse(_userId, _UserData, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var UserData = { + Raw: Raw, + query: "fragment UserData on Workspace {\nuser(id: $userId) {\nid \nfirstname \nlastname \n}\n\n}\n", + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.UserData = UserData; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/explicit_object_record.re.txt b/snapshot_tests/operations/expected/records/compile/explicit_object_record.re.txt new file mode 100644 index 00000000..59d7c6bb --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/explicit_object_record.re.txt @@ -0,0 +1,189 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var RecordsQuery = { + Raw: Raw, + query: "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ObjectsQuery = { + Raw: Raw$1, + query: "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.RecordsQuery = RecordsQuery; +exports.ObjectsQuery = ObjectsQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/extensions.re.txt b/snapshot_tests/operations/expected/records/compile/extensions.re.txt new file mode 100644 index 00000000..91041923 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/extensions.re.txt @@ -0,0 +1,235 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function ExtendQuery(M) { + var use = function (param) { + + }; + return { + use: use + }; +} + +var Parent = { + ExtendQuery: ExtendQuery +}; + +var Raw = {}; + +var query = "query Bla {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Bla_inner = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +function use(param) { + +} + +var Bla = { + Bla_inner: Bla_inner, + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables, + use: use +}; + +var Raw$1 = {}; + +var query$1 = "query Bla2 {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var Inner = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +function use$1(param) { + +} + +exports.Parent = Parent; +exports.Bla = Bla; +exports.Inner = Inner; +exports.Raw = Raw$1; +exports.query = query$1; +exports.parse = parse$1; +exports.serialize = serialize$1; +exports.serializeVariables = serializeVariables$1; +exports.makeVariables = makeVariables$1; +exports.makeDefaultVariables = makeDefaultVariables$1; +exports.use = use$1; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/records/compile/fragmentDefinition.re.txt new file mode 100644 index 00000000..910a8f2b --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/fragmentDefinition.re.txt @@ -0,0 +1,426 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment ListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.nullableOfNonNullable; + return { + nullableOfNonNullable: !(value$1 == null) ? value$1.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + return { + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: "fragment Another on Lists {\nnullableOfNonNullable \n}\n", + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$1 = "fragment FragmentWithArgs on Lists {\nlistWithArg(arg1: $arg1) \n}\n"; + +function parse$2(value) { + var value$1 = value.listWithArg; + return { + listWithArg: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize$2(value) { + var value$1 = value.listWithArg; + var listWithArg = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + listWithArg: listWithArg + }; +} + +function verifyArgsAndParse$2(_arg1, _FragmentWithArgs, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var FragmentWithArgs = { + Raw: Raw$2, + query: query$1, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +var Raw$3 = {}; + +var query$2 = "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$3(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$3(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$3(_InlineListFragment, value) { + return parse$3(value); +} + +function verifyName$3(param) { + +} + +var InlineListFragment = { + Raw: Raw$3, + query: query$2, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse$3, + verifyName: verifyName$3 +}; + +var Raw$4 = {}; + +function parse$4(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$4(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$4(_InlineListFragment, value) { + return parse$4(value); +} + +function verifyName$4(param) { + +} + +var Wrapper = { + Raw: Raw$4, + query: "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n", + parse: parse$4, + serialize: serialize$4, + verifyArgsAndParse: verifyArgsAndParse$4, + verifyName: verifyName$4 +}; + +var Raw$5 = {}; + +var query$3 = "query MyQuery($arg1: String) {\nl1: lists {\n...ListFragment \n}\n\nl2: lists {\n...ListFragment \n...ListFragment \n}\n\nl3: lists {\nnullableOfNullable \n...ListFragment \n...ListFragment \n}\n\nl4: lists {\nnullableOfNullable \n...InlineListFragment \n}\n\nl5: lists {\n...FragmentWithArgs \n}\n\n}\nfragment FragmentWithArgs on Lists {\nlistWithArg(arg1: $arg1) \n}\nfragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\nfragment ListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$5(value) { + var value$1 = value.l2; + var value$2 = value.l3; + var value$3 = value$2["nullableOfNullable"]; + var value$4 = value.l4; + var value$5 = value$4["nullableOfNullable"]; + return { + l1: parse(value.l1), + l2: { + frag1: parse(value$1), + frag2: parse(value$1) + }, + l3: { + nullableOfNullable: !(value$3 == null) ? value$3.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + frag1: parse(value$2), + frag2: parse(value$2) + }, + l4: { + nullableOfNullable: !(value$5 == null) ? value$5.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + inlineListFragment: parse$3(value$4) + }, + l5: parse$2(value.l5) + }; +} + +function serialize$5(value) { + var value$1 = value.l5; + var l5 = serialize$2(value$1); + var value$2 = value.l4; + var value$3 = value$2.nullableOfNullable; + var l4 = [serialize$3(value$2.inlineListFragment)].reduce(deepMerge, { + nullableOfNullable: value$3 !== undefined ? value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); + var value$4 = value.l3; + var value$5 = value$4.nullableOfNullable; + var l3 = [ + serialize(value$4.frag1), + serialize(value$4.frag2) + ].reduce(deepMerge, { + nullableOfNullable: value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); + var value$6 = value.l2; + var l2 = [ + serialize(value$6.frag1), + serialize(value$6.frag2) + ].reduce(deepMerge, (function (prim) { + return {}; + })); + var value$7 = value.l1; + var l1 = serialize(value$7); + return { + l1: l1, + l2: l2, + l3: l3, + l4: l4, + l5: l5 + }; +} + +function serializeVariables(inp) { + var a = inp.arg1; + return { + arg1: a !== undefined ? a : undefined + }; +} + +function makeVariables(arg1, param) { + return { + arg1: arg1 + }; +} + +function makeDefaultVariables(param) { + return { + arg1: undefined + }; +} + +var MyQuery = { + Raw: Raw$5, + query: query$3, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$6 = {}; + +var query$4 = "query {\nlists {\n...ListFragment \n}\n\n}\nfragment ListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + +function parse$6(value) { + return { + lists: parse(value.lists) + }; +} + +function serialize$6(value) { + var value$1 = value.lists; + var lists = serialize(value$1); + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery2 = { + Raw: Raw$6, + query: query$4, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +exports.FragmentWithArgs = FragmentWithArgs; +exports.InlineListFragment = InlineListFragment; +exports.Wrapper = Wrapper; +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/records/compile/fragmentInFragment.re.txt new file mode 100644 index 00000000..d1a0b850 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/fragmentInFragment.re.txt @@ -0,0 +1,110 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment ListFragment on Lists {\nnullableOfNullable \n}\n"; + +function parse(value) { + var value$1 = value.nullableOfNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNullable; + var nullableOfNullable = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment Another on Lists {\nnullableOfNullable \n...ListFragment \n}\nfragment ListFragment on Lists {\nnullableOfNullable \n}\n"; + +function parse$1(value) { + var value$1 = value["nullableOfNullable"]; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + listFragment: parse(value) + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNullable; + return [serialize(value.listFragment)].reduce(deepMerge, { + nullableOfNullable: value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/records/compile/fragmentOnInterface.re.txt new file mode 100644 index 00000000..43022bf5 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/fragmentOnInterface.re.txt @@ -0,0 +1,125 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = "fragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse(value) { + return { + id: value.id + }; +} + +function serialize(value) { + var value$1 = value.id; + return { + id: value$1 + }; +} + +function verifyArgsAndParse(_InterfaceFragment, value) { + return { + id: value.id + }; +} + +function verifyName(param) { + +} + +var InterfaceFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment AnotherFragment on User {\n__typename\nid \n...InterfaceFragment \n}\nfragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse$1(value) { + return { + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$1(value) { + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + id: value.id + }); +} + +function verifyArgsAndParse$1(_AnotherFragment, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var AnotherFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = "fragment AnonUser on AnonymousUser {\nid \n...InterfaceFragment \n}\nfragment InterfaceFragment on User {\n__typename\nid \n}\n"; + +function parse$2(value) { + return { + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$2(value) { + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + id: value.id + }); +} + +function verifyArgsAndParse$2(_AnonUser, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var AnonUser = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.InterfaceFragment = InterfaceFragment; +exports.AnotherFragment = AnotherFragment; +exports.AnonUser = AnonUser; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/fragmentUnion.re.txt b/snapshot_tests/operations/expected/records/compile/fragmentUnion.re.txt new file mode 100644 index 00000000..1de1daab --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/fragmentUnion.re.txt @@ -0,0 +1,156 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var assign_typename = ((obj, typename) => { obj.__typename = typename; return obj }); + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +var query = "fragment DogFragment on Dog {\nname \n}\n"; + +function parse(value) { + return { + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse(_DogFragment, value) { + return { + name: value.name + }; +} + +function verifyName(param) { + +} + +var DogFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "fragment HumanFragment on Human {\nname \n}\n"; + +function parse$1(value) { + return { + name: value.name + }; +} + +function serialize$1(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse$1(_HumanFragment, value) { + return { + name: value.name + }; +} + +function verifyName$1(param) { + +} + +var HumanFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = "query MyQuery {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n...on Human {\n...HumanFragment \n}\n\n}\n\n}\nfragment DogFragment on Dog {\nname \n}\nfragment HumanFragment on Human {\nname \n}\n"; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman = variant === "FutureAddedValue" ? value$1.VAL : ( + variant === "Dog" ? assign_typename(serialize(value$1.VAL), "Dog") : assign_typename(serialize$1(value$1.VAL), "Human") + ); + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.DogFragment = DogFragment; +exports.HumanFragment = HumanFragment; +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/records/compile/fragmentvariableinput.re.txt new file mode 100644 index 00000000..99700995 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/fragmentvariableinput.re.txt @@ -0,0 +1,55 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.reposts; + return { + reposts: value$1.map(function (value) { + if (!(value == null)) { + return { + id: value.id + }; + } + + }) + }; +} + +function serialize(value) { + var value$1 = value.reposts; + var reposts = value$1.map(function (value) { + if (value === undefined) { + return null; + } + var value$1 = value.id; + return { + id: value$1 + }; + }); + return { + reposts: reposts + }; +} + +function verifyArgsAndParse(_name, _test, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var Test = { + Raw: Raw, + query: "fragment test on Post {\nreposts(arg: {name: $name}) {\nid \n}\n\n}\n", + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.Test = Test; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/hasuraRepro.re.txt b/snapshot_tests/operations/expected/records/compile/hasuraRepro.re.txt new file mode 100644 index 00000000..d2dca06f --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/hasuraRepro.re.txt @@ -0,0 +1,97 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = "fragment Dog on Dog {\nname \n}\n"; + +function parse(value) { + return { + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse(_Dog, value) { + return { + name: value.name + }; +} + +function verifyName(param) { + +} + +var Dog = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = "query HasuraRepro($blockNumber: Int, $type: String) {\nhasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n...Dog \n}\n\n}\nfragment Dog on Dog {\nname \n}\n"; + +function parse$1(value) { + var value$1 = value.hasuraRepro; + return { + hasuraRepro: { + name: value$1.name + } + }; +} + +function serialize$1(value) { + var value$1 = value.hasuraRepro; + var hasuraRepro = serialize(value$1); + return { + hasuraRepro: hasuraRepro + }; +} + +function serializeVariables(inp) { + var a = inp.blockNumber; + var a$1 = inp.type; + return { + blockNumber: a !== undefined ? a : undefined, + type: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(blockNumber, type_, param) { + return { + blockNumber: blockNumber, + type: type_ + }; +} + +function makeDefaultVariables(param) { + return { + blockNumber: undefined, + type: undefined + }; +} + +var HasuraRepro = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Dog = Dog; +exports.HasuraRepro = HasuraRepro; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/interface.re.txt b/snapshot_tests/operations/expected/records/compile/interface.re.txt new file mode 100644 index 00000000..0da97079 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/interface.re.txt @@ -0,0 +1,383 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + switch (typename) { + case "AdminUser" : + return { + NAME: "AdminUser", + VAL: { + id: value.id, + name: value.name + } + }; + case "AnonymousUser" : + return { + NAME: "AnonymousUser", + VAL: { + id: value.id, + anonymousId: value.anonymousId + } + }; + default: + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var variant = value.NAME; + if (variant === "UnspecifiedFragment") { + return {}; + } + if (variant === "AdminUser") { + var value$1 = value.VAL; + var value$2 = value$1.name; + var value$3 = value$1.id; + return { + __typename: "AdminUser", + id: value$3, + name: value$2 + }; + } + var value$4 = value.VAL; + var value$5 = value$4.anonymousId; + var value$6 = value$4.id; + return { + __typename: "AnonymousUser", + id: value$6, + anonymousId: value$5 + }; + }); + return { + users: users + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var QueryWithOnlyFragments = { + Raw: Raw, + query: "query {\nusers {\n__typename\n...on AdminUser {\nid \nname \n}\n\n...on AnonymousUser {\nid \nanonymousId \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + if (typename === "AdminUser") { + return { + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }; + } else { + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize$1(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + if (value.NAME !== "AdminUser") { + return {}; + } + var value$1 = value.VAL.id; + return { + __typename: "AdminUser", + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var QueryWithTypename = { + Raw: Raw$1, + query: "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp; + switch (typename) { + case "AdminUser" : + tmp = { + NAME: "AdminUser", + VAL: { + name: value.name + } + }; + break; + case "AnonymousUser" : + tmp = { + NAME: "AnonymousUser", + VAL: { + anonymousId: value.anonymousId + } + }; + break; + default: + tmp = { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + return { + fragment: tmp, + id: value["id"] + }; + }) + }; +} + +function serialize$2(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.fragment; + var variant = value$1.NAME; + var tmp; + if (variant === "UnspecifiedFragment") { + tmp = {}; + } else if (variant === "AdminUser") { + var value$2 = value$1.VAL.name; + tmp = { + __typename: "AdminUser", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.anonymousId; + tmp = { + __typename: "AnonymousUser", + anonymousId: value$3 + }; + } + return [tmp].reduce(deepMerge, { + id: value.id + }); + }); + return { + users: users + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var QueryWithMixedFragments = { + Raw: Raw$2, + query: "query {\nusers {\n__typename\nid \n...on AdminUser {\nname \n}\n\n...on AnonymousUser {\nanonymousId \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +function parse$3(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp = typename === "AdminUser" ? ({ + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }) : ({ + NAME: "UnspecifiedFragment", + VAL: typename + }); + return { + fragment: tmp, + __typename: value["__typename"], + id: value["id"] + }; + }) + }; +} + +function serialize$3(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + var value$2 = value.__typename; + var value$3 = value.fragment; + var tmp; + if (value$3.NAME === "AdminUser") { + var value$4 = value$3.VAL.id; + tmp = { + __typename: "AdminUser", + id: value$4 + }; + } else { + tmp = {}; + } + return [tmp].reduce(deepMerge, { + __typename: value$2, + id: value$1 + }); + }); + return { + users: users + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MixedQueryWithTypename = { + Raw: Raw$3, + query: "query {\nusers {\n__typename\nid \n__typename \n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n", + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +function parse$4(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + return { + id: value.id + }; + }) + }; +} + +function serialize$4(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + return { + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var QueryWithoutFragments = { + Raw: Raw$4, + query: "query {\nusers {\n__typename\nid \n}\n\n}\n", + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.QueryWithOnlyFragments = QueryWithOnlyFragments; +exports.QueryWithTypename = QueryWithTypename; +exports.QueryWithMixedFragments = QueryWithMixedFragments; +exports.MixedQueryWithTypename = MixedQueryWithTypename; +exports.QueryWithoutFragments = QueryWithoutFragments; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/lists.re.txt b/snapshot_tests/operations/expected/records/compile/lists.re.txt new file mode 100644 index 00000000..069b2209 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/lists.re.txt @@ -0,0 +1,97 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/listsArgs.re.txt b/snapshot_tests/operations/expected/records/compile/listsArgs.re.txt new file mode 100644 index 00000000..e7f28a51 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/listsArgs.re.txt @@ -0,0 +1,66 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function makeVariables(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\nlistsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/listsInput.re.txt b/snapshot_tests/operations/expected/records/compile/listsInput.re.txt new file mode 100644 index 00000000..d641f996 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/listsInput.re.txt @@ -0,0 +1,80 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeInputObjectListsInput(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectListsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectListsInput(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: ListsInput!) {\nlistsInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectListsInput: serializeInputObjectListsInput, + makeVariables: makeVariables, + makeInputObjectListsInput: makeInputObjectListsInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/module_type.re.txt b/snapshot_tests/operations/expected/records/compile/module_type.re.txt new file mode 100644 index 00000000..fe9238ab --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/module_type.re.txt @@ -0,0 +1,106 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Curry = require("rescript/lib/js/curry.js"); + +var MyQuery = {}; + +var MyQuery2 = {}; + +function parse(nestedObject) { + return { + otherInner: nestedObject.inner + }; +} + +function serialize(t) { + return { + inner: t.otherInner + }; +} + +var VariousScalars = { + parse: parse, + serialize: serialize +}; + +var Raw = {}; + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: Curry._1(parse, { + inner: tmp + }) + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = Curry._1(serialize, value$1); + var value$3 = value$2.inner; + var inner; + if (value$3 !== undefined) { + var value$4 = value$3.inner; + var inner$1; + if (value$4 !== undefined) { + var value$5 = value$4.field; + inner$1 = { + field: value$5 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQueryRecursive = { + Raw: Raw, + query: "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +exports.MyQueryRecursive = MyQueryRecursive; +exports.VariousScalars = VariousScalars; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/mutation.re.txt b/snapshot_tests/operations/expected/records/compile/mutation.re.txt new file mode 100644 index 00000000..95bdc204 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/mutation.re.txt @@ -0,0 +1,102 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.value; + var value$3 = value$1.errors; + return { + mutationWithError: { + value: !(value$2 == null) ? ({ + stringField: value$2.stringField + }) : undefined, + errors: !(value$3 == null) ? value$3.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + field: tmp, + message: value.message + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.message; + var value$2 = value.field; + var field = typeof value$2 === "object" ? value$2.VAL : ( + value$2 === "THIRD" ? "THIRD" : ( + value$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + return { + field: field, + message: value$1 + }; + }) : null; + var value$3 = value$1.value; + var value$4; + if (value$3 !== undefined) { + var value$5 = value$3.stringField; + value$4 = { + stringField: value$5 + }; + } else { + value$4 = null; + } + var mutationWithError = { + value: value$4, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "mutation {\nmutationWithError {\nvalue {\nstringField \n}\n\nerrors {\nfield \nmessage \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/records/compile/mutationWithArgs.re.txt new file mode 100644 index 00000000..b0db8792 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/mutationWithArgs.re.txt @@ -0,0 +1,42 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/records/compile/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..b0db8792 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,42 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/nested.re.txt b/snapshot_tests/operations/expected/records/compile/nested.re.txt new file mode 100644 index 00000000..720ac97d --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/nested.re.txt @@ -0,0 +1,317 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + var value$4 = value.second; + var value$5 = value$4.inner; + var tmp$1; + if (value$5 == null) { + tmp$1 = undefined; + } else { + var value$6 = value$5.inner; + tmp$1 = { + inner: !(value$6 == null) ? ({ + f1: value$6.f1, + f2: value$6.f2 + }) : undefined + }; + } + var value$7 = value.let; + var value$8 = value$7.inner; + var tmp$2; + if (value$8 == null) { + tmp$2 = undefined; + } else { + var value$9 = value$8.inner; + tmp$2 = { + inner: !(value$9 == null) ? ({ + field: value$9.field + }) : undefined + }; + } + return { + first: { + inner: tmp + }, + second: { + inner: tmp$1 + }, + let: { + inner: tmp$2 + } + }; +} + +function serialize(value) { + var value$1 = value.let; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var let_ = { + inner: inner + }; + var value$5 = value.second; + var value$6 = value$5.inner; + var inner$2; + if (value$6 !== undefined) { + var value$7 = value$6.inner; + var inner$3; + if (value$7 !== undefined) { + var value$8 = value$7.f2; + var value$9 = value$7.f1; + inner$3 = { + f1: value$9, + f2: value$8 + }; + } else { + inner$3 = null; + } + inner$2 = { + inner: inner$3 + }; + } else { + inner$2 = null; + } + var second = { + inner: inner$2 + }; + var value$10 = value.first; + var value$11 = value$10.inner; + var inner$4; + if (value$11 !== undefined) { + var value$12 = value$11.inner; + var inner$5; + if (value$12 !== undefined) { + var value$13 = value$12.field; + inner$5 = { + field: value$13 + }; + } else { + inner$5 = null; + } + inner$4 = { + inner: inner$5 + }; + } else { + inner$4 = null; + } + var first = { + inner: inner$4 + }; + return { + first: first, + second: second, + let: let_ + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nfirst: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\nsecond: nestedObject {\ninner {\ninner {\nf1: field \nf2: field \n}\n\n}\n\n}\n\nlet: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + inner: tmp + } + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryWithSig = { + Raw: Raw$1, + query: "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Test = { + MyQueryWithSig: MyQueryWithSig +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + inner: tmp + } + }; +} + +function serialize$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQueryWithSigDirect = { + Raw: Raw$2, + query: "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +exports.MyQueryWithSigDirect = MyQueryWithSigDirect; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/records/compile/nonrecursiveInput.re.txt new file mode 100644 index 00000000..9b3a492a --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/nonrecursiveInput.re.txt @@ -0,0 +1,201 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + scalarsInput: value.scalarsInput, + more: value.more + }; +} + +function serialize$1(value) { + var value$1 = value.more; + var value$2 = value.scalarsInput; + return { + scalarsInput: value$2, + more: value$1 + }; +} + +function serializeInputObjectEmbeddedInput$1(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput$1(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput$1(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables$1(inp) { + return { + arg: serializeInputObjectNonrecursiveInput$1(inp.arg), + arg2: serializeInputObjectNonrecursiveInput$1(inp.arg2) + }; +} + +function makeVariables$1(arg, arg2, param) { + return { + arg: arg, + arg2: arg2 + }; +} + +function makeInputObjectNonrecursiveInput$1(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput$1(field, param) { + return { + field: field + }; +} + +var MyQuery2 = { + Raw: Raw$1, + query: "query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\nscalarsInput(arg: $arg) \nmore: scalarsInput(arg: $arg2) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput$1, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput$1, + makeVariables: makeVariables$1, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput$1, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/records/compile/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..5f25872b --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/omitFutureValueEnum.re.txt @@ -0,0 +1,247 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = typeof value$1 === "object" ? value$1.VAL : ( + value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/records/compile/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..d07454e5 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/omitFutureValueUnion.re.txt @@ -0,0 +1,254 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/records/compile/pokedexApolloMode.re.txt new file mode 100644 index 00000000..2a8d8150 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/pokedexApolloMode.re.txt @@ -0,0 +1,66 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\npokemon(name: \"Pikachu\") {\nid \nname \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/pokedexScalars.re.txt b/snapshot_tests/operations/expected/records/compile/pokedexScalars.re.txt new file mode 100644 index 00000000..818bfff3 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/pokedexScalars.re.txt @@ -0,0 +1,149 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQuery = { + Raw: Raw, + query: "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables$1(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables$1(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables$1(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQueryDirectives = { + Raw: Raw$1, + query: "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQueryDirectives = MyQueryDirectives; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/record.re.txt b/snapshot_tests/operations/expected/records/compile/record.re.txt new file mode 100644 index 00000000..77d03e50 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/record.re.txt @@ -0,0 +1,404 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + __typename: value$1.__typename, + string: value$1.string, + int: value$1.int + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = value$1.string; + var value$4 = value$1.__typename; + var variousScalars = { + __typename: value$4, + string: value$3, + int: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var variousScalars = { + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var OneFieldQuery = { + Raw: Raw$1, + query: "query {\nvariousScalars {\nnullableString \n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.__typename; + var variousScalars = { + __typename: value$3, + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var OneFieldQueryWithTypename = { + Raw: Raw$2, + query: "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query = "fragment Fragment on VariousScalars {\nstring \nint \n}\n"; + +function parse$3(value) { + return { + string: value.string, + int: value.int + }; +} + +function serialize$3(value) { + var value$1 = value.int; + var value$2 = value.string; + return { + string: value$2, + int: value$1 + }; +} + +function verifyArgsAndParse(_Fragment, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var Fragment = { + Raw: Raw$3, + query: query, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$1 = "query {\nvariousScalars {\n...Fragment \n}\n\n}\nfragment Fragment on VariousScalars {\nstring \nint \n}\n"; + +function parse$4(value) { + return { + variousScalars: parse$3(value.variousScalars) + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var variousScalars = serialize$3(value$1); + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var Untitled1 = { + Raw: Raw$4, + query: query$1, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var ExternalFragmentQuery = { + Fragment: Fragment, + Untitled1: Untitled1 +}; + +var Raw$5 = {}; + +function parse$5(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$5(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var InlineFragmentQuery = { + Raw: Raw$5, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n", + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$6 = {}; + +var query$2 = "fragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + +function parse$6(value) { + return { + __typename: value.__typename, + name: value.name, + barkVolume: value.barkVolume + }; +} + +function serialize$6(value) { + var value$1 = value.barkVolume; + var value$2 = value.name; + var value$3 = value.__typename; + return { + __typename: value$3, + name: value$2, + barkVolume: value$1 + }; +} + +function verifyArgsAndParse$1(_DogFragment, value) { + return parse$6(value); +} + +function verifyName$1(param) { + +} + +var DogFragment = { + Raw: Raw$6, + query: query$2, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$7 = {}; + +var query$3 = "query {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n}\n\n}\nfragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + +function parse$7(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$6(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$7(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$6(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var Untitled1$1 = { + Raw: Raw$7, + query: query$3, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var UnionExternalFragmentQuery = { + DogFragment: DogFragment, + Untitled1: Untitled1$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.OneFieldQuery = OneFieldQuery; +exports.OneFieldQueryWithTypename = OneFieldQueryWithTypename; +exports.ExternalFragmentQuery = ExternalFragmentQuery; +exports.InlineFragmentQuery = InlineFragmentQuery; +exports.UnionExternalFragmentQuery = UnionExternalFragmentQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/recursiveInput.re.txt b/snapshot_tests/operations/expected/records/compile/recursiveInput.re.txt new file mode 100644 index 00000000..0d3daa37 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/recursiveInput.re.txt @@ -0,0 +1,155 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + recursiveInput: value.recursiveInput + }; +} + +function serialize(value) { + var value$1 = value.recursiveInput; + return { + recursiveInput: value$1 + }; +} + +function serializeInputObjectRecursiveInput(inp) { + var a = inp.otherField; + var a$1 = inp.inner; + var a$2 = inp.enum; + return { + otherField: a !== undefined ? a : undefined, + inner: a$1 !== undefined ? serializeInputObjectRecursiveInput(a$1) : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectRecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectRecursiveInput(otherField, inner, $$enum, param) { + return { + otherField: otherField, + inner: inner, + enum: $$enum + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: RecursiveInput!) {\nrecursiveInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectRecursiveInput: serializeInputObjectRecursiveInput, + makeVariables: makeVariables, + makeInputObjectRecursiveInput: makeInputObjectRecursiveInput +}; + +var Raw$1 = {}; + +function parse$1(value) { + return { + recursiveRepro: value.recursiveRepro + }; +} + +function serialize$1(value) { + var value$1 = value.recursiveRepro; + return { + recursiveRepro: value$1 + }; +} + +function serializeInputObjectnested_type(inp) { + var a = inp.the_problem; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined + }; +} + +function serializeInputObjectthis_will_be_duplicated(inp) { + return { + id: inp.id + }; +} + +function serializeInputObjectproblem_input(inp) { + var a = inp.the_problem; + var a$1 = inp.b; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined, + b: a$1 !== undefined ? serializeInputObjectnested_type(a$1) : undefined + }; +} + +function serializeVariables$1(inp) { + return { + input: serializeInputObjectproblem_input(inp.input) + }; +} + +function makeVariables$1(input, param) { + return { + input: input + }; +} + +function makeInputObjectproblem_input(the_problem, b, param) { + return { + the_problem: the_problem, + b: b + }; +} + +function makeInputObjectthis_will_be_duplicated(id, param) { + return { + id: id + }; +} + +function makeInputObjectnested_type(the_problem, param) { + return { + the_problem: the_problem + }; +} + +var Test = { + Raw: Raw$1, + query: "query Test($input: problem_input!) {\nrecursiveRepro(input: $input) \n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectproblem_input: serializeInputObjectproblem_input, + serializeInputObjectthis_will_be_duplicated: serializeInputObjectthis_will_be_duplicated, + serializeInputObjectnested_type: serializeInputObjectnested_type, + makeVariables: makeVariables$1, + makeInputObjectproblem_input: makeInputObjectproblem_input, + makeInputObjectthis_will_be_duplicated: makeInputObjectthis_will_be_duplicated, + makeInputObjectnested_type: makeInputObjectnested_type +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/scalars.re.txt b/snapshot_tests/operations/expected/records/compile/scalars.re.txt new file mode 100644 index 00000000..64c30350 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/scalars.re.txt @@ -0,0 +1,87 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/scalarsArgs.re.txt b/snapshot_tests/operations/expected/records/compile/scalarsArgs.re.txt new file mode 100644 index 00000000..a6b9626b --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/scalarsArgs.re.txt @@ -0,0 +1,65 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function makeVariables(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\nscalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/scalarsInput.re.txt b/snapshot_tests/operations/expected/records/compile/scalarsInput.re.txt new file mode 100644 index 00000000..e957664f --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/scalarsInput.re.txt @@ -0,0 +1,79 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeInputObjectVariousScalarsInput(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectVariousScalarsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectVariousScalarsInput(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($arg: VariousScalarsInput!) {\nscalarsInput(arg: $arg) \n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectVariousScalarsInput: serializeInputObjectVariousScalarsInput, + makeVariables: makeVariables, + makeInputObjectVariousScalarsInput: makeInputObjectVariousScalarsInput +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/skipDirectives.re.txt b/snapshot_tests/operations/expected/records/compile/skipDirectives.re.txt new file mode 100644 index 00000000..0b61e1a8 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/skipDirectives.re.txt @@ -0,0 +1,73 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.v1; + var value$2 = value$1.nullableString; + var value$3 = value$1.string; + var value$4 = value.v2; + var value$5 = value$4.nullableString; + var value$6 = value$4.string; + return { + v1: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: !(value$3 == null) ? value$3 : undefined + }, + v2: { + nullableString: !(value$5 == null) ? value$5 : undefined, + string: !(value$6 == null) ? value$6 : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.v2; + var value$2 = value$1.string; + var string = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.nullableString; + var nullableString = value$3 !== undefined ? value$3 : null; + var v2 = { + nullableString: nullableString, + string: string + }; + var value$4 = value.v1; + var value$5 = value$4.string; + var string$1 = value$5 !== undefined ? value$5 : null; + var value$6 = value$4.nullableString; + var nullableString$1 = value$6 !== undefined ? value$6 : null; + var v1 = { + nullableString: nullableString$1, + string: string$1 + }; + return { + v1: v1, + v2: v2 + }; +} + +function serializeVariables(inp) { + return { + var: inp.var + }; +} + +function makeVariables($$var, param) { + return { + var: $$var + }; +} + +var MyQuery = { + Raw: Raw, + query: "query ($var: Boolean!) {\nv1: variousScalars {\nnullableString @skip(if: $var) \nstring @skip(if: $var) \n}\n\nv2: variousScalars {\nnullableString @include(if: $var) \nstring @include(if: $var) \n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/subscription.re.txt b/snapshot_tests/operations/expected/records/compile/subscription.re.txt new file mode 100644 index 00000000..15b0170e --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/subscription.re.txt @@ -0,0 +1,86 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.simpleSubscription; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + simpleSubscription: tmp + }; +} + +function serialize(value) { + var value$1 = value.simpleSubscription; + var variant = value$1.NAME; + var simpleSubscription; + if (variant === "FutureAddedValue") { + simpleSubscription = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + simpleSubscription = { + __typename: "Dog", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.name; + simpleSubscription = { + __typename: "Human", + name: value$3 + }; + } + return { + simpleSubscription: simpleSubscription + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "subscription {\nsimpleSubscription {\n__typename\n...on Dog {\nname \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/tagged_template.re.txt b/snapshot_tests/operations/expected/records/compile/tagged_template.re.txt new file mode 100644 index 00000000..1eeb859f --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/tagged_template.re.txt @@ -0,0 +1,964 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var ApolloClient = require("apollo-client"); + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var MyTypes = {}; + +var Raw$1 = {}; + +var query$1 = (graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery1a = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQuery1b = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gatsby").graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MyQuery2 = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +var query$4 = (require("gatsby").graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var MyQuery3 = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$5 = {}; + +var query$5 = (require("gatsby")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var MyQuery4 = { + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var Raw$6 = {}; + +var query$6 = (require("gatsby")` + fragment ListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse$6(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$6(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse$6(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$7 = {}; + +var query$7 = (require("gatsby")` + query MyQuery5 { + lists { + ...ListFragment + } + } +`); + +function parse$7(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$7(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$6(param) { + +} + +function makeVariables$6(param) { + +} + +function makeDefaultVariables$6(param) { + +} + +var MyQuery5 = { + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$6, + makeVariables: makeVariables$6, + makeDefaultVariables: makeDefaultVariables$6 +}; + +var Raw$8 = {}; + +var query$8 = ((frag_0) => require("gatsby")` + query MyQuery6 { + lists { + ...ListFragment + } + } + ${frag_0} +`)(query$6); + +function parse$8(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$8(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$7(param) { + +} + +function makeVariables$7(param) { + +} + +function makeDefaultVariables$7(param) { + +} + +var MyQuery6 = { + Raw: Raw$8, + query: query$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$7, + makeVariables: makeVariables$7, + makeDefaultVariables: makeDefaultVariables$7 +}; + +var Raw$9 = {}; + +var query$9 = (graphql` + query MyQuery7 { + lists { + ...ListFragment + } + } +`); + +function parse$9(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$9(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$8(param) { + +} + +function makeVariables$8(param) { + +} + +function makeDefaultVariables$8(param) { + +} + +var MyQuery7 = { + Raw: Raw$9, + query: query$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$8, + makeVariables: makeVariables$8, + makeDefaultVariables: makeDefaultVariables$8 +}; + +var Raw$10 = {}; + +var query$10 = ApolloClient.gql(["fragment ListFragment8 on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"]); + +function parse$10(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$10(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_ListFragment8, value) { + return parse$10(value); +} + +function verifyName$1(param) { + +} + +var ListFragment8 = { + Raw: Raw$10, + query: query$10, + parse: parse$10, + serialize: serialize$10, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$11 = {}; + +var query$11 = ApolloClient.gql([ + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "" + ], query$10); + +function parse$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + lists: parse$10(value.lists), + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + var value$12 = value.lists; + var lists = serialize$10(value$12); + return { + lists: lists, + variousScalars: variousScalars + }; +} + +function serializeVariables$9(param) { + +} + +function makeVariables$9(param) { + +} + +function makeDefaultVariables$9(param) { + +} + +var MyQuery8 = { + Raw: Raw$11, + query: query$11, + parse: parse$11, + serialize: serialize$11, + serializeVariables: serializeVariables$9, + makeVariables: makeVariables$9, + makeDefaultVariables: makeDefaultVariables$9 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyTypes = MyTypes; +exports.MyQuery1a = MyQuery1a; +exports.MyQuery1b = MyQuery1b; +exports.MyQuery2 = MyQuery2; +exports.MyQuery3 = MyQuery3; +exports.MyQuery4 = MyQuery4; +exports.ListFragment = ListFragment; +exports.MyQuery5 = MyQuery5; +exports.MyQuery6 = MyQuery6; +exports.MyQuery7 = MyQuery7; +exports.ListFragment8 = ListFragment8; +exports.MyQuery8 = MyQuery8; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/records/compile/typename.re.txt b/snapshot_tests/operations/expected/records/compile/typename.re.txt new file mode 100644 index 00000000..926fa068 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/typename.re.txt @@ -0,0 +1,89 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + return { + first: { + __typename: value$1.__typename, + inner: tmp + } + }; +} + +function serialize(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var first = { + __typename: value$7, + inner: inner + }; + return { + first: first + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/union.re.txt b/snapshot_tests/operations/expected/records/compile/union.re.txt new file mode 100644 index 00000000..266df180 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/union.re.txt @@ -0,0 +1,359 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryNoError = { + Raw: Raw$1, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n", + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + dogOrHuman = { + name: value$2, + __typename: "Dog" + }; + } else { + var value$3 = value$1.VAL.name; + dogOrHuman = { + name: value$3, + __typename: "Human" + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var NamedQuery = { + Raw: Raw$2, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \n__typename \n}\n\n...on Human {\nname \n__typename \n}\n\n}\n\n}\n", + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query = "fragment DogFields on Dog {\nname \n__typename \n}\n"; + +function parse$3(value) { + return { + name: value.name, + __typename: value.__typename + }; +} + +function serialize$3(value) { + var value$1 = value.__typename; + var value$2 = value.name; + return { + name: value$2, + __typename: value$1 + }; +} + +function verifyArgsAndParse(_DogFields, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var DogFields = { + Raw: Raw$3, + query: query, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$1 = "query dogOrHuman {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFields \n}\n\n}\n\n}\nfragment DogFields on Dog {\nname \n__typename \n}\n"; + +function parse$4(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$3(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$4(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$3(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var DogOrHuman = { + Raw: Raw$4, + query: query$1, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var NamedSpread = { + DogFields: DogFields, + DogOrHuman: DogOrHuman +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyQueryNoError = MyQueryNoError; +exports.NamedQuery = NamedQuery; +exports.NamedSpread = NamedSpread; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/unionPartial.re.txt b/snapshot_tests/operations/expected/records/compile/unionPartial.re.txt new file mode 100644 index 00000000..b2744a97 --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/unionPartial.re.txt @@ -0,0 +1,68 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/compile/variant.re.txt b/snapshot_tests/operations/expected/records/compile/variant.re.txt new file mode 100644 index 00000000..583c71fa --- /dev/null +++ b/snapshot_tests/operations/expected/records/compile/variant.re.txt @@ -0,0 +1,133 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +function parse(value) { + var value$1 = value.mutationForVariant; + var value$2 = Js_json.decodeObject(value$1); + var tmp; + if (value$2 !== undefined) { + var value$3 = Caml_option.valFromOption(value$2); + var temp = value$3["baseType"]; + var match = Js_json.decodeNull(temp); + if (match !== undefined) { + var temp$1 = value$3["baseTypeList"]; + var match$1 = Js_json.decodeNull(temp$1); + if (match$1 !== undefined) { + var temp$2 = value$3["dog"]; + var match$2 = Js_json.decodeNull(temp$2); + if (match$2 !== undefined) { + var temp$3 = value$3["human"]; + var match$3 = Js_json.decodeNull(temp$3); + if (match$3 !== undefined) { + var temp$4 = value$3["dogOrHuman"]; + var match$4 = Js_json.decodeNull(temp$4); + if (match$4 !== undefined) { + tmp = Js_exn.raiseError("graphql-ppx: All fields on variant selection set on type VariantTestResult were null"); + } else { + var typename = temp$4["__typename"]; + var tmp$1; + switch (typename) { + case "Dog" : + tmp$1 = { + NAME: "Dog", + VAL: { + name: temp$4.name, + barkVolume: temp$4.barkVolume + } + }; + break; + case "Human" : + tmp$1 = { + NAME: "Human", + VAL: { + name: temp$4.name + } + }; + break; + default: + tmp$1 = { + NAME: "FutureAddedValue", + VAL: temp$4 + }; + } + tmp = { + NAME: "DogOrHuman", + VAL: tmp$1 + }; + } + } else { + tmp = { + NAME: "Human", + VAL: { + name: temp$3.name + } + }; + } + } else { + tmp = { + NAME: "Dog", + VAL: { + name: temp$2.name, + barkVolume: temp$2.barkVolume + } + }; + } + } else { + tmp = { + NAME: "BaseTypeList", + VAL: temp$1.map(function (value) { + return value; + }) + }; + } + } else { + tmp = { + NAME: "BaseType", + VAL: temp + }; + } + } else { + tmp = Js_exn.raiseError("graphql-ppx: Expected type VariantTestResult to be an object"); + } + return { + mutationForVariant: tmp + }; +} + +function serialize(value) { + var mutationForVariant = null; + return { + mutationForVariant: mutationForVariant + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: "mutation {\nmutationForVariant {\nbaseType \nbaseTypeList \ndog {\nname \nbarkVolume \n}\n\nhuman {\nname \n}\n\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n\n}\n", + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* No side effect */ diff --git a/snapshot_tests/operations/expected/records/generate/argNamedQuery.re.txt b/snapshot_tests/operations/expected/records/generate/argNamedQuery.re.txt new file mode 100644 index 00000000..4b440215 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/argNamedQuery.re.txt @@ -0,0 +1,185 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query ($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MultipleQueryWithSameVarName = { + module Query1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query1($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + module Query2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query = "query Query2($query: Int!) {\nargNamedQuery(query: $query) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/records/generate/comment.re.txt b/snapshot_tests/operations/expected/records/generate/comment.re.txt new file mode 100644 index 00000000..7d75b6f7 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/comment.re.txt @@ -0,0 +1,282 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/customDecoder.re.txt b/snapshot_tests/operations/expected/records/generate/customDecoder.re.txt new file mode 100644 index 00000000..13f570f3 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/customDecoder.re.txt @@ -0,0 +1,125 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module StringOfInt = { + let parse = string_of_int; + let serialize = int_of_string; + type t = string; +}; +module IntOfString = { + let parse = int_of_string; + let serialize = string_of_int; + type t = int; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + IntOfString.parse(value); + }, + int: { + let value = (value: Raw.t_variousScalars).int; + StringOfInt.parse(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: t_variousScalars).int; + let value = StringOfInt.serialize(value); + value; + } + and string = { + let value = (value: t_variousScalars).string; + let value = IntOfString.serialize(value); + value; + }; + {string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/customScalars.re.txt b/snapshot_tests/operations/expected/records/generate/customScalars.re.txt new file mode 100644 index 00000000..25188f14 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/customScalars.re.txt @@ -0,0 +1,142 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customScalarField = { + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~opt: Js.Json.t=?, ~req: Js.Json.t, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customScalarField = { + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + let query = "query ($opt: CustomScalar, $req: CustomScalar!) {\ncustomScalarField(argOptional: $opt, argRequired: $req) {\nnullable \nnonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customScalarField: { + let value = (value: Raw.t).customScalarField; + ( + { + nullable: { + let value = (value: Raw.t_customScalarField).nullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + nonNullable: { + let value = (value: Raw.t_customScalarField).nonNullable; + value; + }, + }: t_customScalarField + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customScalarField = { + let value = (value: t).customScalarField; + ( + { + let nonNullable = { + let value = (value: t_customScalarField).nonNullable; + value; + } + and nullable = { + let value = (value: t_customScalarField).nullable; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullable, nonNullable}; + }: Raw.t_customScalarField + ); + }; + {customScalarField: customScalarField}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + opt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).opt, + ), + req: (a => a)((inp: t_variables).req), + }; + let makeVariables = (~opt=?, ~req, ()): t_variables => {opt, req}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/customTypes.re.txt b/snapshot_tests/operations/expected/records/generate/customTypes.re.txt new file mode 100644 index 00000000..a7c1c395 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/customTypes.re.txt @@ -0,0 +1,246 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Color = { + type t = + | Red + | Green + | Blue; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") + | Some(_) + | None => Red + }; + let serialize = color => + ( + switch (color) { + | Red => "red" + | Green => "green" + | Blue => "blue" + } + ) + |> Js.Json.string; +}; + +module NullableString = { + type t = + | Red + | Green + | Blue; + let parse: option(string) => t = + color => + switch (color) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") => Red + | Some(_) + | None => Red + }; + let serialize: t => option(string) = + color => + switch (color) { + | Red => Some("red") + | Green => Some("green") + | Blue => Some("blue") + }; +}; + +module DateTime = { + type t = Js.Date.t; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some(str) => str |> Js.Date.fromString + | None => Js.Date.make() + }; + let serialize = date => date |> Js.Date.toISOString |> Js.Json.string; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customFields = { + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customFields = { + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + let query = "query {\ncustomFields {\ncurrentTime \nfavoriteColor \nfutureTime \nnullableColor \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + customFields: { + let value = (value: Raw.t).customFields; + ( + { + currentTime: { + let value = (value: Raw.t_customFields).currentTime; + DateTime.parse(value); + }, + favoriteColor: { + let value = (value: Raw.t_customFields).favoriteColor; + Color.parse(value); + }, + futureTime: { + let value = (value: Raw.t_customFields).futureTime; + switch (Js.toOption(value)) { + | Some(value) => Some(DateTime.parse(value)) + | None => None + }; + }, + nullableColor: { + let value = (value: Raw.t_customFields).nullableColor; + switch (Js.toOption(value)) { + | Some(value) => Some(Color.parse(value)) + | None => None + }; + }, + nullableString: { + let value = (value: Raw.t_customFields).nullableString; + NullableString.parse( + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }, + ); + }, + }: t_customFields + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customFields = { + let value = (value: t).customFields; + ( + { + let nullableString = { + let value = (value: t_customFields).nullableString; + let value = NullableString.serialize(value); + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableColor = { + let value = (value: t_customFields).nullableColor; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = Color.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and futureTime = { + let value = (value: t_customFields).futureTime; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = DateTime.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and favoriteColor = { + let value = (value: t_customFields).favoriteColor; + let value = Color.serialize(value); + value; + } + and currentTime = { + let value = (value: t_customFields).currentTime; + let value = DateTime.serialize(value); + value; + }; + { + currentTime, + favoriteColor, + futureTime, + nullableColor, + nullableString, + }; + }: Raw.t_customFields + ); + }; + {customFields: customFields}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/records/generate/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..82a237e4 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,74 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + let query = "query {\ndefaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + defaultObjectValueOnScalar: { + let value = (value: Raw.t).defaultObjectValueOnScalar; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let defaultObjectValueOnScalar = { + let value = (value: t).defaultObjectValueOnScalar; + value; + }; + {defaultObjectValueOnScalar: defaultObjectValueOnScalar}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/enumInput.re.txt b/snapshot_tests/operations/expected/records/generate/enumInput.re.txt new file mode 100644 index 00000000..64cb2b5e --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/enumInput.re.txt @@ -0,0 +1,86 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~arg: [ | `FIRST | `SECOND | `THIRD], unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + let query = "query ($arg: SampleField!) {\nenumInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + enumInput: { + let value = (value: Raw.t).enumInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let enumInput = { + let value = (value: t).enumInput; + value; + }; + {enumInput: enumInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + (inp: t_variables).arg, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/records/generate/ewert_reproduction.re.txt new file mode 100644 index 00000000..10db6e04 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/ewert_reproduction.re.txt @@ -0,0 +1,136 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module UserData: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_user = { + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + }; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~userId: [ | `NonNull_String], ~fragmentName: [ | `UserData], Raw.t) => t; + let verifyName: [ | `UserData] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_user = { + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + }; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + let query = "fragment UserData on Workspace {\nuser(id: $userId) {\nid \nfirstname \nlastname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + user: { + let value = (value: Raw.t).user; + ( + { + id: { + let value = (value: Raw.t_user).id; + value; + }, + firstname: { + let value = (value: Raw.t_user).firstname; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + lastname: { + let value = (value: Raw.t_user).lastname; + value; + }, + }: t_user + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let user = { + let value = (value: t).user; + ( + { + let lastname = { + let value = (value: t_user).lastname; + value; + } + and firstname = { + let value = (value: t_user).firstname; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_user).id; + value; + }; + {id, firstname, lastname}; + }: Raw.t_user + ); + }; + {user: user}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~userId as _userId: [ | `NonNull_String], + ~fragmentName as _UserData: [ | `UserData], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `UserData => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/explicit_object_record.re.txt b/snapshot_tests/operations/expected/records/generate/explicit_object_record.re.txt new file mode 100644 index 00000000..8be3de53 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/explicit_object_record.re.txt @@ -0,0 +1,352 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module RecordsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ObjectsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/extensions.re.txt b/snapshot_tests/operations/expected/records/generate/extensions.re.txt new file mode 100644 index 00000000..206b756b --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/extensions.re.txt @@ -0,0 +1,418 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module type GraphQLQuery = { + module Raw: { + type t; + type t_variables; + }; + type t; + type t_variables; + + let query: string; + let parse: Raw.t => t; + let serialize: t => Raw.t; +}; + +module Parent = { + module ExtendQuery = (M: GraphQLQuery) : {let use: unit => unit;} => { + let use = () => (); + }; +}; +module Bla: { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include (module type of { + include Bla_inner; + }); + include (module type of { + include Parent.ExtendQuery(Bla_inner); + }); +} = { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include Bla_inner; + include Parent.ExtendQuery(Bla_inner); +}; +module Inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query Bla2 {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +include Inner; +include Parent.ExtendQuery(Inner); diff --git a/snapshot_tests/operations/expected/records/generate/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/records/generate/fragmentDefinition.re.txt new file mode 100644 index 00000000..e8512d2e --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/fragmentDefinition.re.txt @@ -0,0 +1,855 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nullableOfNonNullable: Js.Nullable.t(array(string))}; + type nonrec t_Lists = t; + }; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nullableOfNonNullable: Js.Nullable.t(array(string))}; + type nonrec t_Lists = t; + }; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + let query = "fragment Another on Lists {\nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + }; + {nullableOfNonNullable: nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module FragmentWithArgs: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listWithArg: Js.Nullable.t(array(Js.Nullable.t(string)))}; + type nonrec t_Lists = t; + }; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~arg1: [ | `String], ~fragmentName: [ | `FragmentWithArgs], Raw.t) => t; + let verifyName: [ | `FragmentWithArgs] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listWithArg: Js.Nullable.t(array(Js.Nullable.t(string)))}; + type nonrec t_Lists = t; + }; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + let query = "fragment FragmentWithArgs on Lists {\nlistWithArg(arg1: $arg1) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listWithArg: { + let value = (value: Raw.t).listWithArg; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listWithArg = { + let value = (value: t).listWithArg; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {listWithArg: listWithArg}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~arg1 as _arg1: [ | `String], + ~fragmentName as _FragmentWithArgs: [ | `FragmentWithArgs], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `FragmentWithArgs => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module InlineListFragment = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module Wrapper = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query = "fragment InlineListFragment on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~arg1: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + let query = + ( + ( + "query MyQuery($arg1: String) {\nl1: lists {\n...ListFragment \n}\n\nl2: lists {\n...ListFragment \n...ListFragment \n}\n\nl3: lists {\nnullableOfNullable \n...ListFragment \n...ListFragment \n}\n\nl4: lists {\nnullableOfNullable \n...InlineListFragment \n}\n\nl5: lists {\n...FragmentWithArgs \n}\n\n}\n" + ++ FragmentWithArgs.query + ) + ++ InlineListFragment.query + ) + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + l1: { + let value = (value: Raw.t).l1; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + l2: { + let value = (value: Raw.t).l2; + ( + { + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l2 + ); + }, + l3: { + let value = (value: Raw.t).l3; + ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l3 + ); + }, + l4: { + let value = (value: Raw.t).l4; + ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + inlineListFragment: { + let value: InlineListFragment.Raw.t = Obj.magic(value); + + InlineListFragment.verifyArgsAndParse( + ~fragmentName=`InlineListFragment, + value, + ); + }, + }: t_l4 + ); + }, + l5: { + let value = (value: Raw.t).l5; + + FragmentWithArgs.verifyArgsAndParse( + ~arg1=`String, + ~fragmentName=`FragmentWithArgs, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let l5 = { + let value = (value: t).l5; + FragmentWithArgs.serialize(value); + } + and l4 = { + let value = (value: t).l4; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l4).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InlineListFragment.serialize( + (value: t_l4).inlineListFragment, + ), + ): Js.Json.t + ), + |], + ), + ): Raw.t_l4 + ); + } + and l3 = { + let value = (value: t).l3; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l3).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l3 + ); + } + and l2 = { + let value = (value: t).l2; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic(Js.Dict.empty): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l2 + ); + } + and l1 = { + let value = (value: t).l1; + ListFragment.serialize(value); + }; + {l1, l2, l3, l4, l5}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg1: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).arg1, + ), + }; + let makeVariables = (~arg1=?, ()): t_variables => {arg1: arg1}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query = + "query {\nlists {\n...ListFragment \n}\n\n}\n" ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/records/generate/fragmentInFragment.re.txt new file mode 100644 index 00000000..e0263f3e --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/fragmentInFragment.re.txt @@ -0,0 +1,213 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + let query = "fragment ListFragment on Lists {\nnullableOfNullable \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable: nullableOfNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + let query = + "fragment Another on Lists {\nnullableOfNullable \n...ListFragment \n}\n" + ++ ListFragment.query; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "nullableOfNullable"), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + listFragment: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t).listFragment)): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/records/generate/fragmentOnInterface.re.txt new file mode 100644 index 00000000..253e2df0 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/fragmentOnInterface.re.txt @@ -0,0 +1,276 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module InterfaceFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `InterfaceFragment], Raw.t) => t; + let verifyName: [ | `InterfaceFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = "fragment InterfaceFragment on User {\n__typename\nid \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = (value: Raw.t).id; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let id = { + let value = (value: t).id; + value; + }; + {id: id}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InterfaceFragment: [ | `InterfaceFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InterfaceFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnotherFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnotherFragment], Raw.t) => t; + let verifyName: [ | `AnotherFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query = + "fragment AnotherFragment on User {\n__typename\nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnotherFragment: [ | `AnotherFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnotherFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnonUser: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnonUser], Raw.t) => t; + let verifyName: [ | `AnonUser] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + let query = + "fragment AnonUser on AnonymousUser {\nid \n...InterfaceFragment \n}\n" + ++ InterfaceFragment.query; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnonUser: [ | `AnonUser], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnonUser => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/fragmentUnion.re.txt b/snapshot_tests/operations/expected/records/generate/fragmentUnion.re.txt new file mode 100644 index 00000000..da097968 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/fragmentUnion.re.txt @@ -0,0 +1,255 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; + +module Graphql_ppx_runtime = { + let assign_typename: (Js.Json.t, string) => Js.Json.t = [%raw + {| (obj, typename) => { obj.__typename = typename; return obj } |} + ]; +}; +module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HumanFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Human = t; + }; + type t = {name: string}; + type nonrec t_Human = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `HumanFragment], Raw.t) => t; + let verifyName: [ | `HumanFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Human = t; + }; + type t = {name: string}; + type nonrec t_Human = t; + let query = "fragment HumanFragment on Human {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _HumanFragment: [ | `HumanFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `HumanFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + ( + "query MyQuery {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n...on Human {\n...HumanFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query + ) + ++ HumanFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | "Human" => + `Human( + { + let value: HumanFragment.Raw.t = Obj.magic(value); + + HumanFragment.verifyArgsAndParse( + ~fragmentName=`HumanFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(HumanFragment.serialize(value)): Js.Json.t, + "Human", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/records/generate/fragmentvariableinput.re.txt new file mode 100644 index 00000000..a808b62c --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/fragmentvariableinput.re.txt @@ -0,0 +1,112 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_reposts = {id: int}; + type t = {reposts: array(Js.Nullable.t(t_reposts))}; + type nonrec t_Post = t; + }; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~name: [ | `NonNull_String], ~fragmentName: [ | `test], Raw.t) => t; + let verifyName: [ | `test] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_reposts = {id: int}; + type t = {reposts: array(Js.Nullable.t(t_reposts))}; + type nonrec t_Post = t; + }; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + let query = "fragment test on Post {\nreposts(arg: {name: $name}) {\nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + reposts: { + let value = (value: Raw.t).reposts; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_reposts).id; + value; + }, + }: t_reposts, + ) + | None => None + } + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let reposts = { + let value = (value: t).reposts; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let id = { + let value = (value: t_reposts).id; + value; + }; + {id: id}; + }: Raw.t_reposts, + ) + | None => Js.Nullable.null + } + ); + }; + {reposts: reposts}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~name as _name: [ | `NonNull_String], + ~fragmentName as _test: [ | `test], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `test => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/hasuraRepro.re.txt b/snapshot_tests/operations/expected/records/generate/hasuraRepro.re.txt new file mode 100644 index 00000000..e191cd8f --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/hasuraRepro.re.txt @@ -0,0 +1,176 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Dog: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Dog], Raw.t) => t; + let verifyName: [ | `Dog] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query = "fragment Dog on Dog {\nname \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = (~fragmentName as _Dog: [ | `Dog], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Dog => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HasuraRepro: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~blockNumber: int=?, ~type_: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + let query = + "query HasuraRepro($blockNumber: Int, $type: String) {\nhasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n...Dog \n}\n\n}\n" + ++ Dog.query; + let parse: Raw.t => t = + (value) => ( + { + hasuraRepro: { + let value = (value: Raw.t).hasuraRepro; + + Dog.verifyArgsAndParse(~fragmentName=`Dog, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let hasuraRepro = { + let value = (value: t).hasuraRepro; + Dog.serialize(value); + }; + {hasuraRepro: hasuraRepro}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + blockNumber: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).blockNumber, + ), + type_: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).type_, + ), + }; + let makeVariables = (~blockNumber=?, ~type_=?, ()): t_variables => { + blockNumber, + type_, + }; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +let _ = HasuraRepro.makeVariables(~blockNumber=1, ~type_="1", ()); diff --git a/snapshot_tests/operations/expected/records/generate/interface.re.txt b/snapshot_tests/operations/expected/records/generate/interface.re.txt new file mode 100644 index 00000000..5772eb36 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/interface.re.txt @@ -0,0 +1,847 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module QueryWithOnlyFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\nid \nname \n}\n\n...on AnonymousUser {\nid \nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + id: { + let value = + (value: Raw.t_users_User_AnonymousUser).id; + value; + }, + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser).anonymousId; + value; + } + and id = { + let value = (value: t_users_User_AnonymousUser).id; + value; + }; + {__typename: "AnonymousUser", id, anonymousId}; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_users_User_AdminUser).name; + value; + } + and id = { + let value = (value: t_users_User_AdminUser).id; + value; + }; + {__typename: "AdminUser", id, name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser).__typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser).__typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithMixedFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n...on AdminUser {\nname \n}\n\n...on AnonymousUser {\nanonymousId \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser). + anonymousId; + value; + }; + { + __typename: "AnonymousUser", + anonymousId, + }; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = + (value: t_users_User_AdminUser).name; + value; + }; + {__typename: "AdminUser", name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MixedQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n__typename \n...on AdminUser {\n__typename \nid \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser). + __typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + } + and __typename = { + let value = (value: t_users).__typename; + value; + }; + {"__typename": __typename, "id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = + (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser). + __typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithoutFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + let query = "query {\nusers {\n__typename\nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + id: { + let value = (value: Raw.t_users).id; + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + { + let id = { + let value = (value: t_users).id; + value; + }; + {id: id}; + }: Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/lists.re.txt b/snapshot_tests/operations/expected/records/generate/lists.re.txt new file mode 100644 index 00000000..1bad9f03 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/lists.re.txt @@ -0,0 +1,185 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query = "query {\nlists {\nnullableOfNullable \nnullableOfNonNullable \nnonNullableOfNullable \nnonNullableOfNonNullable \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/listsArgs.re.txt b/snapshot_tests/operations/expected/records/generate/listsArgs.re.txt new file mode 100644 index 00000000..fdeca039 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/listsArgs.re.txt @@ -0,0 +1,181 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\nlistsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables).nonNullableOfNonNullable, + ), + }; + let makeVariables = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/listsInput.re.txt b/snapshot_tests/operations/expected/records/generate/listsInput.re.txt new file mode 100644 index 00000000..36e74c91 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/listsInput.re.txt @@ -0,0 +1,194 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput; + let makeVariables: (~arg: t_variables_ListsInput, unit) => t_variables; + let makeInputObjectListsInput: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables_ListsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query = "query ($arg: ListsInput!) {\nlistsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: (a => serializeInputObjectListsInput(a))((inp: t_variables).arg), + } + and serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables_ListsInput).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables_ListsInput).nonNullableOfNonNullable, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectListsInput = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables_ListsInput => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/module_type.re.txt b/snapshot_tests/operations/expected/records/generate/module_type.re.txt new file mode 100644 index 00000000..4d6f0ee8 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/module_type.re.txt @@ -0,0 +1,276 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: {type t;} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + }; + {string: string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + type t_variousScalars; + type t = {variousScalars: t_variousScalars}; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nstring \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + }; + {string: string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module rec MyQueryRecursive: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + VariousScalars.parse( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + let value = VariousScalars.serialize(value); + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} + +and VariousScalars: { + type t; + let parse: MyQueryRecursive.t_nestedObject => t; + let serialize: t => MyQueryRecursive.t_nestedObject; +} = { + type t = {otherInner: option(MyQueryRecursive.t_nestedObject_inner)}; + let parse = (nestedObject: MyQueryRecursive.t_nestedObject) => { + otherInner: nestedObject.inner, + }; + let serialize: t => MyQueryRecursive.t_nestedObject = + t => {inner: t.otherInner}; +}; diff --git a/snapshot_tests/operations/expected/records/generate/mutation.re.txt b/snapshot_tests/operations/expected/records/generate/mutation.re.txt new file mode 100644 index 00000000..01a6f89a --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/mutation.re.txt @@ -0,0 +1,228 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nvalue {\nstringField \n}\n\nerrors {\nfield \nmessage \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + value: { + let value = (value: Raw.t_mutationWithError).value; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + stringField: { + let value = + (value: Raw.t_mutationWithError_value).stringField; + value; + }, + }: t_mutationWithError_value, + ) + | None => None + }; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + }; + {field, message}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and value = { + let value = (value: t_mutationWithError).value; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let stringField = { + let value = + (value: t_mutationWithError_value).stringField; + value; + }; + {stringField: stringField}; + }: Raw.t_mutationWithError_value, + ) + | None => Js.Nullable.null + }; + }; + {value, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/records/generate/mutationWithArgs.re.txt new file mode 100644 index 00000000..7791db0d --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/mutationWithArgs.re.txt @@ -0,0 +1,73 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/records/generate/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..7791db0d --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,73 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query = "mutation MyMutation($required: String!) {\noptionalInputArgs(required: $required, anotherRequired: \"val\") \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/nested.re.txt b/snapshot_tests/operations/expected/records/generate/nested.re.txt new file mode 100644 index 00000000..b159f695 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/nested.re.txt @@ -0,0 +1,663 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +type record = { + f1: string, + f2: string, +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: Js.Nullable.t(t_first_inner_inner)}; + type t_first = {inner: Js.Nullable.t(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: Js.Nullable.t(t_second_inner_inner)}; + type t_second = {inner: Js.Nullable.t(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: Js.Nullable.t(t_let_inner_inner)}; + type t_let = {inner: Js.Nullable.t(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: Js.Nullable.t(t_first_inner_inner)}; + type t_first = {inner: Js.Nullable.t(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: Js.Nullable.t(t_second_inner_inner)}; + type t_second = {inner: Js.Nullable.t(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: Js.Nullable.t(t_let_inner_inner)}; + type t_let = {inner: Js.Nullable.t(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\nsecond: nestedObject {\ninner {\ninner {\nf1: field \nf2: field \n}\n\n}\n\n}\n\nlet: nestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + second: { + let value = (value: Raw.t).second; + ( + { + inner: { + let value = (value: Raw.t_second).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_second_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + f1: { + let value = + (value: Raw.t_second_inner_inner).f1; + value; + }, + f2: { + let value = + (value: Raw.t_second_inner_inner).f2; + value; + }, + }: t_second_inner_inner, + ) + | None => None + }; + }, + }: t_second_inner, + ) + | None => None + }; + }, + }: t_second + ); + }, + let_: { + let value = (value: Raw.t).let_; + ( + { + inner: { + let value = (value: Raw.t_let).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_let_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_let_inner_inner).field; + value; + }, + }: t_let_inner_inner, + ) + | None => None + }; + }, + }: t_let_inner, + ) + | None => None + }; + }, + }: t_let + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let let_ = { + let value = (value: t).let_; + ( + { + let inner = { + let value = (value: t_let).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_let_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_let_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_let_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_let_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_let + ); + } + and second = { + let value = (value: t).second; + ( + { + let inner = { + let value = (value: t_second).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_second_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let f2 = { + let value = (value: t_second_inner_inner).f2; + value; + } + and f1 = { + let value = (value: t_second_inner_inner).f1; + value; + }; + {f1, f2}; + }: Raw.t_second_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_second_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_second + ); + } + and first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_first + ); + }; + {first, second, let_}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module Test: { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +} = { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module MyQueryWithSigDirect: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query = "query {\nnestedObject {\ninner {\ninner {\nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/records/generate/nonrecursiveInput.re.txt new file mode 100644 index 00000000..b2b6ba7d --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/nonrecursiveInput.re.txt @@ -0,0 +1,587 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!) {\nnonrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + ( + ~arg: t_variables_NonrecursiveInput, + ~arg2: t_variables_NonrecursiveInput, + unit + ) => + t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query = "query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\nscalarsInput(arg: $arg) \nmore: scalarsInput(arg: $arg2) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + more: { + let value = (value: Raw.t).more; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let more = { + let value = (value: t).more; + value; + } + and scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput, more}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + arg2: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg2, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ~arg2, ()): t_variables => {arg, arg2} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/records/generate/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..1c7953d9 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/omitFutureValueEnum.re.txt @@ -0,0 +1,503 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query = "mutation {\nmutationWithError {\nerrors {\nmessage \nfield \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/records/generate/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..6d7e0153 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/omitFutureValueUnion.re.txt @@ -0,0 +1,498 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/records/generate/pokedexApolloMode.re.txt new file mode 100644 index 00000000..b2ac0811 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/pokedexApolloMode.re.txt @@ -0,0 +1,127 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + let query = "query {\npokemon(name: \"Pikachu\") {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/pokedexScalars.re.txt b/snapshot_tests/operations/expected/records/generate/pokedexScalars.re.txt new file mode 100644 index 00000000..43846e92 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/pokedexScalars.re.txt @@ -0,0 +1,304 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryDirectives: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query = "query pokemon($id: String, $name: String) {\npokemon(name: $name, id: $id) {\nid \nname \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/record.re.txt b/snapshot_tests/operations/expected/records/generate/record.re.txt new file mode 100644 index 00000000..13fb0de1 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/record.re.txt @@ -0,0 +1,773 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; + +type scalars = { + __typename: string, + string, + int, +}; + +type dog = { + __typename: string, + name: string, + barkVolume: float, +}; + +type oneFieldQuery = {nullableString: option(string)}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nstring \nint \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + }: scalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: scalars).int; + value; + } + and string = { + let value = (value: scalars).string; + value; + } + and __typename = { + let value = (value: scalars).__typename; + value; + }; + {__typename, string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = {nullableString: Js.Nullable.t(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {nullableString: Js.Nullable.t(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString: nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\n__typename \nnullableString \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ExternalFragmentQuery = { + module Fragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Fragment], Raw.t) => t; + let verifyName: [ | `Fragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + let query = "fragment Fragment on VariousScalars {\nstring \nint \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + string: { + let value = (value: Raw.t).string; + value; + }, + int: { + let value = (value: Raw.t).int; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let int = { + let value = (value: t).int; + value; + } + and string = { + let value = (value: t).string; + value; + }; + {string, int}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Fragment: [ | `Fragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Fragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + let query = + "query {\nvariousScalars {\n...Fragment \n}\n\n}\n" + ++ Fragment.query; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + + Fragment.verifyArgsAndParse(~fragmentName=`Fragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + Fragment.serialize(value); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module InlineFragmentQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\n__typename \nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module UnionExternalFragmentQuery = { + module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + let query = "fragment DogFragment on Dog {\n__typename \nname \nbarkVolume \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + barkVolume: { + let value = (value: Raw.t).barkVolume; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let barkVolume = { + let value = (value: t).barkVolume; + value; + } + and name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name, barkVolume}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFragment \n}\n\n}\n\n}\n" + ++ DogFragment.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/records/generate/recursiveInput.re.txt b/snapshot_tests/operations/expected/records/generate/recursiveInput.re.txt new file mode 100644 index 00000000..ce51b1b9 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/recursiveInput.re.txt @@ -0,0 +1,336 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput; + let makeVariables: (~arg: t_variables_RecursiveInput, unit) => t_variables; + let makeInputObjectRecursiveInput: + ( + ~otherField: string=?, + ~inner: t_variables_RecursiveInput=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + unit + ) => + t_variables_RecursiveInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + let query = "query ($arg: RecursiveInput!) {\nrecursiveInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveInput: { + let value = (value: Raw.t).recursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveInput = { + let value = (value: t).recursiveInput; + value; + }; + {recursiveInput: recursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectRecursiveInput(a))((inp: t_variables).arg), + } + and serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput = + inp => { + otherField: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_RecursiveInput).otherField, + ), + inner: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectRecursiveInput(a))(b), + ) + } + )( + (inp: t_variables_RecursiveInput).inner, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_RecursiveInput).enum, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectRecursiveInput = + (~otherField=?, ~inner=?, ~enum=?, ()): t_variables_RecursiveInput => { + otherField, + inner, + enum, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input; + let serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated; + let serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type; + let makeVariables: (~input: t_variables_problem_input, unit) => t_variables; + let makeInputObjectproblem_input: + ( + ~the_problem: t_variables_this_will_be_duplicated=?, + ~b: t_variables_nested_type=?, + unit + ) => + t_variables_problem_input; + let makeInputObjectthis_will_be_duplicated: + (~id: string, unit) => t_variables_this_will_be_duplicated; + let makeInputObjectnested_type: + (~the_problem: t_variables_this_will_be_duplicated=?, unit) => + t_variables_nested_type; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + let query = "query Test($input: problem_input!) {\nrecursiveRepro(input: $input) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + recursiveRepro: { + let value = (value: Raw.t).recursiveRepro; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveRepro = { + let value = (value: t).recursiveRepro; + value; + }; + {recursiveRepro: recursiveRepro}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + input: + (a => serializeInputObjectproblem_input(a))( + (inp: t_variables).input, + ), + } + and serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_problem_input).the_problem, + ), + b: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectnested_type(a))(b), + ) + } + )( + (inp: t_variables_problem_input).b, + ), + } + and serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated = + inp => {id: (a => a)((inp: t_variables_this_will_be_duplicated).id)} + and serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_nested_type).the_problem, + ), + }; + let makeVariables = (~input, ()): t_variables => {input: input} + and makeInputObjectproblem_input = + (~the_problem=?, ~b=?, ()): t_variables_problem_input => { + the_problem, + b, + } + and makeInputObjectthis_will_be_duplicated = + (~id, ()): t_variables_this_will_be_duplicated => { + id: id, + } + and makeInputObjectnested_type = + (~the_problem=?, ()): t_variables_nested_type => { + the_problem: the_problem, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/scalars.re.txt b/snapshot_tests/operations/expected/records/generate/scalars.re.txt new file mode 100644 index 00000000..27774da1 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/scalars.re.txt @@ -0,0 +1,250 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query = "query {\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/scalarsArgs.re.txt b/snapshot_tests/operations/expected/records/generate/scalarsArgs.re.txt new file mode 100644 index 00000000..2c70fae4 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/scalarsArgs.re.txt @@ -0,0 +1,212 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\nscalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableString, + ), + string: (a => a)((inp: t_variables).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableInt, + ), + int: (a => a)((inp: t_variables).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableFloat, + ), + float: (a => a)((inp: t_variables).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableID, + ), + id: (a => a)((inp: t_variables).id), + }; + let makeVariables = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/scalarsInput.re.txt b/snapshot_tests/operations/expected/records/generate/scalarsInput.re.txt new file mode 100644 index 00000000..b6feb9ac --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/scalarsInput.re.txt @@ -0,0 +1,229 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput; + let makeVariables: + (~arg: t_variables_VariousScalarsInput, unit) => t_variables; + let makeInputObjectVariousScalarsInput: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables_VariousScalarsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query = "query ($arg: VariousScalarsInput!) {\nscalarsInput(arg: $arg) \n}\n"; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectVariousScalarsInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableString, + ), + string: (a => a)((inp: t_variables_VariousScalarsInput).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableInt, + ), + int: (a => a)((inp: t_variables_VariousScalarsInput).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableFloat, + ), + float: (a => a)((inp: t_variables_VariousScalarsInput).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables_VariousScalarsInput).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableID, + ), + id: (a => a)((inp: t_variables_VariousScalarsInput).id), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectVariousScalarsInput = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables_VariousScalarsInput => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/skipDirectives.re.txt b/snapshot_tests/operations/expected/records/generate/skipDirectives.re.txt new file mode 100644 index 00000000..c21f5d4e --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/skipDirectives.re.txt @@ -0,0 +1,195 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_v1 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~var: bool, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_v1 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + let query = "query ($var: Boolean!) {\nv1: variousScalars {\nnullableString @skip(if: $var) \nstring @skip(if: $var) \n}\n\nv2: variousScalars {\nnullableString @include(if: $var) \nstring @include(if: $var) \n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + v1: { + let value = (value: Raw.t).v1; + ( + { + nullableString: { + let value = (value: Raw.t_v1).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v1).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v1 + ); + }, + v2: { + let value = (value: Raw.t).v2; + ( + { + nullableString: { + let value = (value: Raw.t_v2).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v2).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v2 + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let v2 = { + let value = (value: t).v2; + ( + { + let string = { + let value = (value: t_v2).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v2).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString, string}; + }: Raw.t_v2 + ); + } + and v1 = { + let value = (value: t).v1; + ( + { + let string = { + let value = (value: t_v1).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v1).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString, string}; + }: Raw.t_v1 + ); + }; + {v1, v2}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {var: (a => a)((inp: t_variables).var)}; + let makeVariables = (~var, ()): t_variables => {var: var}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/subscription.re.txt b/snapshot_tests/operations/expected/records/generate/subscription.re.txt new file mode 100644 index 00000000..5ba81e5a --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/subscription.re.txt @@ -0,0 +1,167 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + let query = "subscription {\nsimpleSubscription {\n__typename\n...on Dog {\nname \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + simpleSubscription: { + let value = (value: Raw.t).simpleSubscription; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_simpleSubscription_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_simpleSubscription_Dog).name; + value; + }, + }: t_simpleSubscription_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_simpleSubscription_Human = Obj.magic(value); + ( + { + name: { + let value = + (value: Raw.t_simpleSubscription_Human).name; + value; + }, + }: t_simpleSubscription_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_simpleSubscription + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let simpleSubscription = { + let value = (value: t).simpleSubscription; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Dog).name; + value; + }; + {__typename: "Dog", name}; + }: Raw.t_simpleSubscription_Dog, + ): Raw.t_simpleSubscription + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_simpleSubscription_Human, + ): Raw.t_simpleSubscription + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_simpleSubscription + ) + }; + }; + {simpleSubscription: simpleSubscription}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/tagged_template.re.txt b/snapshot_tests/operations/expected/records/generate/tagged_template.re.txt new file mode 100644 index 00000000..8a167956 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/tagged_template.re.txt @@ -0,0 +1,2094 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module MyTypes = { + type query; +}; +module MyQuery1a: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: MyTypes.query; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: MyTypes.query = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery1b: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery3: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery4: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gatsby\")`\n fragment ListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery5: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query MyQuery5 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery6: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gatsby\")`\n query MyQuery6 {\n lists {\n ...ListFragment\n }\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery7: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "graphql`\n query MyQuery7 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: int; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment8], Raw.t) => t; + let verifyName: [ | `ListFragment8] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + [@bs.module "apollo-client"] external graphql: array(string) => int = "gql"; + let query = + graphql([| + "fragment ListFragment8 on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n", + |]); + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment8: [ | `ListFragment8], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment8 => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: int; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + [@bs.module "apollo-client"] + external graphql: (array(string), int) => int = "gql"; + let query = + graphql( + [| + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "", + |], + ListFragment8.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment8.verifyArgsAndParse( + ~fragmentName=`ListFragment8, + value, + ); + }, + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + } + and lists = { + let value = (value: t).lists; + ListFragment8.serialize(value); + }; + {lists, variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/typename.re.txt b/snapshot_tests/operations/expected/records/generate/typename.re.txt new file mode 100644 index 00000000..45f327db --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/typename.re.txt @@ -0,0 +1,210 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + let query = "query {\nfirst: nestedObject {\n__typename \ninner {\n__typename \ninner {\n__typename \nfield \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + __typename: { + let value = (value: Raw.t_first).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_first_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_first_inner_inner).__typename; + value; + }, + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_first_inner_inner).__typename; + value; + }; + {__typename, field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first + ); + }; + {first: first}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/union.re.txt b/snapshot_tests/operations/expected/records/generate/union.re.txt new file mode 100644 index 00000000..40c3c302 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/union.re.txt @@ -0,0 +1,677 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryNoError: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +type named = { + name: string, + __typename: string, +}; +module NamedQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \n__typename \n}\n\n...on Human {\nname \n__typename \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + }: named + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + }: named + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Dog"}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Human"}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module NamedSpread = { + module DogFields: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => named; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: named => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFields], Raw.t) => t; + let verifyName: [ | `DogFields] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + let query = "fragment DogFields on Dog {\nname \n__typename \n}\n"; + let parse: Raw.t => named = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + }: named + ); + let serialize: named => Raw.t = + (value) => ( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFields: [ | `DogFields], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFields => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module DogOrHuman: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = + "query dogOrHuman {\ndogOrHuman {\n__typename\n...on Dog {\n...DogFields \n}\n\n}\n\n}\n" + ++ DogFields.query; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFields.Raw.t = Obj.magic(value); + + DogFields.verifyArgsAndParse( + ~fragmentName=`DogFields, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFields.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/records/generate/unionPartial.re.txt b/snapshot_tests/operations/expected/records/generate/unionPartial.re.txt new file mode 100644 index 00000000..4c9be5c1 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/unionPartial.re.txt @@ -0,0 +1,143 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query = "query {\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/records/generate/variant.re.txt b/snapshot_tests/operations/expected/records/generate/variant.re.txt new file mode 100644 index 00000000..c1edd9a1 --- /dev/null +++ b/snapshot_tests/operations/expected/records/generate/variant.re.txt @@ -0,0 +1,292 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + let query = "mutation {\nmutationForVariant {\nbaseType \nbaseTypeList \ndog {\nname \nbarkVolume \n}\n\nhuman {\nname \n}\n\ndogOrHuman {\n__typename\n...on Dog {\nname \nbarkVolume \n}\n\n...on Human {\nname \n}\n\n}\n\n}\n\n}\n"; + let parse: Raw.t => t = + (value) => ( + { + mutationForVariant: { + let value = (value: Raw.t).mutationForVariant; + switch (Js.Json.decodeObject(Obj.magic(value): Js.Json.t)) { + | None => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "Expected type " + ++ "VariantTestResult" + ++ " to be an object", + ) + | Some(value) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseType"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseType(value); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseTypeList"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseTypeList(value |> Js.Array.map(value => value)); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "dog"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Dog( + { + name: { + let value = (value: Raw.t_mutationForVariant_dog).name; + value; + }, + barkVolume: { + let value = + (value: Raw.t_mutationForVariant_dog).barkVolume; + value; + }, + }: t_mutationForVariant_dog, + ); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "human"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Human( + { + name: { + let value = + (value: Raw.t_mutationForVariant_human).name; + value; + }, + }: t_mutationForVariant_human, + ); + | Some(_) => + let temp = + Js.Dict.unsafeGet(Obj.magic(value), "dogOrHuman"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `DogOrHuman( + { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "__typename", + ), + ); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Dog = + Obj.magic(value); + ( + { + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + name; + value; + }, + barkVolume: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + barkVolume; + value; + }, + }: t_mutationForVariant_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Human = + Obj.magic(value); + ( + { + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Human + ). + name; + value; + }, + }: t_mutationForVariant_dogOrHuman_Human + ); + }, + ) + | _ => + `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_mutationForVariant_dogOrHuman + ); + }, + ); + | Some(_) => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "All fields on variant selection set on type " + ++ "VariantTestResult" + ++ " were null", + ) + }; + }; + }; + }; + }; + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationForVariant = { + let value = (value: t).mutationForVariant; + let _temp = value; + Obj.magic(Js.Json.null); + }; + {mutationForVariant: mutationForVariant}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/compile/argNamedQuery.re.txt b/snapshot_tests/operations/expected/template/compile/argNamedQuery.re.txt new file mode 100644 index 00000000..aac1f29f --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/argNamedQuery.re.txt @@ -0,0 +1,138 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($query: Int!) { + argNamedQuery(query: $query) + } +`); + +function parse(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables(inp) { + return { + query: inp.query + }; +} + +function makeVariables(query, param) { + return { + query: query + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query Query1($query: Int!) { + argNamedQuery(query: $query) + } +`); + +function parse$1(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$1(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$1(inp) { + return { + query: inp.query + }; +} + +function makeVariables$1(query, param) { + return { + query: query + }; +} + +var Query1 = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query Query2($query: Int!) { + argNamedQuery(query: $query) + } +`); + +function parse$2(value) { + return { + argNamedQuery: value.argNamedQuery + }; +} + +function serialize$2(value) { + var value$1 = value.argNamedQuery; + return { + argNamedQuery: value$1 + }; +} + +function serializeVariables$2(inp) { + return { + query: inp.query + }; +} + +function makeVariables$2(query, param) { + return { + query: query + }; +} + +var Query2 = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2 +}; + +var MultipleQueryWithSameVarName = { + Query1: Query1, + Query2: Query2 +}; + +exports.MyQuery = MyQuery; +exports.MultipleQueryWithSameVarName = MultipleQueryWithSameVarName; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/comment.re.txt b/snapshot_tests/operations/expected/template/compile/comment.re.txt new file mode 100644 index 00000000..56457bfe --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/comment.re.txt @@ -0,0 +1,107 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +var query = (require("gql")` + query ($arg: NonrecursiveInput!) { + nonrecursiveInput(arg: $arg) + } +`); + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/customDecoder.re.txt b/snapshot_tests/operations/expected/template/compile/customDecoder.re.txt new file mode 100644 index 00000000..2c5b422a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/customDecoder.re.txt @@ -0,0 +1,89 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_format = require("rescript/lib/js/caml_format.js"); + +function parse(prim) { + return String(prim); +} + +var serialize = Caml_format.caml_int_of_string; + +var StringOfInt = { + parse: parse, + serialize: serialize +}; + +var parse$1 = Caml_format.caml_int_of_string; + +function serialize$1(prim) { + return String(prim); +} + +var IntOfString = { + parse: parse$1, + serialize: serialize$1 +}; + +var Raw = {}; + +var query = (require("gql")` + query { + variousScalars { + string + int + } + } +`); + +function parse$2(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + string: Caml_format.caml_int_of_string(value$1.string), + int: String(value$1.int) + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = Caml_format.caml_int_of_string(value$2); + var value$4 = value$1.string; + var value$5 = String(value$4); + var variousScalars = { + string: value$5, + int: value$3 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.StringOfInt = StringOfInt; +exports.IntOfString = IntOfString; +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/customScalars.re.txt b/snapshot_tests/operations/expected/template/compile/customScalars.re.txt new file mode 100644 index 00000000..a967c8a5 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/customScalars.re.txt @@ -0,0 +1,67 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +var query = (require("gql")` + query ($opt: CustomScalar, $req: CustomScalar!) { + customScalarField(argOptional: $opt, argRequired: $req) { + nullable + nonNullable + } + } +`); + +function parse(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nullable; + return { + customScalarField: { + nullable: !(value$2 == null) ? Caml_option.some(value$2) : undefined, + nonNullable: value$1.nonNullable + } + }; +} + +function serialize(value) { + var value$1 = value.customScalarField; + var value$2 = value$1.nonNullable; + var value$3 = value$1.nullable; + var nullable = value$3 !== undefined ? Caml_option.valFromOption(value$3) : null; + var customScalarField = { + nullable: nullable, + nonNullable: value$2 + }; + return { + customScalarField: customScalarField + }; +} + +function serializeVariables(inp) { + var a = inp.opt; + return { + opt: a !== undefined ? Caml_option.valFromOption(a) : undefined, + req: inp.req + }; +} + +function makeVariables(opt, req, param) { + return { + opt: opt, + req: req + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/customTypes.re.txt b/snapshot_tests/operations/expected/template/compile/customTypes.re.txt new file mode 100644 index 00000000..1ce43323 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/customTypes.re.txt @@ -0,0 +1,173 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +function parse(json) { + var match = Js_json.decodeString(json); + if (match === undefined) { + return /* Red */0; + } + switch (match) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var Color = { + parse: parse, + serialize: serialize +}; + +function parse$1(color) { + if (color === undefined) { + return /* Red */0; + } + switch (color) { + case "blue" : + return /* Blue */2; + case "green" : + return /* Green */1; + case "red" : + return /* Red */0; + default: + return /* Red */0; + } +} + +function serialize$1(color) { + switch (color) { + case /* Red */0 : + return "red"; + case /* Green */1 : + return "green"; + case /* Blue */2 : + return "blue"; + + } +} + +var NullableString = { + parse: parse$1, + serialize: serialize$1 +}; + +function parse$2(json) { + var str = Js_json.decodeString(json); + if (str !== undefined) { + return new Date(str); + } else { + return new Date(); + } +} + +function serialize$2(date) { + return date.toISOString(); +} + +var DateTime = { + parse: parse$2, + serialize: serialize$2 +}; + +var Raw = {}; + +var query = (require("gql")` + query { + customFields { + currentTime + favoriteColor + futureTime + nullableColor + nullableString + } + } +`); + +function parse$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.futureTime; + var value$3 = value$1.nullableColor; + var value$4 = value$1.nullableString; + return { + customFields: { + currentTime: parse$2(value$1.currentTime), + favoriteColor: parse(value$1.favoriteColor), + futureTime: !(value$2 == null) ? Caml_option.some(parse$2(value$2)) : undefined, + nullableColor: !(value$3 == null) ? parse(value$3) : undefined, + nullableString: parse$1(!(value$4 == null) ? value$4 : undefined) + } + }; +} + +function serialize$3(value) { + var value$1 = value.customFields; + var value$2 = value$1.nullableString; + var value$3 = serialize$1(value$2); + var nullableString = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.nullableColor; + var nullableColor = value$4 !== undefined ? serialize(value$4) : null; + var value$5 = value$1.futureTime; + var futureTime = value$5 !== undefined ? Caml_option.valFromOption(value$5).toISOString() : null; + var value$6 = value$1.favoriteColor; + var value$7 = serialize(value$6); + var value$8 = value$1.currentTime; + var value$9 = value$8.toISOString(); + var customFields = { + currentTime: value$9, + favoriteColor: value$7, + futureTime: futureTime, + nullableColor: nullableColor, + nullableString: nullableString + }; + return { + customFields: customFields + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Color = Color; +exports.NullableString = NullableString; +exports.DateTime = DateTime; +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/template/compile/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..9e7af7c2 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,49 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + defaultObjectValueOnScalar(filter: {some: {json: "value"}}, arg: {field: "otherValue"}) + } +`); + +function parse(value) { + return { + defaultObjectValueOnScalar: value.defaultObjectValueOnScalar + }; +} + +function serialize(value) { + var value$1 = value.defaultObjectValueOnScalar; + return { + defaultObjectValueOnScalar: value$1 + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/enumInput.re.txt b/snapshot_tests/operations/expected/template/compile/enumInput.re.txt new file mode 100644 index 00000000..b2dbee9a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/enumInput.re.txt @@ -0,0 +1,51 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($arg: SampleField!) { + enumInput(arg: $arg) + } +`); + +function parse(value) { + return { + enumInput: value.enumInput + }; +} + +function serialize(value) { + var value$1 = value.enumInput; + return { + enumInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.arg; + return { + arg: a === "THIRD" ? "THIRD" : ( + a === "SECOND" ? "SECOND" : "FIRST" + ) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/template/compile/ewert_reproduction.re.txt new file mode 100644 index 00000000..dd4ce1ff --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/ewert_reproduction.re.txt @@ -0,0 +1,63 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + fragment UserData on Workspace { + user(id: $userId) { + id + firstname + lastname + } + } +`); + +function parse(value) { + var value$1 = value.user; + var value$2 = value$1.firstname; + return { + user: { + id: value$1.id, + firstname: !(value$2 == null) ? value$2 : undefined, + lastname: value$1.lastname + } + }; +} + +function serialize(value) { + var value$1 = value.user; + var value$2 = value$1.lastname; + var value$3 = value$1.firstname; + var firstname = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.id; + var user = { + id: value$4, + firstname: firstname, + lastname: value$2 + }; + return { + user: user + }; +} + +function verifyArgsAndParse(_userId, _UserData, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var UserData = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.UserData = UserData; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/explicit_object_record.re.txt b/snapshot_tests/operations/expected/template/compile/explicit_object_record.re.txt new file mode 100644 index 00000000..44fb7a87 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/explicit_object_record.re.txt @@ -0,0 +1,211 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +`); + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var RecordsQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +`); + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ObjectsQuery = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.RecordsQuery = RecordsQuery; +exports.ObjectsQuery = ObjectsQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/extensions.re.txt b/snapshot_tests/operations/expected/template/compile/extensions.re.txt new file mode 100644 index 00000000..1c221648 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/extensions.re.txt @@ -0,0 +1,253 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function ExtendQuery(M) { + var use = function (param) { + + }; + return { + use: use + }; +} + +var Parent = { + ExtendQuery: ExtendQuery +}; + +var Raw = {}; + +var query = (require("gql")` + query Bla { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +`); + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Bla_inner = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +function use(param) { + +} + +var Bla = { + Bla_inner: Bla_inner, + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables, + use: use +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query Bla2 { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +`); + +function parse$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize$1(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var Inner = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +function use$1(param) { + +} + +exports.Parent = Parent; +exports.Bla = Bla; +exports.Inner = Inner; +exports.Raw = Raw$1; +exports.query = query$1; +exports.parse = parse$1; +exports.serialize = serialize$1; +exports.serializeVariables = serializeVariables$1; +exports.makeVariables = makeVariables$1; +exports.makeDefaultVariables = makeDefaultVariables$1; +exports.use = use$1; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/template/compile/fragmentDefinition.re.txt new file mode 100644 index 00000000..100a655b --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/fragmentDefinition.re.txt @@ -0,0 +1,485 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (require("gql")` + fragment ListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + fragment Another on Lists { + nullableOfNonNullable + } +`); + +function parse$1(value) { + var value$1 = value.nullableOfNonNullable; + return { + nullableOfNonNullable: !(value$1 == null) ? value$1.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + return { + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + fragment FragmentWithArgs on Lists { + listWithArg(arg1: $arg1) + } +`); + +function parse$2(value) { + var value$1 = value.listWithArg; + return { + listWithArg: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize$2(value) { + var value$1 = value.listWithArg; + var listWithArg = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + listWithArg: listWithArg + }; +} + +function verifyArgsAndParse$2(_arg1, _FragmentWithArgs, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var FragmentWithArgs = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gql")` + fragment InlineListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse$3(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$3(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$3(_InlineListFragment, value) { + return parse$3(value); +} + +function verifyName$3(param) { + +} + +var InlineListFragment = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse$3, + verifyName: verifyName$3 +}; + +var Raw$4 = {}; + +var query$4 = (require("gql")` + fragment InlineListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse$4(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$4(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$4(_InlineListFragment, value) { + return parse$4(value); +} + +function verifyName$4(param) { + +} + +var Wrapper = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + verifyArgsAndParse: verifyArgsAndParse$4, + verifyName: verifyName$4 +}; + +var Raw$5 = {}; + +var query$5 = ((frag_0, frag_1, frag_2) => require("gql")` + query MyQuery($arg1: String) { + l1: lists { + ...ListFragment + } + l2: lists { + ...ListFragment + ...ListFragment + } + l3: lists { + nullableOfNullable + ...ListFragment + ...ListFragment + } + l4: lists { + nullableOfNullable + ...InlineListFragment + } + l5: lists { + ...FragmentWithArgs + } + } + ${frag_0} + ${frag_1} + ${frag_2} +`)(query$2, query$3, query); + +function parse$5(value) { + var value$1 = value.l2; + var value$2 = value.l3; + var value$3 = value$2["nullableOfNullable"]; + var value$4 = value.l4; + var value$5 = value$4["nullableOfNullable"]; + return { + l1: parse(value.l1), + l2: { + frag1: parse(value$1), + frag2: parse(value$1) + }, + l3: { + nullableOfNullable: !(value$3 == null) ? value$3.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + frag1: parse(value$2), + frag2: parse(value$2) + }, + l4: { + nullableOfNullable: !(value$5 == null) ? value$5.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + inlineListFragment: parse$3(value$4) + }, + l5: parse$2(value.l5) + }; +} + +function serialize$5(value) { + var value$1 = value.l5; + var l5 = serialize$2(value$1); + var value$2 = value.l4; + var value$3 = value$2.nullableOfNullable; + var l4 = [serialize$3(value$2.inlineListFragment)].reduce(deepMerge, { + nullableOfNullable: value$3 !== undefined ? value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); + var value$4 = value.l3; + var value$5 = value$4.nullableOfNullable; + var l3 = [ + serialize(value$4.frag1), + serialize(value$4.frag2) + ].reduce(deepMerge, { + nullableOfNullable: value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); + var value$6 = value.l2; + var l2 = [ + serialize(value$6.frag1), + serialize(value$6.frag2) + ].reduce(deepMerge, (function (prim) { + return {}; + })); + var value$7 = value.l1; + var l1 = serialize(value$7); + return { + l1: l1, + l2: l2, + l3: l3, + l4: l4, + l5: l5 + }; +} + +function serializeVariables(inp) { + var a = inp.arg1; + return { + arg1: a !== undefined ? a : undefined + }; +} + +function makeVariables(arg1, param) { + return { + arg1: arg1 + }; +} + +function makeDefaultVariables(param) { + return { + arg1: undefined + }; +} + +var MyQuery = { + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$6 = {}; + +var query$6 = ((frag_0) => require("gql")` + query { + lists { + ...ListFragment + } + } + ${frag_0} +`)(query); + +function parse$6(value) { + return { + lists: parse(value.lists) + }; +} + +function serialize$6(value) { + var value$1 = value.lists; + var lists = serialize(value$1); + return { + lists: lists + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery2 = { + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +exports.FragmentWithArgs = FragmentWithArgs; +exports.InlineListFragment = InlineListFragment; +exports.Wrapper = Wrapper; +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/template/compile/fragmentInFragment.re.txt new file mode 100644 index 00000000..389946dd --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/fragmentInFragment.re.txt @@ -0,0 +1,120 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (require("gql")` + fragment ListFragment on Lists { + nullableOfNullable + } +`); + +function parse(value) { + var value$1 = value.nullableOfNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined + }; +} + +function serialize(value) { + var value$1 = value.nullableOfNullable; + var nullableOfNullable = value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = ((frag_0) => require("gql")` + fragment Another on Lists { + nullableOfNullable + ...ListFragment + } + ${frag_0} +`)(query); + +function parse$1(value) { + var value$1 = value["nullableOfNullable"]; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + listFragment: parse(value) + }; +} + +function serialize$1(value) { + var value$1 = value.nullableOfNullable; + return [serialize(value.listFragment)].reduce(deepMerge, { + nullableOfNullable: value$1 !== undefined ? value$1.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null + }); +} + +function verifyArgsAndParse$1(_Another, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var Another = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.ListFragment = ListFragment; +exports.Another = Another; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/template/compile/fragmentOnInterface.re.txt new file mode 100644 index 00000000..54146408 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/fragmentOnInterface.re.txt @@ -0,0 +1,143 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (require("gql")` + fragment InterfaceFragment on User { + __typename + id + } +`); + +function parse(value) { + return { + id: value.id + }; +} + +function serialize(value) { + var value$1 = value.id; + return { + id: value$1 + }; +} + +function verifyArgsAndParse(_InterfaceFragment, value) { + return { + id: value.id + }; +} + +function verifyName(param) { + +} + +var InterfaceFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = ((frag_0) => require("gql")` + fragment AnotherFragment on User { + __typename + id + ...InterfaceFragment + } + ${frag_0} +`)(query); + +function parse$1(value) { + return { + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$1(value) { + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + id: value.id + }); +} + +function verifyArgsAndParse$1(_AnotherFragment, value) { + return parse$1(value); +} + +function verifyName$1(param) { + +} + +var AnotherFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = ((frag_0) => require("gql")` + fragment AnonUser on AnonymousUser { + id + ...InterfaceFragment + } + ${frag_0} +`)(query); + +function parse$2(value) { + return { + id: value["id"], + interfaceFragment: { + id: value.id + } + }; +} + +function serialize$2(value) { + return [serialize(value.interfaceFragment)].reduce(deepMerge, { + id: value.id + }); +} + +function verifyArgsAndParse$2(_AnonUser, value) { + return parse$2(value); +} + +function verifyName$2(param) { + +} + +var AnonUser = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + verifyArgsAndParse: verifyArgsAndParse$2, + verifyName: verifyName$2 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.InterfaceFragment = InterfaceFragment; +exports.AnotherFragment = AnotherFragment; +exports.AnonUser = AnonUser; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/fragmentUnion.re.txt b/snapshot_tests/operations/expected/template/compile/fragmentUnion.re.txt new file mode 100644 index 00000000..0222e591 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/fragmentUnion.re.txt @@ -0,0 +1,178 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var assign_typename = ((obj, typename) => { obj.__typename = typename; return obj }); + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +var query = (require("gql")` + fragment DogFragment on Dog { + name + } +`); + +function parse(value) { + return { + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse(_DogFragment, value) { + return { + name: value.name + }; +} + +function verifyName(param) { + +} + +var DogFragment = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + fragment HumanFragment on Human { + name + } +`); + +function parse$1(value) { + return { + name: value.name + }; +} + +function serialize$1(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse$1(_HumanFragment, value) { + return { + name: value.name + }; +} + +function verifyName$1(param) { + +} + +var HumanFragment = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$2 = {}; + +var query$2 = ((frag_0, frag_1) => require("gql")` + query MyQuery { + dogOrHuman { + __typename + ...on Dog { + ...DogFragment + } + ...on Human { + ...HumanFragment + } + } + } + ${frag_0} + ${frag_1} +`)(query, query$1); + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman = variant === "FutureAddedValue" ? value$1.VAL : ( + variant === "Dog" ? assign_typename(serialize(value$1.VAL), "Dog") : assign_typename(serialize$1(value$1.VAL), "Human") + ); + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.DogFragment = DogFragment; +exports.HumanFragment = HumanFragment; +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/template/compile/fragmentvariableinput.re.txt new file mode 100644 index 00000000..45e464d6 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/fragmentvariableinput.re.txt @@ -0,0 +1,63 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + fragment test on Post { + reposts(arg: {name: $name}) { + id + } + } +`); + +function parse(value) { + var value$1 = value.reposts; + return { + reposts: value$1.map(function (value) { + if (!(value == null)) { + return { + id: value.id + }; + } + + }) + }; +} + +function serialize(value) { + var value$1 = value.reposts; + var reposts = value$1.map(function (value) { + if (value === undefined) { + return null; + } + var value$1 = value.id; + return { + id: value$1 + }; + }); + return { + reposts: reposts + }; +} + +function verifyArgsAndParse(_name, _test, value) { + return parse(value); +} + +function verifyName(param) { + +} + +var Test = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +exports.Test = Test; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/hasuraRepro.re.txt b/snapshot_tests/operations/expected/template/compile/hasuraRepro.re.txt new file mode 100644 index 00000000..e7f65e80 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/hasuraRepro.re.txt @@ -0,0 +1,108 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + fragment Dog on Dog { + name + } +`); + +function parse(value) { + return { + name: value.name + }; +} + +function serialize(value) { + var value$1 = value.name; + return { + name: value$1 + }; +} + +function verifyArgsAndParse(_Dog, value) { + return { + name: value.name + }; +} + +function verifyName(param) { + +} + +var Dog = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$1 = {}; + +var query$1 = ((frag_0) => require("gql")` + query HasuraRepro($blockNumber: Int, $type: String) { + hasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) { + ...Dog + } + } + ${frag_0} +`)(query); + +function parse$1(value) { + var value$1 = value.hasuraRepro; + return { + hasuraRepro: { + name: value$1.name + } + }; +} + +function serialize$1(value) { + var value$1 = value.hasuraRepro; + var hasuraRepro = serialize(value$1); + return { + hasuraRepro: hasuraRepro + }; +} + +function serializeVariables(inp) { + var a = inp.blockNumber; + var a$1 = inp.type; + return { + blockNumber: a !== undefined ? a : undefined, + type: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(blockNumber, type_, param) { + return { + blockNumber: blockNumber, + type: type_ + }; +} + +function makeDefaultVariables(param) { + return { + blockNumber: undefined, + type: undefined + }; +} + +var HasuraRepro = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.Dog = Dog; +exports.HasuraRepro = HasuraRepro; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/interface.re.txt b/snapshot_tests/operations/expected/template/compile/interface.re.txt new file mode 100644 index 00000000..aa9e6ba8 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/interface.re.txt @@ -0,0 +1,449 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (require("gql")` + query { + users { + __typename + ...on AdminUser { + id + name + } + ...on AnonymousUser { + id + anonymousId + } + } + } +`); + +function parse(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + switch (typename) { + case "AdminUser" : + return { + NAME: "AdminUser", + VAL: { + id: value.id, + name: value.name + } + }; + case "AnonymousUser" : + return { + NAME: "AnonymousUser", + VAL: { + id: value.id, + anonymousId: value.anonymousId + } + }; + default: + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var variant = value.NAME; + if (variant === "UnspecifiedFragment") { + return {}; + } + if (variant === "AdminUser") { + var value$1 = value.VAL; + var value$2 = value$1.name; + var value$3 = value$1.id; + return { + __typename: "AdminUser", + id: value$3, + name: value$2 + }; + } + var value$4 = value.VAL; + var value$5 = value$4.anonymousId; + var value$6 = value$4.id; + return { + __typename: "AnonymousUser", + id: value$6, + anonymousId: value$5 + }; + }); + return { + users: users + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var QueryWithOnlyFragments = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + users { + __typename + ...on AdminUser { + __typename + id + } + } + } +`); + +function parse$1(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + if (typename === "AdminUser") { + return { + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }; + } else { + return { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + }) + }; +} + +function serialize$1(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + if (value.NAME !== "AdminUser") { + return {}; + } + var value$1 = value.VAL.id; + return { + __typename: "AdminUser", + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var QueryWithTypename = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + users { + __typename + id + ...on AdminUser { + name + } + ...on AnonymousUser { + anonymousId + } + } + } +`); + +function parse$2(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp; + switch (typename) { + case "AdminUser" : + tmp = { + NAME: "AdminUser", + VAL: { + name: value.name + } + }; + break; + case "AnonymousUser" : + tmp = { + NAME: "AnonymousUser", + VAL: { + anonymousId: value.anonymousId + } + }; + break; + default: + tmp = { + NAME: "UnspecifiedFragment", + VAL: typename + }; + } + return { + fragment: tmp, + id: value["id"] + }; + }) + }; +} + +function serialize$2(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.fragment; + var variant = value$1.NAME; + var tmp; + if (variant === "UnspecifiedFragment") { + tmp = {}; + } else if (variant === "AdminUser") { + var value$2 = value$1.VAL.name; + tmp = { + __typename: "AdminUser", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.anonymousId; + tmp = { + __typename: "AnonymousUser", + anonymousId: value$3 + }; + } + return [tmp].reduce(deepMerge, { + id: value.id + }); + }); + return { + users: users + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var QueryWithMixedFragments = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gql")` + query { + users { + __typename + id + __typename + ...on AdminUser { + __typename + id + } + } + } +`); + +function parse$3(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + var typename = value["__typename"]; + var tmp = typename === "AdminUser" ? ({ + NAME: "AdminUser", + VAL: { + __typename: value.__typename, + id: value.id + } + }) : ({ + NAME: "UnspecifiedFragment", + VAL: typename + }); + return { + fragment: tmp, + __typename: value["__typename"], + id: value["id"] + }; + }) + }; +} + +function serialize$3(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + var value$2 = value.__typename; + var value$3 = value.fragment; + var tmp; + if (value$3.NAME === "AdminUser") { + var value$4 = value$3.VAL.id; + tmp = { + __typename: "AdminUser", + id: value$4 + }; + } else { + tmp = {}; + } + return [tmp].reduce(deepMerge, { + __typename: value$2, + id: value$1 + }); + }); + return { + users: users + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MixedQueryWithTypename = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +var query$4 = (require("gql")` + query { + users { + __typename + id + } + } +`); + +function parse$4(value) { + var value$1 = value.users; + return { + users: value$1.map(function (value) { + return { + id: value.id + }; + }) + }; +} + +function serialize$4(value) { + var value$1 = value.users; + var users = value$1.map(function (value) { + var value$1 = value.id; + return { + id: value$1 + }; + }); + return { + users: users + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var QueryWithoutFragments = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.QueryWithOnlyFragments = QueryWithOnlyFragments; +exports.QueryWithTypename = QueryWithTypename; +exports.QueryWithMixedFragments = QueryWithMixedFragments; +exports.MixedQueryWithTypename = MixedQueryWithTypename; +exports.QueryWithoutFragments = QueryWithoutFragments; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/lists.re.txt b/snapshot_tests/operations/expected/template/compile/lists.re.txt new file mode 100644 index 00000000..cd01ccb5 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/lists.re.txt @@ -0,0 +1,108 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +`); + +function parse(value) { + var value$1 = value.lists; + var value$2 = value$1.nullableOfNullable; + var value$3 = value$1.nullableOfNonNullable; + var value$4 = value$1.nonNullableOfNullable; + var value$5 = value$1.nonNullableOfNonNullable; + return { + lists: { + nullableOfNullable: !(value$2 == null) ? value$2.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$3 == null) ? value$3.map(function (value) { + return value; + }) : undefined, + nonNullableOfNullable: value$4.map(function (value) { + if (!(value == null)) { + return value; + } + + }), + nonNullableOfNonNullable: value$5.map(function (value) { + return value; + }) + } + }; +} + +function serialize(value) { + var value$1 = value.lists; + var value$2 = value$1.nonNullableOfNonNullable; + var nonNullableOfNonNullable = value$2.map(function (value) { + return value; + }); + var value$3 = value$1.nonNullableOfNullable; + var nonNullableOfNullable = value$3.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }); + var value$4 = value$1.nullableOfNonNullable; + var nullableOfNonNullable = value$4 !== undefined ? value$4.map(function (value) { + return value; + }) : null; + var value$5 = value$1.nullableOfNullable; + var nullableOfNullable = value$5 !== undefined ? value$5.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + var lists = { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; + return { + lists: lists + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/listsArgs.re.txt b/snapshot_tests/operations/expected/template/compile/listsArgs.re.txt new file mode 100644 index 00000000..b01bbbd5 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/listsArgs.re.txt @@ -0,0 +1,72 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) { + listsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable}) + } +`); + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function makeVariables(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/listsInput.re.txt b/snapshot_tests/operations/expected/template/compile/listsInput.re.txt new file mode 100644 index 00000000..bffdaff2 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/listsInput.re.txt @@ -0,0 +1,86 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($arg: ListsInput!) { + listsInput(arg: $arg) + } +`); + +function parse(value) { + return { + listsInput: value.listsInput + }; +} + +function serialize(value) { + var value$1 = value.listsInput; + return { + listsInput: value$1 + }; +} + +function serializeInputObjectListsInput(inp) { + var a = inp.nullableOfNullable; + var a$1 = inp.nullableOfNonNullable; + var a$2 = inp.nonNullableOfNullable; + var a$3 = inp.nonNullableOfNonNullable; + return { + nullableOfNullable: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + nullableOfNonNullable: a$1 !== undefined ? a$1.map(function (b) { + return b; + }) : undefined, + nonNullableOfNullable: a$2.map(function (b) { + if (b !== undefined) { + return b; + } + + }), + nonNullableOfNonNullable: a$3.map(function (b) { + return b; + }) + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectListsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectListsInput(nullableOfNullable, nullableOfNonNullable, nonNullableOfNullable, nonNullableOfNonNullable, param) { + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable, + nonNullableOfNullable: nonNullableOfNullable, + nonNullableOfNonNullable: nonNullableOfNonNullable + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectListsInput: serializeInputObjectListsInput, + makeVariables: makeVariables, + makeInputObjectListsInput: makeInputObjectListsInput +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/module_type.re.txt b/snapshot_tests/operations/expected/template/compile/module_type.re.txt new file mode 100644 index 00000000..e9d43ee2 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/module_type.re.txt @@ -0,0 +1,134 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Curry = require("rescript/lib/js/curry.js"); + +((require("gql")` + query { + variousScalars { + string + } + } +`)); + +var MyQuery = {}; + +((require("gql")` + query { + variousScalars { + string + } + } +`)); + +var MyQuery2 = {}; + +function parse(nestedObject) { + return { + otherInner: nestedObject.inner + }; +} + +function serialize(t) { + return { + inner: t.otherInner + }; +} + +var VariousScalars = { + parse: parse, + serialize: serialize +}; + +var Raw = {}; + +var query = (require("gql")` + query { + nestedObject { + inner { + inner { + field + } + } + } + } +`); + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: Curry._1(parse, { + inner: tmp + }) + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = Curry._1(serialize, value$1); + var value$3 = value$2.inner; + var inner; + if (value$3 !== undefined) { + var value$4 = value$3.inner; + var inner$1; + if (value$4 !== undefined) { + var value$5 = value$4.field; + inner$1 = { + field: value$5 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQueryRecursive = { + Raw: Raw, + query: query, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +exports.MyQueryRecursive = MyQueryRecursive; +exports.VariousScalars = VariousScalars; +/* Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/mutation.re.txt b/snapshot_tests/operations/expected/template/compile/mutation.re.txt new file mode 100644 index 00000000..c58e94b9 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/mutation.re.txt @@ -0,0 +1,116 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + mutation { + mutationWithError { + value { + stringField + } + errors { + field + message + } + } + } +`); + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.value; + var value$3 = value$1.errors; + return { + mutationWithError: { + value: !(value$2 == null) ? ({ + stringField: value$2.stringField + }) : undefined, + errors: !(value$3 == null) ? value$3.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + field: tmp, + message: value.message + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.message; + var value$2 = value.field; + var field = typeof value$2 === "object" ? value$2.VAL : ( + value$2 === "THIRD" ? "THIRD" : ( + value$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + return { + field: field, + message: value$1 + }; + }) : null; + var value$3 = value$1.value; + var value$4; + if (value$3 !== undefined) { + var value$5 = value$3.stringField; + value$4 = { + stringField: value$5 + }; + } else { + value$4 = null; + } + var mutationWithError = { + value: value$4, + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/template/compile/mutationWithArgs.re.txt new file mode 100644 index 00000000..5b152778 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/mutationWithArgs.re.txt @@ -0,0 +1,48 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + mutation MyMutation($required: String!) { + optionalInputArgs(required: $required, anotherRequired: "val") + } +`); + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/template/compile/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..5b152778 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,48 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + mutation MyMutation($required: String!) { + optionalInputArgs(required: $required, anotherRequired: "val") + } +`); + +function parse(value) { + return { + optionalInputArgs: value.optionalInputArgs + }; +} + +function serialize(value) { + var value$1 = value.optionalInputArgs; + return { + optionalInputArgs: value$1 + }; +} + +function serializeVariables(inp) { + return { + required: inp.required + }; +} + +function makeVariables(required, param) { + return { + required: required + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/nested.re.txt b/snapshot_tests/operations/expected/template/compile/nested.re.txt new file mode 100644 index 00000000..091208f0 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/nested.re.txt @@ -0,0 +1,368 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + first: nestedObject { + inner { + inner { + field + } + } + } + second: nestedObject { + inner { + inner { + f1: field + f2: field + } + } + } + let: nestedObject { + inner { + inner { + field + } + } + } + } +`); + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + var value$4 = value.second; + var value$5 = value$4.inner; + var tmp$1; + if (value$5 == null) { + tmp$1 = undefined; + } else { + var value$6 = value$5.inner; + tmp$1 = { + inner: !(value$6 == null) ? ({ + f1: value$6.f1, + f2: value$6.f2 + }) : undefined + }; + } + var value$7 = value.let; + var value$8 = value$7.inner; + var tmp$2; + if (value$8 == null) { + tmp$2 = undefined; + } else { + var value$9 = value$8.inner; + tmp$2 = { + inner: !(value$9 == null) ? ({ + field: value$9.field + }) : undefined + }; + } + return { + first: { + inner: tmp + }, + second: { + inner: tmp$1 + }, + let: { + inner: tmp$2 + } + }; +} + +function serialize(value) { + var value$1 = value.let; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var let_ = { + inner: inner + }; + var value$5 = value.second; + var value$6 = value$5.inner; + var inner$2; + if (value$6 !== undefined) { + var value$7 = value$6.inner; + var inner$3; + if (value$7 !== undefined) { + var value$8 = value$7.f2; + var value$9 = value$7.f1; + inner$3 = { + f1: value$9, + f2: value$8 + }; + } else { + inner$3 = null; + } + inner$2 = { + inner: inner$3 + }; + } else { + inner$2 = null; + } + var second = { + inner: inner$2 + }; + var value$10 = value.first; + var value$11 = value$10.inner; + var inner$4; + if (value$11 !== undefined) { + var value$12 = value$11.inner; + var inner$5; + if (value$12 !== undefined) { + var value$13 = value$12.field; + inner$5 = { + field: value$13 + }; + } else { + inner$5 = null; + } + inner$4 = { + inner: inner$5 + }; + } else { + inner$4 = null; + } + var first = { + inner: inner$4 + }; + return { + first: first, + second: second, + let: let_ + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + nestedObject { + inner { + inner { + field + } + } + } + } +`); + +function parse$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + inner: tmp + } + }; +} + +function serialize$1(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryWithSig = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Test = { + MyQueryWithSig: MyQueryWithSig +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + nestedObject { + inner { + inner { + field + } + } + } + } +`); + +function parse$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + inner: !(value$3 == null) ? ({ + field: value$3.field + }) : undefined + }; + } + return { + nestedObject: { + inner: tmp + } + }; +} + +function serialize$2(value) { + var value$1 = value.nestedObject; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + inner$1 = { + field: value$4 + }; + } else { + inner$1 = null; + } + inner = { + inner: inner$1 + }; + } else { + inner = null; + } + var nestedObject = { + inner: inner + }; + return { + nestedObject: nestedObject + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQueryWithSigDirect = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +exports.MyQueryWithSigDirect = MyQueryWithSigDirect; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/template/compile/nonrecursiveInput.re.txt new file mode 100644 index 00000000..95688ed4 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/nonrecursiveInput.re.txt @@ -0,0 +1,214 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +var query = (require("gql")` + query ($arg: NonrecursiveInput!) { + nonrecursiveInput(arg: $arg) + } +`); + +function parse(value) { + return { + nonrecursiveInput: value.nonrecursiveInput + }; +} + +function serialize(value) { + var value$1 = value.nonrecursiveInput; + return { + nonrecursiveInput: value$1 + }; +} + +function serializeInputObjectEmbeddedInput(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectNonrecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectNonrecursiveInput(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput(field, param) { + return { + field: field + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput, + makeVariables: makeVariables, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) { + scalarsInput(arg: $arg) + more: scalarsInput(arg: $arg2) + } +`); + +function parse$1(value) { + return { + scalarsInput: value.scalarsInput, + more: value.more + }; +} + +function serialize$1(value) { + var value$1 = value.more; + var value$2 = value.scalarsInput; + return { + scalarsInput: value$2, + more: value$1 + }; +} + +function serializeInputObjectEmbeddedInput$1(inp) { + var a = inp.field; + return { + field: a !== undefined ? a : undefined + }; +} + +function serializeInputObjectNonrecursiveInput$1(inp) { + var a = inp.nullableArray; + var a$1 = inp.field; + var a$2 = inp.enum; + var a$3 = inp.embeddedInput; + var a$4 = inp.custom; + return { + nonNullableField: inp.nonNullableField, + nullableArray: a !== undefined ? a.map(function (b) { + if (b !== undefined) { + return b; + } + + }) : undefined, + field: a$1 !== undefined ? a$1 : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined, + embeddedInput: a$3 !== undefined ? a$3.map(function (b) { + if (b !== undefined) { + return serializeInputObjectEmbeddedInput$1(b); + } + + }) : undefined, + custom: a$4 !== undefined ? Caml_option.valFromOption(a$4) : undefined + }; +} + +function serializeVariables$1(inp) { + return { + arg: serializeInputObjectNonrecursiveInput$1(inp.arg), + arg2: serializeInputObjectNonrecursiveInput$1(inp.arg2) + }; +} + +function makeVariables$1(arg, arg2, param) { + return { + arg: arg, + arg2: arg2 + }; +} + +function makeInputObjectNonrecursiveInput$1(nonNullableField, nullableArray, field, $$enum, embeddedInput, custom, param) { + return { + nonNullableField: nonNullableField, + nullableArray: nullableArray, + field: field, + enum: $$enum, + embeddedInput: embeddedInput, + custom: custom + }; +} + +function makeInputObjectEmbeddedInput$1(field, param) { + return { + field: field + }; +} + +var MyQuery2 = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectNonrecursiveInput: serializeInputObjectNonrecursiveInput$1, + serializeInputObjectEmbeddedInput: serializeInputObjectEmbeddedInput$1, + makeVariables: makeVariables$1, + makeInputObjectNonrecursiveInput: makeInputObjectNonrecursiveInput$1, + makeInputObjectEmbeddedInput: makeInputObjectEmbeddedInput$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQuery2 = MyQuery2; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/template/compile/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..c1861d29 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/omitFutureValueEnum.re.txt @@ -0,0 +1,280 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + mutation { + mutationWithError { + errors { + message + field + } + } + } +`); + +function parse(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = typeof value$1 === "object" ? value$1.VAL : ( + value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ) + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + mutation { + mutationWithError { + errors { + message + field + } + } + } +`); + +function parse$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + mutation { + mutationWithError { + errors { + message + field + } + } + } +`); + +function parse$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + return { + mutationWithError: { + errors: !(value$2 == null) ? value$2.map(function (value) { + var value$1 = value.field; + var tmp; + switch (value$1) { + case "FIRST" : + tmp = "FIRST"; + break; + case "SECOND" : + tmp = "SECOND"; + break; + case "THIRD" : + tmp = "THIRD"; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + message: value.message, + field: tmp + }; + }) : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.mutationWithError; + var value$2 = value$1.errors; + var errors = value$2 !== undefined ? value$2.map(function (value) { + var value$1 = value.field; + var field = value$1 === "THIRD" ? "THIRD" : ( + value$1 === "SECOND" ? "SECOND" : "FIRST" + ); + var value$2 = value.message; + return { + message: value$2, + field: field + }; + }) : null; + var mutationWithError = { + errors: errors + }; + return { + mutationWithError: mutationWithError + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/template/compile/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..b607278a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/omitFutureValueUnion.re.txt @@ -0,0 +1,299 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } +`); + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var Normal = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } +`); + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var ByConfig = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } +`); + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var ByDirective = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +exports.Normal = Normal; +exports.ByConfig = ByConfig; +exports.ByDirective = ByDirective; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/template/compile/pokedexApolloMode.re.txt new file mode 100644 index 00000000..5f8a1371 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/pokedexApolloMode.re.txt @@ -0,0 +1,75 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + pokemon(name: "Pikachu") { + id + name + } + } +`); + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/pokedexScalars.re.txt b/snapshot_tests/operations/expected/template/compile/pokedexScalars.re.txt new file mode 100644 index 00000000..3618d16a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/pokedexScalars.re.txt @@ -0,0 +1,167 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query pokemon($id: String, $name: String) { + pokemon(name: $name, id: $id) { + id + name + } + } +`); + +function parse(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query pokemon($id: String, $name: String) { + pokemon(name: $name, id: $id) { + id + name + } + } +`); + +function parse$1(value) { + var value$1 = value.pokemon; + var tmp; + if (value$1 == null) { + tmp = undefined; + } else { + var value$2 = value$1.name; + tmp = { + id: value$1.id, + name: !(value$2 == null) ? value$2 : undefined + }; + } + return { + pokemon: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.pokemon; + var pokemon; + if (value$1 !== undefined) { + var value$2 = value$1.name; + var name = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.id; + pokemon = { + id: value$3, + name: name + }; + } else { + pokemon = null; + } + return { + pokemon: pokemon + }; +} + +function serializeVariables$1(inp) { + var a = inp.id; + var a$1 = inp.name; + return { + id: a !== undefined ? a : undefined, + name: a$1 !== undefined ? a$1 : undefined + }; +} + +function makeVariables$1(id, name, param) { + return { + id: id, + name: name + }; +} + +function makeDefaultVariables$1(param) { + return { + id: undefined, + name: undefined + }; +} + +var MyQueryDirectives = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +exports.MyQuery = MyQuery; +exports.MyQueryDirectives = MyQueryDirectives; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/record.re.txt b/snapshot_tests/operations/expected/template/compile/record.re.txt new file mode 100644 index 00000000..03b20994 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/record.re.txt @@ -0,0 +1,472 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +var query = (require("gql")` + query { + variousScalars { + __typename + string + int + } + } +`); + +function parse(value) { + var value$1 = value.variousScalars; + return { + variousScalars: { + __typename: value$1.__typename, + string: value$1.string, + int: value$1.int + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.int; + var value$3 = value$1.string; + var value$4 = value$1.__typename; + var variousScalars = { + __typename: value$4, + string: value$3, + int: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + variousScalars { + nullableString + } + } +`); + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var variousScalars = { + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var OneFieldQuery = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + variousScalars { + __typename + nullableString + } + } +`); + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + return { + variousScalars: { + __typename: value$1.__typename, + nullableString: !(value$2 == null) ? value$2 : undefined + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var nullableString = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.__typename; + var variousScalars = { + __typename: value$3, + nullableString: nullableString + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var OneFieldQueryWithTypename = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gql")` + fragment Fragment on VariousScalars { + string + int + } +`); + +function parse$3(value) { + return { + string: value.string, + int: value.int + }; +} + +function serialize$3(value) { + var value$1 = value.int; + var value$2 = value.string; + return { + string: value$2, + int: value$1 + }; +} + +function verifyArgsAndParse(_Fragment, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var Fragment = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$4 = ((frag_0) => require("gql")` + query { + variousScalars { + ...Fragment + } + } + ${frag_0} +`)(query$3); + +function parse$4(value) { + return { + variousScalars: parse$3(value.variousScalars) + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var variousScalars = serialize$3(value$1); + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var Untitled1 = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var ExternalFragmentQuery = { + Fragment: Fragment, + Untitled1: Untitled1 +}; + +var Raw$5 = {}; + +var query$5 = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + __typename + name + barkVolume + } + } + } +`); + +function parse$5(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + __typename: value$1.__typename, + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$5(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var InlineFragmentQuery = { + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$6 = {}; + +var query$6 = (require("gql")` + fragment DogFragment on Dog { + __typename + name + barkVolume + } +`); + +function parse$6(value) { + return { + __typename: value.__typename, + name: value.name, + barkVolume: value.barkVolume + }; +} + +function serialize$6(value) { + var value$1 = value.barkVolume; + var value$2 = value.name; + var value$3 = value.__typename; + return { + __typename: value$3, + name: value$2, + barkVolume: value$1 + }; +} + +function verifyArgsAndParse$1(_DogFragment, value) { + return parse$6(value); +} + +function verifyName$1(param) { + +} + +var DogFragment = { + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$7 = {}; + +var query$7 = ((frag_0) => require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + ...DogFragment + } + } + } + ${frag_0} +`)(query$6); + +function parse$7(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$6(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$7(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$6(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var Untitled1$1 = { + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var UnionExternalFragmentQuery = { + DogFragment: DogFragment, + Untitled1: Untitled1$1 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.OneFieldQuery = OneFieldQuery; +exports.OneFieldQueryWithTypename = OneFieldQueryWithTypename; +exports.ExternalFragmentQuery = ExternalFragmentQuery; +exports.InlineFragmentQuery = InlineFragmentQuery; +exports.UnionExternalFragmentQuery = UnionExternalFragmentQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/recursiveInput.re.txt b/snapshot_tests/operations/expected/template/compile/recursiveInput.re.txt new file mode 100644 index 00000000..d3fd6695 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/recursiveInput.re.txt @@ -0,0 +1,167 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($arg: RecursiveInput!) { + recursiveInput(arg: $arg) + } +`); + +function parse(value) { + return { + recursiveInput: value.recursiveInput + }; +} + +function serialize(value) { + var value$1 = value.recursiveInput; + return { + recursiveInput: value$1 + }; +} + +function serializeInputObjectRecursiveInput(inp) { + var a = inp.otherField; + var a$1 = inp.inner; + var a$2 = inp.enum; + return { + otherField: a !== undefined ? a : undefined, + inner: a$1 !== undefined ? serializeInputObjectRecursiveInput(a$1) : undefined, + enum: a$2 !== undefined ? ( + a$2 === "THIRD" ? "THIRD" : ( + a$2 === "SECOND" ? "SECOND" : "FIRST" + ) + ) : undefined + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectRecursiveInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectRecursiveInput(otherField, inner, $$enum, param) { + return { + otherField: otherField, + inner: inner, + enum: $$enum + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectRecursiveInput: serializeInputObjectRecursiveInput, + makeVariables: makeVariables, + makeInputObjectRecursiveInput: makeInputObjectRecursiveInput +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query Test($input: problem_input!) { + recursiveRepro(input: $input) + } +`); + +function parse$1(value) { + return { + recursiveRepro: value.recursiveRepro + }; +} + +function serialize$1(value) { + var value$1 = value.recursiveRepro; + return { + recursiveRepro: value$1 + }; +} + +function serializeInputObjectnested_type(inp) { + var a = inp.the_problem; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined + }; +} + +function serializeInputObjectproblem_input(inp) { + var a = inp.the_problem; + var a$1 = inp.b; + return { + the_problem: a !== undefined ? ({ + id: a.id + }) : undefined, + b: a$1 !== undefined ? serializeInputObjectnested_type(a$1) : undefined + }; +} + +function serializeInputObjectthis_will_be_duplicated(inp) { + return { + id: inp.id + }; +} + +function serializeVariables$1(inp) { + return { + input: serializeInputObjectproblem_input(inp.input) + }; +} + +function makeVariables$1(input, param) { + return { + input: input + }; +} + +function makeInputObjectproblem_input(the_problem, b, param) { + return { + the_problem: the_problem, + b: b + }; +} + +function makeInputObjectthis_will_be_duplicated(id, param) { + return { + id: id + }; +} + +function makeInputObjectnested_type(the_problem, param) { + return { + the_problem: the_problem + }; +} + +var Test = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + serializeInputObjectproblem_input: serializeInputObjectproblem_input, + serializeInputObjectthis_will_be_duplicated: serializeInputObjectthis_will_be_duplicated, + serializeInputObjectnested_type: serializeInputObjectnested_type, + makeVariables: makeVariables$1, + makeInputObjectproblem_input: makeInputObjectproblem_input, + makeInputObjectthis_will_be_duplicated: makeInputObjectthis_will_be_duplicated, + makeInputObjectnested_type: makeInputObjectnested_type +}; + +exports.MyQuery = MyQuery; +exports.Test = Test; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/scalars.re.txt b/snapshot_tests/operations/expected/template/compile/scalars.re.txt new file mode 100644 index 00000000..6e817bf6 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/scalars.re.txt @@ -0,0 +1,104 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/scalarsArgs.re.txt b/snapshot_tests/operations/expected/template/compile/scalarsArgs.re.txt new file mode 100644 index 00000000..2090ab2a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/scalarsArgs.re.txt @@ -0,0 +1,71 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) { + scalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id}) + } +`); + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeVariables(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function makeVariables(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/scalarsInput.re.txt b/snapshot_tests/operations/expected/template/compile/scalarsInput.re.txt new file mode 100644 index 00000000..4c3c8b5f --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/scalarsInput.re.txt @@ -0,0 +1,85 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($arg: VariousScalarsInput!) { + scalarsInput(arg: $arg) + } +`); + +function parse(value) { + return { + scalarsInput: value.scalarsInput + }; +} + +function serialize(value) { + var value$1 = value.scalarsInput; + return { + scalarsInput: value$1 + }; +} + +function serializeInputObjectVariousScalarsInput(inp) { + var a = inp.nullableString; + var a$1 = inp.nullableInt; + var a$2 = inp.nullableFloat; + var a$3 = inp.nullableBoolean; + var a$4 = inp.nullableID; + return { + nullableString: a !== undefined ? a : undefined, + string: inp.string, + nullableInt: a$1 !== undefined ? a$1 : undefined, + int: inp.int, + nullableFloat: a$2 !== undefined ? a$2 : undefined, + float: inp.float, + nullableBoolean: a$3 !== undefined ? a$3 : undefined, + boolean: inp.boolean, + nullableID: a$4 !== undefined ? a$4 : undefined, + id: inp.id + }; +} + +function serializeVariables(inp) { + return { + arg: serializeInputObjectVariousScalarsInput(inp.arg) + }; +} + +function makeVariables(arg, param) { + return { + arg: arg + }; +} + +function makeInputObjectVariousScalarsInput(nullableString, string, nullableInt, $$int, nullableFloat, $$float, nullableBoolean, $$boolean, nullableID, id, param) { + return { + nullableString: nullableString, + string: string, + nullableInt: nullableInt, + int: $$int, + nullableFloat: nullableFloat, + float: $$float, + nullableBoolean: nullableBoolean, + boolean: $$boolean, + nullableID: nullableID, + id: id + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + serializeInputObjectVariousScalarsInput: serializeInputObjectVariousScalarsInput, + makeVariables: makeVariables, + makeInputObjectVariousScalarsInput: makeInputObjectVariousScalarsInput +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/skipDirectives.re.txt b/snapshot_tests/operations/expected/template/compile/skipDirectives.re.txt new file mode 100644 index 00000000..108fd006 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/skipDirectives.re.txt @@ -0,0 +1,86 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query ($var: Boolean!) { + v1: variousScalars { + nullableString @skip(if: $var) + string @skip(if: $var) + } + v2: variousScalars { + nullableString @include(if: $var) + string @include(if: $var) + } + } +`); + +function parse(value) { + var value$1 = value.v1; + var value$2 = value$1.nullableString; + var value$3 = value$1.string; + var value$4 = value.v2; + var value$5 = value$4.nullableString; + var value$6 = value$4.string; + return { + v1: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: !(value$3 == null) ? value$3 : undefined + }, + v2: { + nullableString: !(value$5 == null) ? value$5 : undefined, + string: !(value$6 == null) ? value$6 : undefined + } + }; +} + +function serialize(value) { + var value$1 = value.v2; + var value$2 = value$1.string; + var string = value$2 !== undefined ? value$2 : null; + var value$3 = value$1.nullableString; + var nullableString = value$3 !== undefined ? value$3 : null; + var v2 = { + nullableString: nullableString, + string: string + }; + var value$4 = value.v1; + var value$5 = value$4.string; + var string$1 = value$5 !== undefined ? value$5 : null; + var value$6 = value$4.nullableString; + var nullableString$1 = value$6 !== undefined ? value$6 : null; + var v1 = { + nullableString: nullableString$1, + string: string$1 + }; + return { + v1: v1, + v2: v2 + }; +} + +function serializeVariables(inp) { + return { + var: inp.var + }; +} + +function makeVariables($$var, param) { + return { + var: $$var + }; +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/subscription.re.txt b/snapshot_tests/operations/expected/template/compile/subscription.re.txt new file mode 100644 index 00000000..c6cd8a29 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/subscription.re.txt @@ -0,0 +1,100 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + subscription { + simpleSubscription { + __typename + ...on Dog { + name + } + ...on Human { + name + } + } + } +`); + +function parse(value) { + var value$1 = value.simpleSubscription; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + simpleSubscription: tmp + }; +} + +function serialize(value) { + var value$1 = value.simpleSubscription; + var variant = value$1.NAME; + var simpleSubscription; + if (variant === "FutureAddedValue") { + simpleSubscription = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + simpleSubscription = { + __typename: "Dog", + name: value$2 + }; + } else { + var value$3 = value$1.VAL.name; + simpleSubscription = { + __typename: "Human", + name: value$3 + }; + } + return { + simpleSubscription: simpleSubscription + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/tagged_template.re.txt b/snapshot_tests/operations/expected/template/compile/tagged_template.re.txt new file mode 100644 index 00000000..641f8b8a --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/tagged_template.re.txt @@ -0,0 +1,964 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var ApolloClient = require("apollo-client"); + +function deepMerge(json1, param) { + return json1; +} + +var Graphql_ppx_runtime = { + deepMerge: deepMerge +}; + +var Raw = {}; + +var query = (require("gql")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var MyTypes = {}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$1(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQuery1a = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$2(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var MyQuery1b = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gatsby").graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$3(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var MyQuery2 = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var Raw$4 = {}; + +var query$4 = (require("gatsby").graphql` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$4(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$4(param) { + +} + +function makeVariables$4(param) { + +} + +function makeDefaultVariables$4(param) { + +} + +var MyQuery3 = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$4, + makeVariables: makeVariables$4, + makeDefaultVariables: makeDefaultVariables$4 +}; + +var Raw$5 = {}; + +var query$5 = (require("gatsby")` + query { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +`); + +function parse$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$5(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + return { + variousScalars: variousScalars + }; +} + +function serializeVariables$5(param) { + +} + +function makeVariables$5(param) { + +} + +function makeDefaultVariables$5(param) { + +} + +var MyQuery4 = { + Raw: Raw$5, + query: query$5, + parse: parse$5, + serialize: serialize$5, + serializeVariables: serializeVariables$5, + makeVariables: makeVariables$5, + makeDefaultVariables: makeDefaultVariables$5 +}; + +var Raw$6 = {}; + +var query$6 = (require("gatsby")` + fragment ListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +`); + +function parse$6(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$6(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse(_ListFragment, value) { + return parse$6(value); +} + +function verifyName(param) { + +} + +var ListFragment = { + Raw: Raw$6, + query: query$6, + parse: parse$6, + serialize: serialize$6, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$7 = {}; + +var query$7 = (require("gatsby")` + query MyQuery5 { + lists { + ...ListFragment + } + } +`); + +function parse$7(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$7(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$6(param) { + +} + +function makeVariables$6(param) { + +} + +function makeDefaultVariables$6(param) { + +} + +var MyQuery5 = { + Raw: Raw$7, + query: query$7, + parse: parse$7, + serialize: serialize$7, + serializeVariables: serializeVariables$6, + makeVariables: makeVariables$6, + makeDefaultVariables: makeDefaultVariables$6 +}; + +var Raw$8 = {}; + +var query$8 = ((frag_0) => require("gatsby")` + query MyQuery6 { + lists { + ...ListFragment + } + } + ${frag_0} +`)(query$6); + +function parse$8(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$8(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$7(param) { + +} + +function makeVariables$7(param) { + +} + +function makeDefaultVariables$7(param) { + +} + +var MyQuery6 = { + Raw: Raw$8, + query: query$8, + parse: parse$8, + serialize: serialize$8, + serializeVariables: serializeVariables$7, + makeVariables: makeVariables$7, + makeDefaultVariables: makeDefaultVariables$7 +}; + +var Raw$9 = {}; + +var query$9 = (require("gql")` + query MyQuery7 { + lists { + ...ListFragment + } + } +`); + +function parse$9(value) { + return { + lists: parse$6(value.lists) + }; +} + +function serialize$9(value) { + var value$1 = value.lists; + var lists = serialize$6(value$1); + return { + lists: lists + }; +} + +function serializeVariables$8(param) { + +} + +function makeVariables$8(param) { + +} + +function makeDefaultVariables$8(param) { + +} + +var MyQuery7 = { + Raw: Raw$9, + query: query$9, + parse: parse$9, + serialize: serialize$9, + serializeVariables: serializeVariables$8, + makeVariables: makeVariables$8, + makeDefaultVariables: makeDefaultVariables$8 +}; + +var Raw$10 = {}; + +var query$10 = ApolloClient.gql(["fragment ListFragment8 on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n"]); + +function parse$10(value) { + var value$1 = value.nullableOfNullable; + var value$2 = value.nullableOfNonNullable; + return { + nullableOfNullable: !(value$1 == null) ? value$1.map(function (value) { + if (!(value == null)) { + return value; + } + + }) : undefined, + nullableOfNonNullable: !(value$2 == null) ? value$2.map(function (value) { + return value; + }) : undefined + }; +} + +function serialize$10(value) { + var value$1 = value.nullableOfNonNullable; + var nullableOfNonNullable = value$1 !== undefined ? value$1.map(function (value) { + return value; + }) : null; + var value$2 = value.nullableOfNullable; + var nullableOfNullable = value$2 !== undefined ? value$2.map(function (value) { + if (value !== undefined) { + return value; + } else { + return null; + } + }) : null; + return { + nullableOfNullable: nullableOfNullable, + nullableOfNonNullable: nullableOfNonNullable + }; +} + +function verifyArgsAndParse$1(_ListFragment8, value) { + return parse$10(value); +} + +function verifyName$1(param) { + +} + +var ListFragment8 = { + Raw: Raw$10, + query: query$10, + parse: parse$10, + serialize: serialize$10, + verifyArgsAndParse: verifyArgsAndParse$1, + verifyName: verifyName$1 +}; + +var Raw$11 = {}; + +var query$11 = ApolloClient.gql([ + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "" + ], query$10); + +function parse$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.nullableString; + var value$3 = value$1.nullableInt; + var value$4 = value$1.nullableFloat; + var value$5 = value$1.nullableBoolean; + var value$6 = value$1.nullableID; + return { + lists: parse$10(value.lists), + variousScalars: { + nullableString: !(value$2 == null) ? value$2 : undefined, + string: value$1.string, + nullableInt: !(value$3 == null) ? value$3 : undefined, + int: value$1.int, + nullableFloat: !(value$4 == null) ? value$4 : undefined, + float: value$1.float, + nullableBoolean: !(value$5 == null) ? value$5 : undefined, + boolean: value$1.boolean, + nullableID: !(value$6 == null) ? value$6 : undefined, + id: value$1.id + } + }; +} + +function serialize$11(value) { + var value$1 = value.variousScalars; + var value$2 = value$1.id; + var value$3 = value$1.nullableID; + var nullableID = value$3 !== undefined ? value$3 : null; + var value$4 = value$1.boolean; + var value$5 = value$1.nullableBoolean; + var nullableBoolean = value$5 !== undefined ? value$5 : null; + var value$6 = value$1.float; + var value$7 = value$1.nullableFloat; + var nullableFloat = value$7 !== undefined ? value$7 : null; + var value$8 = value$1.int; + var value$9 = value$1.nullableInt; + var nullableInt = value$9 !== undefined ? value$9 : null; + var value$10 = value$1.string; + var value$11 = value$1.nullableString; + var nullableString = value$11 !== undefined ? value$11 : null; + var variousScalars = { + nullableString: nullableString, + string: value$10, + nullableInt: nullableInt, + int: value$8, + nullableFloat: nullableFloat, + float: value$6, + nullableBoolean: nullableBoolean, + boolean: value$4, + nullableID: nullableID, + id: value$2 + }; + var value$12 = value.lists; + var lists = serialize$10(value$12); + return { + lists: lists, + variousScalars: variousScalars + }; +} + +function serializeVariables$9(param) { + +} + +function makeVariables$9(param) { + +} + +function makeDefaultVariables$9(param) { + +} + +var MyQuery8 = { + Raw: Raw$11, + query: query$11, + parse: parse$11, + serialize: serialize$11, + serializeVariables: serializeVariables$9, + makeVariables: makeVariables$9, + makeDefaultVariables: makeDefaultVariables$9 +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyTypes = MyTypes; +exports.MyQuery1a = MyQuery1a; +exports.MyQuery1b = MyQuery1b; +exports.MyQuery2 = MyQuery2; +exports.MyQuery3 = MyQuery3; +exports.MyQuery4 = MyQuery4; +exports.ListFragment = ListFragment; +exports.MyQuery5 = MyQuery5; +exports.MyQuery6 = MyQuery6; +exports.MyQuery7 = MyQuery7; +exports.ListFragment8 = ListFragment8; +exports.MyQuery8 = MyQuery8; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/typename.re.txt b/snapshot_tests/operations/expected/template/compile/typename.re.txt new file mode 100644 index 00000000..a3426615 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/typename.re.txt @@ -0,0 +1,104 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + first: nestedObject { + __typename + inner { + __typename + inner { + __typename + field + } + } + } + } +`); + +function parse(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var tmp; + if (value$2 == null) { + tmp = undefined; + } else { + var value$3 = value$2.inner; + tmp = { + __typename: value$2.__typename, + inner: !(value$3 == null) ? ({ + __typename: value$3.__typename, + field: value$3.field + }) : undefined + }; + } + return { + first: { + __typename: value$1.__typename, + inner: tmp + } + }; +} + +function serialize(value) { + var value$1 = value.first; + var value$2 = value$1.inner; + var inner; + if (value$2 !== undefined) { + var value$3 = value$2.inner; + var inner$1; + if (value$3 !== undefined) { + var value$4 = value$3.field; + var value$5 = value$3.__typename; + inner$1 = { + __typename: value$5, + field: value$4 + }; + } else { + inner$1 = null; + } + var value$6 = value$2.__typename; + inner = { + __typename: value$6, + inner: inner$1 + }; + } else { + inner = null; + } + var value$7 = value$1.__typename; + var first = { + __typename: value$7, + inner: inner + }; + return { + first: first + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/union.re.txt b/snapshot_tests/operations/expected/template/compile/union.re.txt new file mode 100644 index 00000000..6e35341f --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/union.re.txt @@ -0,0 +1,420 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +function assign_typename(obj, param) { + return obj; +} + +var Graphql_ppx_runtime = { + assign_typename: assign_typename +}; + +var Raw = {}; + +var query = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } +`); + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +var Raw$1 = {}; + +var query$1 = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } +`); + +function parse$1(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$1(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + var value$5 = value$1.VAL.name; + dogOrHuman = { + __typename: "Human", + name: value$5 + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$1(param) { + +} + +function makeVariables$1(param) { + +} + +function makeDefaultVariables$1(param) { + +} + +var MyQueryNoError = { + Raw: Raw$1, + query: query$1, + parse: parse$1, + serialize: serialize$1, + serializeVariables: serializeVariables$1, + makeVariables: makeVariables$1, + makeDefaultVariables: makeDefaultVariables$1 +}; + +var Raw$2 = {}; + +var query$2 = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + __typename + } + ...on Human { + name + __typename + } + } + } +`); + +function parse$2(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp; + switch (typename) { + case "Dog" : + tmp = { + NAME: "Dog", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + case "Human" : + tmp = { + NAME: "Human", + VAL: { + name: value$1.name, + __typename: value$1.__typename + } + }; + break; + default: + tmp = { + NAME: "FutureAddedValue", + VAL: value$1 + }; + } + return { + dogOrHuman: tmp + }; +} + +function serialize$2(value) { + var value$1 = value.dogOrHuman; + var variant = value$1.NAME; + var dogOrHuman; + if (variant === "FutureAddedValue") { + dogOrHuman = value$1.VAL; + } else if (variant === "Dog") { + var value$2 = value$1.VAL.name; + dogOrHuman = { + name: value$2, + __typename: "Dog" + }; + } else { + var value$3 = value$1.VAL.name; + dogOrHuman = { + name: value$3, + __typename: "Human" + }; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$2(param) { + +} + +function makeVariables$2(param) { + +} + +function makeDefaultVariables$2(param) { + +} + +var NamedQuery = { + Raw: Raw$2, + query: query$2, + parse: parse$2, + serialize: serialize$2, + serializeVariables: serializeVariables$2, + makeVariables: makeVariables$2, + makeDefaultVariables: makeDefaultVariables$2 +}; + +var Raw$3 = {}; + +var query$3 = (require("gql")` + fragment DogFields on Dog { + name + __typename + } +`); + +function parse$3(value) { + return { + name: value.name, + __typename: value.__typename + }; +} + +function serialize$3(value) { + var value$1 = value.__typename; + var value$2 = value.name; + return { + name: value$2, + __typename: value$1 + }; +} + +function verifyArgsAndParse(_DogFields, value) { + return parse$3(value); +} + +function verifyName(param) { + +} + +var DogFields = { + Raw: Raw$3, + query: query$3, + parse: parse$3, + serialize: serialize$3, + verifyArgsAndParse: verifyArgsAndParse, + verifyName: verifyName +}; + +var Raw$4 = {}; + +var query$4 = ((frag_0) => require("gql")` + query dogOrHuman { + dogOrHuman { + __typename + ...on Dog { + ...DogFields + } + } + } + ${frag_0} +`)(query$3); + +function parse$4(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: parse$3(value$1) + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize$4(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman = value$1.NAME === "Dog" ? serialize$3(value$1.VAL) : value$1.VAL; + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables$3(param) { + +} + +function makeVariables$3(param) { + +} + +function makeDefaultVariables$3(param) { + +} + +var DogOrHuman = { + Raw: Raw$4, + query: query$4, + parse: parse$4, + serialize: serialize$4, + serializeVariables: serializeVariables$3, + makeVariables: makeVariables$3, + makeDefaultVariables: makeDefaultVariables$3 +}; + +var NamedSpread = { + DogFields: DogFields, + DogOrHuman: DogOrHuman +}; + +exports.Graphql_ppx_runtime = Graphql_ppx_runtime; +exports.MyQuery = MyQuery; +exports.MyQueryNoError = MyQueryNoError; +exports.NamedQuery = NamedQuery; +exports.NamedSpread = NamedSpread; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/unionPartial.re.txt b/snapshot_tests/operations/expected/template/compile/unionPartial.re.txt new file mode 100644 index 00000000..630a5747 --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/unionPartial.re.txt @@ -0,0 +1,80 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + + +var Raw = {}; + +var query = (require("gql")` + query { + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + } + } +`); + +function parse(value) { + var value$1 = value.dogOrHuman; + var typename = value$1["__typename"]; + var tmp = typename === "Dog" ? ({ + NAME: "Dog", + VAL: { + name: value$1.name, + barkVolume: value$1.barkVolume + } + }) : ({ + NAME: "FutureAddedValue", + VAL: value$1 + }); + return { + dogOrHuman: tmp + }; +} + +function serialize(value) { + var value$1 = value.dogOrHuman; + var dogOrHuman; + if (value$1.NAME === "Dog") { + var value$2 = value$1.VAL; + var value$3 = value$2.barkVolume; + var value$4 = value$2.name; + dogOrHuman = { + __typename: "Dog", + name: value$4, + barkVolume: value$3 + }; + } else { + dogOrHuman = value$1.VAL; + } + return { + dogOrHuman: dogOrHuman + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/compile/variant.re.txt b/snapshot_tests/operations/expected/template/compile/variant.re.txt new file mode 100644 index 00000000..9d3e908f --- /dev/null +++ b/snapshot_tests/operations/expected/template/compile/variant.re.txt @@ -0,0 +1,159 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Js_json = require("rescript/lib/js/js_json.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); + +var Raw = {}; + +var query = (require("gql")` + mutation { + mutationForVariant { + baseType + baseTypeList + dog { + name + barkVolume + } + human { + name + } + dogOrHuman { + __typename + ...on Dog { + name + barkVolume + } + ...on Human { + name + } + } + } + } +`); + +function parse(value) { + var value$1 = value.mutationForVariant; + var value$2 = Js_json.decodeObject(value$1); + var tmp; + if (value$2 !== undefined) { + var value$3 = Caml_option.valFromOption(value$2); + var temp = value$3["baseType"]; + var match = Js_json.decodeNull(temp); + if (match !== undefined) { + var temp$1 = value$3["baseTypeList"]; + var match$1 = Js_json.decodeNull(temp$1); + if (match$1 !== undefined) { + var temp$2 = value$3["dog"]; + var match$2 = Js_json.decodeNull(temp$2); + if (match$2 !== undefined) { + var temp$3 = value$3["human"]; + var match$3 = Js_json.decodeNull(temp$3); + if (match$3 !== undefined) { + var temp$4 = value$3["dogOrHuman"]; + var match$4 = Js_json.decodeNull(temp$4); + if (match$4 !== undefined) { + tmp = Js_exn.raiseError("graphql-ppx: All fields on variant selection set on type VariantTestResult were null"); + } else { + var typename = temp$4["__typename"]; + var tmp$1; + switch (typename) { + case "Dog" : + tmp$1 = { + NAME: "Dog", + VAL: { + name: temp$4.name, + barkVolume: temp$4.barkVolume + } + }; + break; + case "Human" : + tmp$1 = { + NAME: "Human", + VAL: { + name: temp$4.name + } + }; + break; + default: + tmp$1 = { + NAME: "FutureAddedValue", + VAL: temp$4 + }; + } + tmp = { + NAME: "DogOrHuman", + VAL: tmp$1 + }; + } + } else { + tmp = { + NAME: "Human", + VAL: { + name: temp$3.name + } + }; + } + } else { + tmp = { + NAME: "Dog", + VAL: { + name: temp$2.name, + barkVolume: temp$2.barkVolume + } + }; + } + } else { + tmp = { + NAME: "BaseTypeList", + VAL: temp$1.map(function (value) { + return value; + }) + }; + } + } else { + tmp = { + NAME: "BaseType", + VAL: temp + }; + } + } else { + tmp = Js_exn.raiseError("graphql-ppx: Expected type VariantTestResult to be an object"); + } + return { + mutationForVariant: tmp + }; +} + +function serialize(value) { + var mutationForVariant = null; + return { + mutationForVariant: mutationForVariant + }; +} + +function serializeVariables(param) { + +} + +function makeVariables(param) { + +} + +function makeDefaultVariables(param) { + +} + +var MyQuery = { + Raw: Raw, + query: query, + parse: parse, + serialize: serialize, + serializeVariables: serializeVariables, + makeVariables: makeVariables, + makeDefaultVariables: makeDefaultVariables +}; + +exports.MyQuery = MyQuery; +/* query Not a pure module */ diff --git a/snapshot_tests/operations/expected/template/generate/argNamedQuery.re.txt b/snapshot_tests/operations/expected/template/generate/argNamedQuery.re.txt new file mode 100644 index 00000000..6fc5c5ae --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/argNamedQuery.re.txt @@ -0,0 +1,191 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query: string = [%raw + "require(\"gql\")`\n query ($query: Int!) {\n argNamedQuery(query: $query)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MultipleQueryWithSameVarName = { + module Query1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query: string = [%raw + "require(\"gql\")`\n query Query1($query: Int!) {\n argNamedQuery(query: $query)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + module Query2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~query: int, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + }; + type t = {argNamedQuery: int}; + type t_variables = {query: int}; + let query: string = [%raw + "require(\"gql\")`\n query Query2($query: Int!) {\n argNamedQuery(query: $query)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + argNamedQuery: { + let value = (value: Raw.t).argNamedQuery; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let argNamedQuery = { + let value = (value: t).argNamedQuery; + value; + }; + {argNamedQuery: argNamedQuery}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {query: (a => a)((inp: t_variables).query)}; + let makeVariables = (~query, ()): t_variables => {query: query}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/template/generate/comment.re.txt b/snapshot_tests/operations/expected/template/generate/comment.re.txt new file mode 100644 index 00000000..0c683c60 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/comment.re.txt @@ -0,0 +1,284 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: NonrecursiveInput!) {\n nonrecursiveInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/customDecoder.re.txt b/snapshot_tests/operations/expected/template/generate/customDecoder.re.txt new file mode 100644 index 00000000..8ef3c30d --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/customDecoder.re.txt @@ -0,0 +1,127 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module StringOfInt = { + let parse = string_of_int; + let serialize = int_of_string; + type t = string; +}; +module IntOfString = { + let parse = int_of_string; + let serialize = string_of_int; + type t = int; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + string: IntOfString.t, + int: StringOfInt.t, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n string\n int\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + IntOfString.parse(value); + }, + int: { + let value = (value: Raw.t_variousScalars).int; + StringOfInt.parse(value); + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: t_variousScalars).int; + let value = StringOfInt.serialize(value); + value; + } + and string = { + let value = (value: t_variousScalars).string; + let value = IntOfString.serialize(value); + value; + }; + {string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/customScalars.re.txt b/snapshot_tests/operations/expected/template/generate/customScalars.re.txt new file mode 100644 index 00000000..40c1232f --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/customScalars.re.txt @@ -0,0 +1,144 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customScalarField = { + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~opt: Js.Json.t=?, ~req: Js.Json.t, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customScalarField = { + nullable: Js.Nullable.t(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: Js.Nullable.t(Js.Json.t), + req: Js.Json.t, + }; + }; + type t_customScalarField = { + nullable: option(Js.Json.t), + nonNullable: Js.Json.t, + }; + type t = {customScalarField: t_customScalarField}; + type t_variables = { + opt: option(Js.Json.t), + req: Js.Json.t, + }; + let query: string = [%raw + "require(\"gql\")`\n query ($opt: CustomScalar, $req: CustomScalar!) {\n customScalarField(argOptional: $opt, argRequired: $req) {\n nullable\n nonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + customScalarField: { + let value = (value: Raw.t).customScalarField; + ( + { + nullable: { + let value = (value: Raw.t_customScalarField).nullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + nonNullable: { + let value = (value: Raw.t_customScalarField).nonNullable; + value; + }, + }: t_customScalarField + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customScalarField = { + let value = (value: t).customScalarField; + ( + { + let nonNullable = { + let value = (value: t_customScalarField).nonNullable; + value; + } + and nullable = { + let value = (value: t_customScalarField).nullable; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullable, nonNullable}; + }: Raw.t_customScalarField + ); + }; + {customScalarField: customScalarField}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + opt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).opt, + ), + req: (a => a)((inp: t_variables).req), + }; + let makeVariables = (~opt=?, ~req, ()): t_variables => {opt, req}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/customTypes.re.txt b/snapshot_tests/operations/expected/template/generate/customTypes.re.txt new file mode 100644 index 00000000..5e0d4f54 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/customTypes.re.txt @@ -0,0 +1,248 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Color = { + type t = + | Red + | Green + | Blue; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") + | Some(_) + | None => Red + }; + let serialize = color => + ( + switch (color) { + | Red => "red" + | Green => "green" + | Blue => "blue" + } + ) + |> Js.Json.string; +}; + +module NullableString = { + type t = + | Red + | Green + | Blue; + let parse: option(string) => t = + color => + switch (color) { + | Some("green") => Green + | Some("blue") => Blue + | Some("red") => Red + | Some(_) + | None => Red + }; + let serialize: t => option(string) = + color => + switch (color) { + | Red => Some("red") + | Green => Some("green") + | Blue => Some("blue") + }; +}; + +module DateTime = { + type t = Js.Date.t; + let parse = json => + switch (json |> Js.Json.decodeString) { + | Some(str) => str |> Js.Date.fromString + | None => Js.Date.make() + }; + let serialize = date => date |> Js.Date.toISOString |> Js.Json.string; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_customFields = { + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_customFields = { + currentTime: Js.Json.t, + favoriteColor: Js.Json.t, + futureTime: Js.Nullable.t(Js.Json.t), + nullableColor: Js.Nullable.t(Js.Json.t), + nullableString: Js.Nullable.t(string), + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + }; + type t_customFields = { + currentTime: DateTime.t, + favoriteColor: Color.t, + futureTime: option(DateTime.t), + nullableColor: option(Color.t), + nullableString: NullableString.t, + }; + type t = {customFields: t_customFields}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n customFields {\n currentTime\n favoriteColor\n futureTime\n nullableColor\n nullableString\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + customFields: { + let value = (value: Raw.t).customFields; + ( + { + currentTime: { + let value = (value: Raw.t_customFields).currentTime; + DateTime.parse(value); + }, + favoriteColor: { + let value = (value: Raw.t_customFields).favoriteColor; + Color.parse(value); + }, + futureTime: { + let value = (value: Raw.t_customFields).futureTime; + switch (Js.toOption(value)) { + | Some(value) => Some(DateTime.parse(value)) + | None => None + }; + }, + nullableColor: { + let value = (value: Raw.t_customFields).nullableColor; + switch (Js.toOption(value)) { + | Some(value) => Some(Color.parse(value)) + | None => None + }; + }, + nullableString: { + let value = (value: Raw.t_customFields).nullableString; + NullableString.parse( + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }, + ); + }, + }: t_customFields + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let customFields = { + let value = (value: t).customFields; + ( + { + let nullableString = { + let value = (value: t_customFields).nullableString; + let value = NullableString.serialize(value); + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableColor = { + let value = (value: t_customFields).nullableColor; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = Color.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and futureTime = { + let value = (value: t_customFields).futureTime; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let value = DateTime.serialize(value); + value; + }, + ) + | None => Js.Nullable.null + }; + } + and favoriteColor = { + let value = (value: t_customFields).favoriteColor; + let value = Color.serialize(value); + value; + } + and currentTime = { + let value = (value: t_customFields).currentTime; + let value = DateTime.serialize(value); + value; + }; + { + currentTime, + favoriteColor, + futureTime, + nullableColor, + nullableString, + }; + }: Raw.t_customFields + ); + }; + {customFields: customFields}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/defaultObjectValueOnScalar.re.txt b/snapshot_tests/operations/expected/template/generate/defaultObjectValueOnScalar.re.txt new file mode 100644 index 00000000..c36aaf1d --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/defaultObjectValueOnScalar.re.txt @@ -0,0 +1,76 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + }; + type t = {defaultObjectValueOnScalar: string}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n defaultObjectValueOnScalar(filter: {some: {json: \"value\"}}, arg: {field: \"otherValue\"})\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + defaultObjectValueOnScalar: { + let value = (value: Raw.t).defaultObjectValueOnScalar; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let defaultObjectValueOnScalar = { + let value = (value: t).defaultObjectValueOnScalar; + value; + }; + {defaultObjectValueOnScalar: defaultObjectValueOnScalar}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/enumInput.re.txt b/snapshot_tests/operations/expected/template/generate/enumInput.re.txt new file mode 100644 index 00000000..3ee424df --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/enumInput.re.txt @@ -0,0 +1,88 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~arg: [ | `FIRST | `SECOND | `THIRD], unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {enumInput: string}; + type t_variables = {arg: string}; + }; + type t = {enumInput: string}; + type t_variables = {arg: [ | `FIRST | `SECOND | `THIRD]}; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: SampleField!) {\n enumInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + enumInput: { + let value = (value: Raw.t).enumInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let enumInput = { + let value = (value: t).enumInput; + value; + }; + {enumInput: enumInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + (inp: t_variables).arg, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/ewert_reproduction.re.txt b/snapshot_tests/operations/expected/template/generate/ewert_reproduction.re.txt new file mode 100644 index 00000000..34e79d51 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/ewert_reproduction.re.txt @@ -0,0 +1,138 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module UserData: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_user = { + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + }; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~userId: [ | `NonNull_String], ~fragmentName: [ | `UserData], Raw.t) => t; + let verifyName: [ | `UserData] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_user = { + id: string, + firstname: Js.Nullable.t(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + }; + type t_user = { + id: string, + firstname: option(string), + lastname: string, + }; + type t = {user: t_user}; + type nonrec t_Workspace = t; + let query: string = [%raw + "require(\"gql\")`\n fragment UserData on Workspace {\n user(id: $userId) {\n id\n firstname\n lastname\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + user: { + let value = (value: Raw.t).user; + ( + { + id: { + let value = (value: Raw.t_user).id; + value; + }, + firstname: { + let value = (value: Raw.t_user).firstname; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + lastname: { + let value = (value: Raw.t_user).lastname; + value; + }, + }: t_user + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let user = { + let value = (value: t).user; + ( + { + let lastname = { + let value = (value: t_user).lastname; + value; + } + and firstname = { + let value = (value: t_user).firstname; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_user).id; + value; + }; + {id, firstname, lastname}; + }: Raw.t_user + ); + }; + {user: user}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~userId as _userId: [ | `NonNull_String], + ~fragmentName as _UserData: [ | `UserData], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `UserData => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/explicit_object_record.re.txt b/snapshot_tests/operations/expected/template/generate/explicit_object_record.re.txt new file mode 100644 index 00000000..7159938a --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/explicit_object_record.re.txt @@ -0,0 +1,356 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module RecordsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n lists {\n nullableOfNullable\n nullableOfNonNullable\n nonNullableOfNullable\n nonNullableOfNonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ObjectsQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n lists {\n nullableOfNullable\n nullableOfNonNullable\n nonNullableOfNullable\n nonNullableOfNonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/extensions.re.txt b/snapshot_tests/operations/expected/template/generate/extensions.re.txt new file mode 100644 index 00000000..8f0f3085 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/extensions.re.txt @@ -0,0 +1,422 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module type GraphQLQuery = { + module Raw: { + type t; + type t_variables; + }; + type t; + type t_variables; + + let query: string; + let parse: Raw.t => t; + let serialize: t => Raw.t; +}; + +module Parent = { + module ExtendQuery = (M: GraphQLQuery) : {let use: unit => unit;} => { + let use = () => (); + }; +}; +module Bla: { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include (module type of { + include Bla_inner; + }); + include (module type of { + include Parent.ExtendQuery(Bla_inner); + }); +} = { + module Bla_inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query Bla {\n lists {\n nullableOfNullable\n nullableOfNonNullable\n nonNullableOfNullable\n nonNullableOfNonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; + include Bla_inner; + include Parent.ExtendQuery(Bla_inner); +}; +module Inner: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query Bla2 {\n lists {\n nullableOfNullable\n nullableOfNonNullable\n nonNullableOfNullable\n nonNullableOfNonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +include Inner; +include Parent.ExtendQuery(Inner); diff --git a/snapshot_tests/operations/expected/template/generate/fragmentDefinition.re.txt b/snapshot_tests/operations/expected/template/generate/fragmentDefinition.re.txt new file mode 100644 index 00000000..295b0117 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/fragmentDefinition.re.txt @@ -0,0 +1,868 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment ListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nullableOfNonNullable: Js.Nullable.t(array(string))}; + type nonrec t_Lists = t; + }; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nullableOfNonNullable: Js.Nullable.t(array(string))}; + type nonrec t_Lists = t; + }; + type t = {nullableOfNonNullable: option(array(string))}; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment Another on Lists {\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + }; + {nullableOfNonNullable: nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module FragmentWithArgs: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listWithArg: Js.Nullable.t(array(Js.Nullable.t(string)))}; + type nonrec t_Lists = t; + }; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~arg1: [ | `String], ~fragmentName: [ | `FragmentWithArgs], Raw.t) => t; + let verifyName: [ | `FragmentWithArgs] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listWithArg: Js.Nullable.t(array(Js.Nullable.t(string)))}; + type nonrec t_Lists = t; + }; + type t = {listWithArg: option(array(option(string)))}; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment FragmentWithArgs on Lists {\n listWithArg(arg1: $arg1)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + listWithArg: { + let value = (value: Raw.t).listWithArg; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listWithArg = { + let value = (value: t).listWithArg; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {listWithArg: listWithArg}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~arg1 as _arg1: [ | `String], + ~fragmentName as _FragmentWithArgs: [ | `FragmentWithArgs], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `FragmentWithArgs => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module InlineListFragment = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment InlineListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; + +module Wrapper = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment InlineListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InlineListFragment: [ | `InlineListFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InlineListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~arg1: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_l2; + type t_l3; + type t_l4; + type t = { + l1: ListFragment.Raw.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.Raw.t_Lists, + }; + type t_variables = {arg1: Js.Nullable.t(string)}; + }; + type t_l2 = { + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l3 = { + nullableOfNullable: option(array(option(string))), + frag1: ListFragment.t_Lists, + frag2: ListFragment.t_Lists, + }; + type t_l4 = { + nullableOfNullable: option(array(option(string))), + inlineListFragment: InlineListFragment.t_Lists, + }; + type t = { + l1: ListFragment.t_Lists, + l2: t_l2, + l3: t_l3, + l4: t_l4, + l5: FragmentWithArgs.t_Lists, + }; + type t_variables = {arg1: option(string)}; + let query: string = + [%raw + "(frag_0, frag_1, frag_2) => require(\"gql\")`\n query MyQuery($arg1: String) {\n l1: lists {\n ...ListFragment\n }\n l2: lists {\n ...ListFragment\n ...ListFragment\n }\n l3: lists {\n nullableOfNullable\n ...ListFragment\n ...ListFragment\n }\n l4: lists {\n nullableOfNullable\n ...InlineListFragment\n }\n l5: lists {\n ...FragmentWithArgs\n }\n }\n ${frag_0}\n ${frag_1}\n ${frag_2}\n`" + ]( + FragmentWithArgs.query, + InlineListFragment.query, + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + l1: { + let value = (value: Raw.t).l1; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + l2: { + let value = (value: Raw.t).l2; + ( + { + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l2 + ); + }, + l3: { + let value = (value: Raw.t).l3; + ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + frag1: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + frag2: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse( + ~fragmentName=`ListFragment, + value, + ); + }, + }: t_l3 + ); + }, + l4: { + let value = (value: Raw.t).l4; + ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "nullableOfNullable", + ), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + inlineListFragment: { + let value: InlineListFragment.Raw.t = Obj.magic(value); + + InlineListFragment.verifyArgsAndParse( + ~fragmentName=`InlineListFragment, + value, + ); + }, + }: t_l4 + ); + }, + l5: { + let value = (value: Raw.t).l5; + + FragmentWithArgs.verifyArgsAndParse( + ~arg1=`String, + ~fragmentName=`FragmentWithArgs, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let l5 = { + let value = (value: t).l5; + FragmentWithArgs.serialize(value); + } + and l4 = { + let value = (value: t).l4; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l4).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InlineListFragment.serialize( + (value: t_l4).inlineListFragment, + ), + ): Js.Json.t + ), + |], + ), + ): Raw.t_l4 + ); + } + and l3 = { + let value = (value: t).l3; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t_l3).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l3).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l3 + ); + } + and l2 = { + let value = (value: t).l2; + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic(Js.Dict.empty): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag1)): Js.Json.t + ), + ( + Obj.magic(ListFragment.serialize((value: t_l2).frag2)): Js.Json.t + ), + |], + ), + ): Raw.t_l2 + ); + } + and l1 = { + let value = (value: t).l1; + ListFragment.serialize(value); + }; + {l1, l2, l3, l4, l5}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + arg1: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).arg1, + ), + }; + let makeVariables = (~arg1=?, ()): t_variables => {arg1: arg1}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n query {\n lists {\n ...ListFragment\n }\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/fragmentInFragment.re.txt b/snapshot_tests/operations/expected/template/generate/fragmentInFragment.re.txt new file mode 100644 index 00000000..37eafb8f --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/fragmentInFragment.re.txt @@ -0,0 +1,218 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + }; + type nonrec t_Lists = t; + }; + type t = {nullableOfNullable: option(array(option(string)))}; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gql\")`\n fragment ListFragment on Lists {\n nullableOfNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable: nullableOfNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module Another: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Another], Raw.t) => t; + let verifyName: [ | `Another] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + listFragment: ListFragment.t_Lists, + }; + type nonrec t_Lists = t; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n fragment Another on Lists {\n nullableOfNullable\n ...ListFragment\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "nullableOfNullable"), + ); + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + listFragment: { + let value: ListFragment.Raw.t = Obj.magic(value); + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {"nullableOfNullable": nullableOfNullable}; + }, + ): Js.Json.t, + [| + ( + Obj.magic(ListFragment.serialize((value: t).listFragment)): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Another: [ | `Another], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Another => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/fragmentOnInterface.re.txt b/snapshot_tests/operations/expected/template/generate/fragmentOnInterface.re.txt new file mode 100644 index 00000000..0eacee35 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/fragmentOnInterface.re.txt @@ -0,0 +1,284 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module InterfaceFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `InterfaceFragment], Raw.t) => t; + let verifyName: [ | `InterfaceFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = {id: string}; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query: string = [%raw + "require(\"gql\")`\n fragment InterfaceFragment on User {\n __typename\n id\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = (value: Raw.t).id; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let id = { + let value = (value: t).id; + value; + }; + {id: id}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~fragmentName as _InterfaceFragment: [ | `InterfaceFragment], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `InterfaceFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnotherFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnotherFragment], Raw.t) => t; + let verifyName: [ | `AnotherFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_User, + }; + type nonrec t_User = t; + type nonrec t_AdminUser = t; + type nonrec t_AnonymousUser = t; + type nonrec t_OtherUser = t; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n fragment AnotherFragment on User {\n __typename\n id\n ...InterfaceFragment\n }\n ${frag_0}\n`" + ]( + InterfaceFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnotherFragment: [ | `AnotherFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnotherFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module AnonUser: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `AnonUser], Raw.t) => t; + let verifyName: [ | `AnonUser] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t; + type nonrec t_AnonymousUser = t; + }; + type t = { + id: string, + interfaceFragment: InterfaceFragment.t_AnonymousUser, + }; + type nonrec t_AnonymousUser = t; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n fragment AnonUser on AnonymousUser {\n id\n ...InterfaceFragment\n }\n ${frag_0}\n`" + ]( + InterfaceFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + id: { + let value = Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + interfaceFragment: { + let value: InterfaceFragment.Raw.t = Obj.magic(value); + + InterfaceFragment.verifyArgsAndParse( + ~fragmentName=`InterfaceFragment, + value, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + ( + Obj.magic( + InterfaceFragment.serialize((value: t).interfaceFragment), + ): Js.Json.t + ), + |], + ), + ): Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _AnonUser: [ | `AnonUser], value: Raw.t) => + parse(value); + let verifyName = + fun + | `AnonUser => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/fragmentUnion.re.txt b/snapshot_tests/operations/expected/template/generate/fragmentUnion.re.txt new file mode 100644 index 00000000..2bf57567 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/fragmentUnion.re.txt @@ -0,0 +1,260 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; + +module Graphql_ppx_runtime = { + let assign_typename: (Js.Json.t, string) => Js.Json.t = [%raw + {| (obj, typename) => { obj.__typename = typename; return obj } |} + ]; +}; +module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query: string = [%raw + "require(\"gql\")`\n fragment DogFragment on Dog {\n name\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HumanFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Human = t; + }; + type t = {name: string}; + type nonrec t_Human = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `HumanFragment], Raw.t) => t; + let verifyName: [ | `HumanFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Human = t; + }; + type t = {name: string}; + type nonrec t_Human = t; + let query: string = [%raw + "require(\"gql\")`\n fragment HumanFragment on Human {\n name\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _HumanFragment: [ | `HumanFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `HumanFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + | `Human(HumanFragment.t_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0, frag_1) => require(\"gql\")`\n query MyQuery {\n dogOrHuman {\n __typename\n ...on Dog {\n ...DogFragment\n }\n ...on Human {\n ...HumanFragment\n }\n }\n }\n ${frag_0}\n ${frag_1}\n`" + ]( + DogFragment.query, + HumanFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | "Human" => + `Human( + { + let value: HumanFragment.Raw.t = Obj.magic(value); + + HumanFragment.verifyArgsAndParse( + ~fragmentName=`HumanFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(HumanFragment.serialize(value)): Js.Json.t, + "Human", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/fragmentvariableinput.re.txt b/snapshot_tests/operations/expected/template/generate/fragmentvariableinput.re.txt new file mode 100644 index 00000000..b2f3ec64 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/fragmentvariableinput.re.txt @@ -0,0 +1,114 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_reposts = {id: int}; + type t = {reposts: array(Js.Nullable.t(t_reposts))}; + type nonrec t_Post = t; + }; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: + (~name: [ | `NonNull_String], ~fragmentName: [ | `test], Raw.t) => t; + let verifyName: [ | `test] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_reposts = {id: int}; + type t = {reposts: array(Js.Nullable.t(t_reposts))}; + type nonrec t_Post = t; + }; + type t_reposts = {id: int}; + type t = {reposts: array(option(t_reposts))}; + type nonrec t_Post = t; + let query: string = [%raw + "require(\"gql\")`\n fragment test on Post {\n reposts(arg: {name: $name}) {\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + reposts: { + let value = (value: Raw.t).reposts; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_reposts).id; + value; + }, + }: t_reposts, + ) + | None => None + } + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let reposts = { + let value = (value: t).reposts; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let id = { + let value = (value: t_reposts).id; + value; + }; + {id: id}; + }: Raw.t_reposts, + ) + | None => Js.Nullable.null + } + ); + }; + {reposts: reposts}; + }: Raw.t + ); + let verifyArgsAndParse = + ( + ~name as _name: [ | `NonNull_String], + ~fragmentName as _test: [ | `test], + value: Raw.t, + ) => + parse(value); + let verifyName = + fun + | `test => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/hasuraRepro.re.txt b/snapshot_tests/operations/expected/template/generate/hasuraRepro.re.txt new file mode 100644 index 00000000..96f3548e --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/hasuraRepro.re.txt @@ -0,0 +1,181 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Dog: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Dog], Raw.t) => t; + let verifyName: [ | `Dog] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {name: string}; + type nonrec t_Dog = t; + }; + type t = {name: string}; + type nonrec t_Dog = t; + let query: string = [%raw + "require(\"gql\")`\n fragment Dog on Dog {\n name\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let name = { + let value = (value: t).name; + value; + }; + {name: name}; + }: Raw.t + ); + let verifyArgsAndParse = (~fragmentName as _Dog: [ | `Dog], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Dog => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module HasuraRepro: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + (~blockNumber: int=?, ~type_: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {hasuraRepro: Dog.Raw.t_Dog}; + type t_variables = { + blockNumber: Js.Nullable.t(int), + [@bs.as "type"] + type_: Js.Nullable.t(string), + }; + }; + type t = {hasuraRepro: Dog.t_Dog}; + type t_variables = { + blockNumber: option(int), + [@bs.as "type"] + type_: option(string), + }; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n query HasuraRepro($blockNumber: Int, $type: String) {\n hasuraRepro(orderBy: [{id: desc}], block: {number: $blockNumber, type: $type}) {\n ...Dog\n }\n }\n ${frag_0}\n`" + ]( + Dog.query, + ); + let parse: Raw.t => t = + (value) => ( + { + hasuraRepro: { + let value = (value: Raw.t).hasuraRepro; + + Dog.verifyArgsAndParse(~fragmentName=`Dog, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let hasuraRepro = { + let value = (value: t).hasuraRepro; + Dog.serialize(value); + }; + {hasuraRepro: hasuraRepro}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + blockNumber: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).blockNumber, + ), + type_: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).type_, + ), + }; + let makeVariables = (~blockNumber=?, ~type_=?, ()): t_variables => { + blockNumber, + type_, + }; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +let _ = HasuraRepro.makeVariables(~blockNumber=1, ~type_="1", ()); diff --git a/snapshot_tests/operations/expected/template/generate/interface.re.txt b/snapshot_tests/operations/expected/template/generate/interface.re.txt new file mode 100644 index 00000000..ffc1e3b9 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/interface.re.txt @@ -0,0 +1,857 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module QueryWithOnlyFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + name: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = { + id: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + id: string, + name: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n users {\n __typename\n ...on AdminUser {\n id\n name\n }\n ...on AnonymousUser {\n id\n anonymousId\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + id: { + let value = + (value: Raw.t_users_User_AnonymousUser).id; + value; + }, + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser).anonymousId; + value; + } + and id = { + let value = (value: t_users_User_AnonymousUser).id; + value; + }; + {__typename: "AnonymousUser", id, anonymousId}; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_users_User_AdminUser).name; + value; + } + and id = { + let value = (value: t_users_User_AdminUser).id; + value; + }; + {__typename: "AdminUser", id, name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t = {users: array(t_users_User)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t = {users: array(t_users_User)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n users {\n __typename\n ...on AdminUser {\n __typename\n id\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map(value => + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser).__typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map(value => + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser).__typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + } + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithMixedFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AnonymousUser = { + __typename: string, + anonymousId: int, + }; + type t_users_User_AdminUser = { + __typename: string, + name: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AnonymousUser = {anonymousId: int}; + type t_users_User_AdminUser = {name: string}; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AnonymousUser(t_users_User_AnonymousUser) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n users {\n __typename\n id\n ...on AdminUser {\n name\n }\n ...on AnonymousUser {\n anonymousId\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AnonymousUser" => + `AnonymousUser( + { + let value: Raw.t_users_User_AnonymousUser = + Obj.magic(value); + ( + { + anonymousId: { + let value = + (value: Raw.t_users_User_AnonymousUser). + anonymousId; + value; + }, + }: t_users_User_AnonymousUser + ); + }, + ) + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + name: { + let value = + (value: Raw.t_users_User_AdminUser).name; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + }; + {"id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AnonymousUser(value) => ( + Obj.magic( + { + let anonymousId = { + let value = + (value: t_users_User_AnonymousUser). + anonymousId; + value; + }; + { + __typename: "AnonymousUser", + anonymousId, + }; + }: Raw.t_users_User_AnonymousUser, + ): Raw.t_users_User + ) + | `AdminUser(value) => ( + Obj.magic( + { + let name = { + let value = + (value: t_users_User_AdminUser).name; + value; + }; + {__typename: "AdminUser", name}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MixedQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User; + type t_users; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users_User_AdminUser = { + __typename: string, + id: string, + }; + type t_users_User = [ + | `UnspecifiedFragment(string) + | `AdminUser(t_users_User_AdminUser) + ]; + type t_users = { + fragment: t_users_User, + __typename: string, + id: string, + }; + type t = {users: array(t_users)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n users {\n __typename\n id\n __typename\n ...on AdminUser {\n __typename\n id\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + fragment: { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + ( + switch (typename) { + | "AdminUser" => + `AdminUser( + { + let value: Raw.t_users_User_AdminUser = + Obj.magic(value); + ( + { + __typename: { + let value = + (value: Raw.t_users_User_AdminUser). + __typename; + value; + }, + id: { + let value = + (value: Raw.t_users_User_AdminUser).id; + value; + }, + }: t_users_User_AdminUser + ); + }, + ) + | _ => `UnspecifiedFragment(typename) + }: t_users_User + ); + }, + __typename: { + let value = + Obj.magic( + Js.Dict.unsafeGet(Obj.magic(value), "__typename"), + ); + value; + }, + id: { + let value = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "id")); + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + Obj.magic( + Js.Array.reduce( + Graphql_ppx_runtime.deepMerge, + Obj.magic( + { + let id = { + let value = (value: t_users).id; + value; + } + and __typename = { + let value = (value: t_users).__typename; + value; + }; + {"__typename": __typename, "id": id}; + }, + ): Js.Json.t, + [| + { + let value = (value: t_users).fragment; + ( + Obj.magic( + switch (value) { + | `AdminUser(value) => ( + Obj.magic( + { + let id = { + let value = + (value: t_users_User_AdminUser).id; + value; + } + and __typename = { + let value = + (value: t_users_User_AdminUser). + __typename; + value; + }; + {__typename: "AdminUser", id}; + }: Raw.t_users_User_AdminUser, + ): Raw.t_users_User + ) + | `UnspecifiedFragment(_) => ( + Obj.magic(Js.Dict.empty()): Raw.t_users_User + ) + }, + ): Js.Json.t + ); + }, + |], + ), + ): Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module QueryWithoutFragments: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + }; + type t_users = {id: string}; + type t = {users: array(t_users)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n users {\n __typename\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + users: { + let value = (value: Raw.t).users; + value + |> Js.Array.map((value) => + ( + { + id: { + let value = (value: Raw.t_users).id; + value; + }, + }: t_users + ) + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let users = { + let value = (value: t).users; + value + |> Js.Array.map((value) => + ( + { + let id = { + let value = (value: t_users).id; + value; + }; + {id: id}; + }: Raw.t_users + ) + ); + }; + {users: users}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/lists.re.txt b/snapshot_tests/operations/expected/template/generate/lists.re.txt new file mode 100644 index 00000000..59354bea --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/lists.re.txt @@ -0,0 +1,187 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_lists = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + }; + type t_lists = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + type t = {lists: t_lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n lists {\n nullableOfNullable\n nullableOfNonNullable\n nonNullableOfNullable\n nonNullableOfNonNullable\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + ( + { + nullableOfNullable: { + let value = (value: Raw.t_lists).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t_lists).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + nonNullableOfNullable: { + let value = (value: Raw.t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ); + }, + nonNullableOfNonNullable: { + let value = (value: Raw.t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + }, + }: t_lists + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ( + { + let nonNullableOfNonNullable = { + let value = (value: t_lists).nonNullableOfNonNullable; + value |> Js.Array.map(value => value); + } + and nonNullableOfNullable = { + let value = (value: t_lists).nonNullableOfNullable; + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ); + } + and nullableOfNonNullable = { + let value = (value: t_lists).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t_lists).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + }: Raw.t_lists + ); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/listsArgs.re.txt b/snapshot_tests/operations/expected/template/generate/listsArgs.re.txt new file mode 100644 index 00000000..cbdc7ad3 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/listsArgs.re.txt @@ -0,0 +1,183 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query: string = [%raw + "require(\"gql\")`\n query ($nullableOfNullable: [String], $nullableOfNonNullable: [String!], $nonNullableOfNullable: [String]!, $nonNullableOfNonNullable: [String!]!) {\n listsInput(arg: {nullableOfNullable: $nullableOfNullable, nullableOfNonNullable: $nullableOfNonNullable, nonNullableOfNullable: $nonNullableOfNullable, nonNullableOfNonNullable: $nonNullableOfNonNullable})\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables).nonNullableOfNonNullable, + ), + }; + let makeVariables = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/listsInput.re.txt b/snapshot_tests/operations/expected/template/generate/listsInput.re.txt new file mode 100644 index 00000000..5cc63a3e --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/listsInput.re.txt @@ -0,0 +1,196 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput; + let makeVariables: (~arg: t_variables_ListsInput, unit) => t_variables; + let makeInputObjectListsInput: + ( + ~nullableOfNullable: array(option(string))=?, + ~nullableOfNonNullable: array(string)=?, + ~nonNullableOfNullable: array(option(string)), + ~nonNullableOfNonNullable: array(string), + unit + ) => + t_variables_ListsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + nonNullableOfNullable: array(Js.Nullable.t(string)), + nonNullableOfNonNullable: array(string), + }; + }; + type t = {listsInput: string}; + type t_variables = {arg: t_variables_ListsInput} + and t_variables_ListsInput = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + nonNullableOfNullable: array(option(string)), + nonNullableOfNonNullable: array(string), + }; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: ListsInput!) {\n listsInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + listsInput: { + let value = (value: Raw.t).listsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let listsInput = { + let value = (value: t).listsInput; + value; + }; + {listsInput: listsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: (a => serializeInputObjectListsInput(a))((inp: t_variables).arg), + } + and serializeInputObjectListsInput: + t_variables_ListsInput => Raw.t_variables_ListsInput = + inp => { + nullableOfNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNullable, + ), + nullableOfNonNullable: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => Js.Array.map(b => (a => a)(b), a))(b), + ) + } + )( + (inp: t_variables_ListsInput).nullableOfNonNullable, + ), + nonNullableOfNullable: + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + (inp: t_variables_ListsInput).nonNullableOfNullable, + ), + nonNullableOfNonNullable: + (a => Js.Array.map(b => (a => a)(b), a))( + (inp: t_variables_ListsInput).nonNullableOfNonNullable, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectListsInput = + ( + ~nullableOfNullable=?, + ~nullableOfNonNullable=?, + ~nonNullableOfNullable, + ~nonNullableOfNonNullable, + (), + ) + : t_variables_ListsInput => { + nullableOfNullable, + nullableOfNonNullable, + nonNullableOfNullable, + nonNullableOfNonNullable, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/module_type.re.txt b/snapshot_tests/operations/expected/template/generate/module_type.re.txt new file mode 100644 index 00000000..a3ac51f3 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/module_type.re.txt @@ -0,0 +1,282 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: {type t;} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n string\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + }; + {string: string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + type t_variousScalars; + type t = {variousScalars: t_variousScalars}; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {string}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n string\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let string = { + let value = (value: t_variousScalars).string; + value; + }; + {string: string}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module rec MyQueryRecursive: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: VariousScalars.t}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n nestedObject {\n inner {\n inner {\n field\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + VariousScalars.parse( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject, + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + let value = VariousScalars.serialize(value); + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} + +and VariousScalars: { + type t; + let parse: MyQueryRecursive.t_nestedObject => t; + let serialize: t => MyQueryRecursive.t_nestedObject; +} = { + type t = {otherInner: option(MyQueryRecursive.t_nestedObject_inner)}; + let parse = (nestedObject: MyQueryRecursive.t_nestedObject) => { + otherInner: nestedObject.inner, + }; + let serialize: t => MyQueryRecursive.t_nestedObject = + t => {inner: t.otherInner}; +}; diff --git a/snapshot_tests/operations/expected/template/generate/mutation.re.txt b/snapshot_tests/operations/expected/template/generate/mutation.re.txt new file mode 100644 index 00000000..157e92ef --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/mutation.re.txt @@ -0,0 +1,230 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: Js.Nullable.t(t_mutationWithError_value), + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_value = {stringField: string}; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + field: t_mutationWithError_errors_field, + message: string, + }; + type t_mutationWithError = { + value: option(t_mutationWithError_value), + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n mutation {\n mutationWithError {\n value {\n stringField\n }\n errors {\n field\n message\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + value: { + let value = (value: Raw.t_mutationWithError).value; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + stringField: { + let value = + (value: Raw.t_mutationWithError_value).stringField; + value; + }, + }: t_mutationWithError_value, + ) + | None => None + }; + }, + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let message = { + let value = + (value: t_mutationWithError_errors).message; + value; + } + and field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + }; + {field, message}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + } + and value = { + let value = (value: t_mutationWithError).value; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let stringField = { + let value = + (value: t_mutationWithError_value).stringField; + value; + }; + {stringField: stringField}; + }: Raw.t_mutationWithError_value, + ) + | None => Js.Nullable.null + }; + }; + {value, errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/mutationWithArgs.re.txt b/snapshot_tests/operations/expected/template/generate/mutationWithArgs.re.txt new file mode 100644 index 00000000..36bdd008 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/mutationWithArgs.re.txt @@ -0,0 +1,75 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query: string = [%raw + "require(\"gql\")`\n mutation MyMutation($required: String!) {\n optionalInputArgs(required: $required, anotherRequired: \"val\")\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/mutationWithArgsAndNoRecords.re.txt b/snapshot_tests/operations/expected/template/generate/mutationWithArgsAndNoRecords.re.txt new file mode 100644 index 00000000..36bdd008 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/mutationWithArgsAndNoRecords.re.txt @@ -0,0 +1,75 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~required: string, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + }; + type t = {optionalInputArgs: string}; + type t_variables = {required: string}; + let query: string = [%raw + "require(\"gql\")`\n mutation MyMutation($required: String!) {\n optionalInputArgs(required: $required, anotherRequired: \"val\")\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + optionalInputArgs: { + let value = (value: Raw.t).optionalInputArgs; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let optionalInputArgs = { + let value = (value: t).optionalInputArgs; + value; + }; + {optionalInputArgs: optionalInputArgs}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {required: (a => a)((inp: t_variables).required)}; + let makeVariables = (~required, ()): t_variables => {required: required}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/nested.re.txt b/snapshot_tests/operations/expected/template/generate/nested.re.txt new file mode 100644 index 00000000..71085033 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/nested.re.txt @@ -0,0 +1,669 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +type record = { + f1: string, + f2: string, +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: Js.Nullable.t(t_first_inner_inner)}; + type t_first = {inner: Js.Nullable.t(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: Js.Nullable.t(t_second_inner_inner)}; + type t_second = {inner: Js.Nullable.t(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: Js.Nullable.t(t_let_inner_inner)}; + type t_let = {inner: Js.Nullable.t(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: Js.Nullable.t(t_first_inner_inner)}; + type t_first = {inner: Js.Nullable.t(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: Js.Nullable.t(t_second_inner_inner)}; + type t_second = {inner: Js.Nullable.t(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: Js.Nullable.t(t_let_inner_inner)}; + type t_let = {inner: Js.Nullable.t(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + }; + type t_first_inner_inner = {field: string}; + type t_first_inner = {inner: option(t_first_inner_inner)}; + type t_first = {inner: option(t_first_inner)}; + type t_second_inner_inner = { + f1: string, + f2: string, + }; + type t_second_inner = {inner: option(t_second_inner_inner)}; + type t_second = {inner: option(t_second_inner)}; + type t_let_inner_inner = {field: string}; + type t_let_inner = {inner: option(t_let_inner_inner)}; + type t_let = {inner: option(t_let_inner)}; + type t = { + first: t_first, + second: t_second, + [@bs.as "let"] + let_: t_let, + }; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n first: nestedObject {\n inner {\n inner {\n field\n }\n }\n }\n second: nestedObject {\n inner {\n inner {\n f1: field\n f2: field\n }\n }\n }\n let: nestedObject {\n inner {\n inner {\n field\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + second: { + let value = (value: Raw.t).second; + ( + { + inner: { + let value = (value: Raw.t_second).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_second_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + f1: { + let value = + (value: Raw.t_second_inner_inner).f1; + value; + }, + f2: { + let value = + (value: Raw.t_second_inner_inner).f2; + value; + }, + }: t_second_inner_inner, + ) + | None => None + }; + }, + }: t_second_inner, + ) + | None => None + }; + }, + }: t_second + ); + }, + let_: { + let value = (value: Raw.t).let_; + ( + { + inner: { + let value = (value: Raw.t_let).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_let_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_let_inner_inner).field; + value; + }, + }: t_let_inner_inner, + ) + | None => None + }; + }, + }: t_let_inner, + ) + | None => None + }; + }, + }: t_let + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let let_ = { + let value = (value: t).let_; + ( + { + let inner = { + let value = (value: t_let).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_let_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_let_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_let_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_let_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_let + ); + } + and second = { + let value = (value: t).second; + ( + { + let inner = { + let value = (value: t_second).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_second_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let f2 = { + let value = (value: t_second_inner_inner).f2; + value; + } + and f1 = { + let value = (value: t_second_inner_inner).f1; + value; + }; + {f1, f2}; + }: Raw.t_second_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_second_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_second + ); + } + and first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_first + ); + }; + {first, second, let_}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module Test: { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +} = { + module MyQueryWithSig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n nestedObject {\n inner {\n inner {\n field\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module MyQueryWithSigDirect: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = { + inner: Js.Nullable.t(t_nestedObject_inner_inner), + }; + type t_nestedObject = {inner: Js.Nullable.t(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + }; + type t_nestedObject_inner_inner = {field: string}; + type t_nestedObject_inner = {inner: option(t_nestedObject_inner_inner)}; + type t_nestedObject = {inner: option(t_nestedObject_inner)}; + type t = {nestedObject: t_nestedObject}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n nestedObject {\n inner {\n inner {\n field\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nestedObject: { + let value = (value: Raw.t).nestedObject; + ( + { + inner: { + let value = (value: Raw.t_nestedObject).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + inner: { + let value = (value: Raw.t_nestedObject_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + field: { + let value = + (value: Raw.t_nestedObject_inner_inner). + field; + value; + }, + }: t_nestedObject_inner_inner, + ) + | None => None + }; + }, + }: t_nestedObject_inner, + ) + | None => None + }; + }, + }: t_nestedObject + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nestedObject = { + let value = (value: t).nestedObject; + ( + { + let inner = { + let value = (value: t_nestedObject).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_nestedObject_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = + (value: t_nestedObject_inner_inner).field; + value; + }; + {field: field}; + }: Raw.t_nestedObject_inner_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject_inner, + ) + | None => Js.Nullable.null + }; + }; + {inner: inner}; + }: Raw.t_nestedObject + ); + }; + {nestedObject: nestedObject}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/nonrecursiveInput.re.txt b/snapshot_tests/operations/expected/template/generate/nonrecursiveInput.re.txt new file mode 100644 index 00000000..3df78919 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/nonrecursiveInput.re.txt @@ -0,0 +1,591 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + (~arg: t_variables_NonrecursiveInput, unit) => t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = {nonrecursiveInput: string}; + type t_variables = {arg: t_variables_NonrecursiveInput} + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: NonrecursiveInput!) {\n nonrecursiveInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nonrecursiveInput: { + let value = (value: Raw.t).nonrecursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nonrecursiveInput = { + let value = (value: t).nonrecursiveInput; + value; + }; + {nonrecursiveInput: nonrecursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput; + let serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput; + let makeVariables: + ( + ~arg: t_variables_NonrecursiveInput, + ~arg2: t_variables_NonrecursiveInput, + unit + ) => + t_variables; + let makeInputObjectNonrecursiveInput: + ( + ~nonNullableField: string, + ~nullableArray: array(option(string))=?, + ~field: string=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + ~embeddedInput: array(option(t_variables_EmbeddedInput))=?, + ~custom: Js.Json.t=?, + unit + ) => + t_variables_NonrecursiveInput; + let makeInputObjectEmbeddedInput: + (~field: string=?, unit) => t_variables_EmbeddedInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: Js.Nullable.t(array(Js.Nullable.t(string))), + field: Js.Nullable.t(string), + enum: Js.Nullable.t(string), + embeddedInput: + Js.Nullable.t(array(Js.Nullable.t(t_variables_EmbeddedInput))), + custom: Js.Nullable.t(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: Js.Nullable.t(string)}; + }; + type t = { + scalarsInput: string, + more: string, + }; + type t_variables = { + arg: t_variables_NonrecursiveInput, + arg2: t_variables_NonrecursiveInput, + } + and t_variables_NonrecursiveInput = { + nonNullableField: string, + nullableArray: option(array(option(string))), + field: option(string), + enum: option([ | `FIRST | `SECOND | `THIRD]), + embeddedInput: option(array(option(t_variables_EmbeddedInput))), + custom: option(Js.Json.t), + } + and t_variables_EmbeddedInput = {field: option(string)}; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: NonrecursiveInput!, $arg2: NonrecursiveInput!) {\n scalarsInput(arg: $arg)\n more: scalarsInput(arg: $arg2)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + more: { + let value = (value: Raw.t).more; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let more = { + let value = (value: t).more; + value; + } + and scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput, more}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg, + ), + arg2: + (a => serializeInputObjectNonrecursiveInput(a))( + (inp: t_variables).arg2, + ), + } + and serializeInputObjectNonrecursiveInput: + t_variables_NonrecursiveInput => Raw.t_variables_NonrecursiveInput = + inp => { + nonNullableField: + (a => a)((inp: t_variables_NonrecursiveInput).nonNullableField), + nullableArray: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).nullableArray, + ), + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).field, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).enum, + ), + embeddedInput: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + Js.Array.map( + b => + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectEmbeddedInput(a))( + b, + ), + ) + } + )( + b, + ), + a, + ) + )( + b, + ), + ) + } + )( + (inp: t_variables_NonrecursiveInput).embeddedInput, + ), + custom: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_NonrecursiveInput).custom, + ), + } + and serializeInputObjectEmbeddedInput: + t_variables_EmbeddedInput => Raw.t_variables_EmbeddedInput = + inp => { + field: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_EmbeddedInput).field, + ), + }; + let makeVariables = (~arg, ~arg2, ()): t_variables => {arg, arg2} + and makeInputObjectNonrecursiveInput = + ( + ~nonNullableField, + ~nullableArray=?, + ~field=?, + ~enum=?, + ~embeddedInput=?, + ~custom=?, + (), + ) + : t_variables_NonrecursiveInput => { + nonNullableField, + nullableArray, + field, + enum, + embeddedInput, + custom, + } + and makeInputObjectEmbeddedInput = (~field=?, ()): t_variables_EmbeddedInput => { + field: field, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/omitFutureValueEnum.re.txt b/snapshot_tests/operations/expected/template/generate/omitFutureValueEnum.re.txt new file mode 100644 index 00000000..c9dc59d0 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/omitFutureValueEnum.re.txt @@ -0,0 +1,509 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ + | `FutureAddedValue(string) + | `FIRST + | `SECOND + | `THIRD + ]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n mutation {\n mutationWithError {\n errors {\n message\n field\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | other => `FutureAddedValue(other) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + | `FutureAddedValue(other) => other + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n mutation {\n mutationWithError {\n errors {\n message\n field\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationWithError_errors_field = string; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: Js.Nullable.t(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + }; + type t_mutationWithError_errors_field = [ | `FIRST | `SECOND | `THIRD]; + type t_mutationWithError_errors = { + message: string, + field: t_mutationWithError_errors_field, + }; + type t_mutationWithError = { + errors: option(array(t_mutationWithError_errors)), + }; + type t = {mutationWithError: t_mutationWithError}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n mutation {\n mutationWithError {\n errors {\n message\n field\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + mutationWithError: { + let value = (value: Raw.t).mutationWithError; + ( + { + errors: { + let value = (value: Raw.t_mutationWithError).errors; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map((value) => + ( + { + message: { + let value = + (value: Raw.t_mutationWithError_errors). + message; + value; + }, + field: { + let value = + (value: Raw.t_mutationWithError_errors).field; + switch ((Obj.magic(value): string)) { + | "FIRST" => `FIRST + | "SECOND" => `SECOND + | "THIRD" => `THIRD + | _ => raise(Not_found) + }; + }, + }: t_mutationWithError_errors + ) + ), + ) + | None => None + }; + }, + }: t_mutationWithError + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationWithError = { + let value = (value: t).mutationWithError; + ( + { + let errors = { + let value = (value: t_mutationWithError).errors; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map((value) => + ( + { + let field = { + let value = + (value: t_mutationWithError_errors).field; + switch (value) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + }; + } + and message = { + let value = + (value: t_mutationWithError_errors).message; + value; + }; + {message, field}; + }: Raw.t_mutationWithError_errors + ) + ), + ) + | None => Js.Nullable.null + }; + }; + {errors: errors}; + }: Raw.t_mutationWithError + ); + }; + {mutationWithError: mutationWithError}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/omitFutureValueUnion.re.txt b/snapshot_tests/operations/expected/template/generate/omitFutureValueUnion.re.txt new file mode 100644 index 00000000..a89552d8 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/omitFutureValueUnion.re.txt @@ -0,0 +1,504 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Normal: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByConfig: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ByDirective: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => raise(Not_found) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/pokedexApolloMode.re.txt b/snapshot_tests/operations/expected/template/generate/pokedexApolloMode.re.txt new file mode 100644 index 00000000..2c7c8f57 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/pokedexApolloMode.re.txt @@ -0,0 +1,129 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = unit; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n pokemon(name: \"Pikachu\") {\n id\n name\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/pokedexScalars.re.txt b/snapshot_tests/operations/expected/template/generate/pokedexScalars.re.txt new file mode 100644 index 00000000..5484330f --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/pokedexScalars.re.txt @@ -0,0 +1,308 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query: string = [%raw + "require(\"gql\")`\n query pokemon($id: String, $name: String) {\n pokemon(name: $name, id: $id) {\n id\n name\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryDirectives: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~id: string=?, ~name: string=?, unit) => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_pokemon = { + id: string, + name: Js.Nullable.t(string), + }; + type t = {pokemon: Js.Nullable.t(t_pokemon)}; + type t_variables = { + id: Js.Nullable.t(string), + name: Js.Nullable.t(string), + }; + }; + type t_pokemon = { + id: string, + name: option(string), + }; + type t = {pokemon: option(t_pokemon)}; + type t_variables = { + id: option(string), + name: option(string), + }; + let query: string = [%raw + "require(\"gql\")`\n query pokemon($id: String, $name: String) {\n pokemon(name: $name, id: $id) {\n id\n name\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + pokemon: { + let value = (value: Raw.t).pokemon; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + id: { + let value = (value: Raw.t_pokemon).id; + value; + }, + name: { + let value = (value: Raw.t_pokemon).name; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_pokemon, + ) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let pokemon = { + let value = (value: t).pokemon; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let name = { + let value = (value: t_pokemon).name; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and id = { + let value = (value: t_pokemon).id; + value; + }; + {id, name}; + }: Raw.t_pokemon, + ) + | None => Js.Nullable.null + }; + }; + {pokemon: pokemon}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + id: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).id, + ), + name: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).name, + ), + }; + let makeVariables = (~id=?, ~name=?, ()): t_variables => {id, name}; + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/record.re.txt b/snapshot_tests/operations/expected/template/generate/record.re.txt new file mode 100644 index 00000000..e9f1b528 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/record.re.txt @@ -0,0 +1,791 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; + +type scalars = { + __typename: string, + string, + int, +}; + +type dog = { + __typename: string, + name: string, + barkVolume: float, +}; + +type oneFieldQuery = {nullableString: option(string)}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + string, + int, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: scalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n __typename\n string\n int\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + }: scalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let int = { + let value = (value: scalars).int; + value; + } + and string = { + let value = (value: scalars).string; + value; + } + and __typename = { + let value = (value: scalars).__typename; + value; + }; + {__typename, string, int}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = {nullableString: Js.Nullable.t(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = {nullableString: Js.Nullable.t(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = {nullableString: option(string)}; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n nullableString\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString: nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module OneFieldQueryWithTypename: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + __typename: string, + nullableString: Js.Nullable.t(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + __typename: string, + nullableString: option(string), + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n __typename\n nullableString\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + __typename: { + let value = (value: Raw.t_variousScalars).__typename; + value; + }, + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_variousScalars).__typename; + value; + }; + {__typename, nullableString}; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ExternalFragmentQuery = { + module Fragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `Fragment], Raw.t) => t; + let verifyName: [ | `Fragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + }; + type t = { + string, + int, + }; + type nonrec t_VariousScalars = t; + let query: string = [%raw + "require(\"gql\")`\n fragment Fragment on VariousScalars {\n string\n int\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + string: { + let value = (value: Raw.t).string; + value; + }, + int: { + let value = (value: Raw.t).int; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let int = { + let value = (value: t).int; + value; + } + and string = { + let value = (value: t).string; + value; + }; + {string, int}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _Fragment: [ | `Fragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `Fragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {variousScalars: Fragment.Raw.t_VariousScalars}; + type t_variables = unit; + }; + type t = {variousScalars: Fragment.t_VariousScalars}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n query {\n variousScalars {\n ...Fragment\n }\n }\n ${frag_0}\n`" + ]( + Fragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + + Fragment.verifyArgsAndParse(~fragmentName=`Fragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + Fragment.serialize(value); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; +module InlineFragmentQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n __typename\n name\n barkVolume\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + } + and __typename = { + let value = (value: t_dogOrHuman_Dog).__typename; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module UnionExternalFragmentQuery = { + module DogFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFragment], Raw.t) => t; + let verifyName: [ | `DogFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + }; + type t = { + __typename: string, + name: string, + barkVolume: float, + }; + type nonrec t_Dog = t; + let query: string = [%raw + "require(\"gql\")`\n fragment DogFragment on Dog {\n __typename\n name\n barkVolume\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + name: { + let value = (value: Raw.t).name; + value; + }, + barkVolume: { + let value = (value: Raw.t).barkVolume; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let barkVolume = { + let value = (value: t).barkVolume; + value; + } + and name = { + let value = (value: t).name; + value; + } + and __typename = { + let value = (value: t).__typename; + value; + }; + {__typename, name, barkVolume}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFragment: [ | `DogFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module Untitled1: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFragment.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n ...DogFragment\n }\n }\n }\n ${frag_0}\n`" + ]( + DogFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFragment.Raw.t = Obj.magic(value); + + DogFragment.verifyArgsAndParse( + ~fragmentName=`DogFragment, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFragment.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/template/generate/recursiveInput.re.txt b/snapshot_tests/operations/expected/template/generate/recursiveInput.re.txt new file mode 100644 index 00000000..ac8815be --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/recursiveInput.re.txt @@ -0,0 +1,340 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput; + let makeVariables: (~arg: t_variables_RecursiveInput, unit) => t_variables; + let makeInputObjectRecursiveInput: + ( + ~otherField: string=?, + ~inner: t_variables_RecursiveInput=?, + ~enum: [ | `FIRST | `SECOND | `THIRD]=?, + unit + ) => + t_variables_RecursiveInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: Js.Nullable.t(string), + inner: Js.Nullable.t(t_variables_RecursiveInput), + enum: Js.Nullable.t(string), + }; + }; + type t = {recursiveInput: string}; + type t_variables = {arg: t_variables_RecursiveInput} + and t_variables_RecursiveInput = { + otherField: option(string), + inner: option(t_variables_RecursiveInput), + enum: option([ | `FIRST | `SECOND | `THIRD]), + }; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: RecursiveInput!) {\n recursiveInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + recursiveInput: { + let value = (value: Raw.t).recursiveInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveInput = { + let value = (value: t).recursiveInput; + value; + }; + {recursiveInput: recursiveInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectRecursiveInput(a))((inp: t_variables).arg), + } + and serializeInputObjectRecursiveInput: + t_variables_RecursiveInput => Raw.t_variables_RecursiveInput = + inp => { + otherField: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_RecursiveInput).otherField, + ), + inner: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectRecursiveInput(a))(b), + ) + } + )( + (inp: t_variables_RecursiveInput).inner, + ), + enum: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + ( + a => + switch (a) { + | `FIRST => "FIRST" + | `SECOND => "SECOND" + | `THIRD => "THIRD" + } + )( + b, + ), + ) + } + )( + (inp: t_variables_RecursiveInput).enum, + ), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectRecursiveInput = + (~otherField=?, ~inner=?, ~enum=?, ()): t_variables_RecursiveInput => { + otherField, + inner, + enum, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module Test: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input; + let serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated; + let serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type; + let makeVariables: (~input: t_variables_problem_input, unit) => t_variables; + let makeInputObjectproblem_input: + ( + ~the_problem: t_variables_this_will_be_duplicated=?, + ~b: t_variables_nested_type=?, + unit + ) => + t_variables_problem_input; + let makeInputObjectthis_will_be_duplicated: + (~id: string, unit) => t_variables_this_will_be_duplicated; + let makeInputObjectnested_type: + (~the_problem: t_variables_this_will_be_duplicated=?, unit) => + t_variables_nested_type; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + b: Js.Nullable.t(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: Js.Nullable.t(t_variables_this_will_be_duplicated), + }; + }; + type t = {recursiveRepro: bool}; + type t_variables = {input: t_variables_problem_input} + and t_variables_problem_input = { + the_problem: option(t_variables_this_will_be_duplicated), + b: option(t_variables_nested_type), + } + and t_variables_this_will_be_duplicated = {id: string} + and t_variables_nested_type = { + the_problem: option(t_variables_this_will_be_duplicated), + }; + let query: string = [%raw + "require(\"gql\")`\n query Test($input: problem_input!) {\n recursiveRepro(input: $input)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + recursiveRepro: { + let value = (value: Raw.t).recursiveRepro; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let recursiveRepro = { + let value = (value: t).recursiveRepro; + value; + }; + {recursiveRepro: recursiveRepro}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + input: + (a => serializeInputObjectproblem_input(a))( + (inp: t_variables).input, + ), + } + and serializeInputObjectproblem_input: + t_variables_problem_input => Raw.t_variables_problem_input = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_problem_input).the_problem, + ), + b: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectnested_type(a))(b), + ) + } + )( + (inp: t_variables_problem_input).b, + ), + } + and serializeInputObjectthis_will_be_duplicated: + t_variables_this_will_be_duplicated => + Raw.t_variables_this_will_be_duplicated = + inp => {id: (a => a)((inp: t_variables_this_will_be_duplicated).id)} + and serializeInputObjectnested_type: + t_variables_nested_type => Raw.t_variables_nested_type = + inp => { + the_problem: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => + Js.Nullable.return( + (a => serializeInputObjectthis_will_be_duplicated(a))(b), + ) + } + )( + (inp: t_variables_nested_type).the_problem, + ), + }; + let makeVariables = (~input, ()): t_variables => {input: input} + and makeInputObjectproblem_input = + (~the_problem=?, ~b=?, ()): t_variables_problem_input => { + the_problem, + b, + } + and makeInputObjectthis_will_be_duplicated = + (~id, ()): t_variables_this_will_be_duplicated => { + id: id, + } + and makeInputObjectnested_type = + (~the_problem=?, ()): t_variables_nested_type => { + the_problem: the_problem, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/scalars.re.txt b/snapshot_tests/operations/expected/template/generate/scalars.re.txt new file mode 100644 index 00000000..f9741e76 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/scalars.re.txt @@ -0,0 +1,252 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/scalarsArgs.re.txt b/snapshot_tests/operations/expected/template/generate/scalarsArgs.re.txt new file mode 100644 index 00000000..092ea4fd --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/scalarsArgs.re.txt @@ -0,0 +1,214 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query: string = [%raw + "require(\"gql\")`\n query ($nullableString: String, $string: String!, $nullableInt: Int, $int: Int!, $nullableFloat: Float, $float: Float!, $nullableBoolean: Boolean, $boolean: Boolean!, $nullableID: ID, $id: ID!) {\n scalarsInput(arg: {nullableString: $nullableString, string: $string, nullableInt: $nullableInt, int: $int, nullableFloat: $nullableFloat, float: $float, nullableBoolean: $nullableBoolean, boolean: $boolean, nullableID: $nullableID, id: $id})\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableString, + ), + string: (a => a)((inp: t_variables).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableInt, + ), + int: (a => a)((inp: t_variables).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableFloat, + ), + float: (a => a)((inp: t_variables).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables).nullableID, + ), + id: (a => a)((inp: t_variables).id), + }; + let makeVariables = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/scalarsInput.re.txt b/snapshot_tests/operations/expected/template/generate/scalarsInput.re.txt new file mode 100644 index 00000000..95f0bd36 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/scalarsInput.re.txt @@ -0,0 +1,231 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput; + let makeVariables: + (~arg: t_variables_VariousScalarsInput, unit) => t_variables; + let makeInputObjectVariousScalarsInput: + ( + ~nullableString: string=?, + ~string: string, + ~nullableInt: int=?, + ~int: int, + ~nullableFloat: float=?, + ~float: float, + ~nullableBoolean: bool=?, + ~boolean: bool, + ~nullableID: string=?, + ~id: string, + unit + ) => + t_variables_VariousScalarsInput; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + }; + type t = {scalarsInput: string}; + type t_variables = {arg: t_variables_VariousScalarsInput} + and t_variables_VariousScalarsInput = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + let query: string = [%raw + "require(\"gql\")`\n query ($arg: VariousScalarsInput!) {\n scalarsInput(arg: $arg)\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + scalarsInput: { + let value = (value: Raw.t).scalarsInput; + value; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let scalarsInput = { + let value = (value: t).scalarsInput; + value; + }; + {scalarsInput: scalarsInput}; + }: Raw.t + ); + let rec serializeVariables: t_variables => Raw.t_variables = + inp => { + arg: + (a => serializeInputObjectVariousScalarsInput(a))( + (inp: t_variables).arg, + ), + } + and serializeInputObjectVariousScalarsInput: + t_variables_VariousScalarsInput => Raw.t_variables_VariousScalarsInput = + inp => { + nullableString: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableString, + ), + string: (a => a)((inp: t_variables_VariousScalarsInput).string), + nullableInt: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableInt, + ), + int: (a => a)((inp: t_variables_VariousScalarsInput).int), + nullableFloat: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableFloat, + ), + float: (a => a)((inp: t_variables_VariousScalarsInput).float), + nullableBoolean: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableBoolean, + ), + boolean: (a => a)((inp: t_variables_VariousScalarsInput).boolean), + nullableID: + ( + a => + switch (a) { + | None => Js.Nullable.undefined + | Some(b) => Js.Nullable.return((a => a)(b)) + } + )( + (inp: t_variables_VariousScalarsInput).nullableID, + ), + id: (a => a)((inp: t_variables_VariousScalarsInput).id), + }; + let makeVariables = (~arg, ()): t_variables => {arg: arg} + and makeInputObjectVariousScalarsInput = + ( + ~nullableString=?, + ~string, + ~nullableInt=?, + ~int, + ~nullableFloat=?, + ~float, + ~nullableBoolean=?, + ~boolean, + ~nullableID=?, + ~id, + (), + ) + : t_variables_VariousScalarsInput => { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/skipDirectives.re.txt b/snapshot_tests/operations/expected/template/generate/skipDirectives.re.txt new file mode 100644 index 00000000..58a2d8ee --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/skipDirectives.re.txt @@ -0,0 +1,197 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_v1 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: t_variables => Raw.t_variables; + let makeVariables: (~var: bool, unit) => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_v1 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t_v2 = { + nullableString: Js.Nullable.t(string), + string: Js.Nullable.t(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + }; + type t_v1 = { + nullableString: option(string), + string: option(string), + }; + type t_v2 = { + nullableString: option(string), + string: option(string), + }; + type t = { + v1: t_v1, + v2: t_v2, + }; + type t_variables = {var: bool}; + let query: string = [%raw + "require(\"gql\")`\n query ($var: Boolean!) {\n v1: variousScalars {\n nullableString @skip(if: $var)\n string @skip(if: $var)\n }\n v2: variousScalars {\n nullableString @include(if: $var)\n string @include(if: $var)\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + v1: { + let value = (value: Raw.t).v1; + ( + { + nullableString: { + let value = (value: Raw.t_v1).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v1).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v1 + ); + }, + v2: { + let value = (value: Raw.t).v2; + ( + { + nullableString: { + let value = (value: Raw.t_v2).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_v2).string; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + }: t_v2 + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let v2 = { + let value = (value: t).v2; + ( + { + let string = { + let value = (value: t_v2).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v2).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString, string}; + }: Raw.t_v2 + ); + } + and v1 = { + let value = (value: t).v1; + ( + { + let string = { + let value = (value: t_v1).string; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and nullableString = { + let value = (value: t_v1).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + {nullableString, string}; + }: Raw.t_v1 + ); + }; + {v1, v2}; + }: Raw.t + ); + let serializeVariables: t_variables => Raw.t_variables = + inp => {var: (a => a)((inp: t_variables).var)}; + let makeVariables = (~var, ()): t_variables => {var: var}; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/subscription.re.txt b/snapshot_tests/operations/expected/template/generate/subscription.re.txt new file mode 100644 index 00000000..8f4ddb70 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/subscription.re.txt @@ -0,0 +1,169 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_simpleSubscription_Dog = { + __typename: string, + name: string, + }; + type t_simpleSubscription_Human = { + __typename: string, + name: string, + }; + type t_simpleSubscription; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + }; + type t_simpleSubscription_Dog = {name: string}; + type t_simpleSubscription_Human = {name: string}; + type t_simpleSubscription = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_simpleSubscription_Dog) + | `Human(t_simpleSubscription_Human) + ]; + type t = {simpleSubscription: t_simpleSubscription}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n subscription {\n simpleSubscription {\n __typename\n ...on Dog {\n name\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + simpleSubscription: { + let value = (value: Raw.t).simpleSubscription; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_simpleSubscription_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_simpleSubscription_Dog).name; + value; + }, + }: t_simpleSubscription_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_simpleSubscription_Human = Obj.magic(value); + ( + { + name: { + let value = + (value: Raw.t_simpleSubscription_Human).name; + value; + }, + }: t_simpleSubscription_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_simpleSubscription + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let simpleSubscription = { + let value = (value: t).simpleSubscription; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Dog).name; + value; + }; + {__typename: "Dog", name}; + }: Raw.t_simpleSubscription_Dog, + ): Raw.t_simpleSubscription + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_simpleSubscription_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_simpleSubscription_Human, + ): Raw.t_simpleSubscription + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_simpleSubscription + ) + }; + }; + {simpleSubscription: simpleSubscription}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/tagged_template.re.txt b/snapshot_tests/operations/expected/template/generate/tagged_template.re.txt new file mode 100644 index 00000000..b084d892 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/tagged_template.re.txt @@ -0,0 +1,2094 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let deepMerge = (json1, _) => json1; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +module MyTypes = { + type query; +}; +module MyQuery1a: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: MyTypes.query; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: MyTypes.query = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery1b: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery2: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery3: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\").graphql`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery4: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = {variousScalars: t_variousScalars}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query {\n variousScalars {\n nullableString\n string\n nullableInt\n int\n nullableFloat\n float\n nullableBoolean\n boolean\n nullableID\n id\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + }; + {variousScalars: variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment], Raw.t) => t; + let verifyName: [ | `ListFragment] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + let query: string = [%raw + "require(\"gatsby\")`\n fragment ListFragment on Lists {\n nullableOfNullable\n nullableOfNonNullable\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment: [ | `ListFragment], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery5: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gatsby\")`\n query MyQuery5 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery6: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gatsby\")`\n query MyQuery6 {\n lists {\n ...ListFragment\n }\n }\n ${frag_0}\n`" + ]( + ListFragment.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQuery7: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = {lists: ListFragment.Raw.t_Lists}; + type t_variables = unit; + }; + type t = {lists: ListFragment.t_Lists}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query MyQuery7 {\n lists {\n ...ListFragment\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment.verifyArgsAndParse(~fragmentName=`ListFragment, value); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let lists = { + let value = (value: t).lists; + ListFragment.serialize(value); + }; + {lists: lists}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module ListFragment8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + /** the GraphQL fragment */ + let query: int; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: t => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `ListFragment8], Raw.t) => t; + let verifyName: [ | `ListFragment8] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + nullableOfNullable: Js.Nullable.t(array(Js.Nullable.t(string))), + nullableOfNonNullable: Js.Nullable.t(array(string)), + }; + type nonrec t_Lists = t; + }; + type t = { + nullableOfNullable: option(array(option(string))), + nullableOfNonNullable: option(array(string)), + }; + type nonrec t_Lists = t; + [@bs.module "apollo-client"] external graphql: array(string) => int = "gql"; + let query = + graphql([| + "fragment ListFragment8 on Lists {\nnullableOfNullable \nnullableOfNonNullable \n}\n", + |]); + let parse: Raw.t => t = + (value) => ( + { + nullableOfNullable: { + let value = (value: Raw.t).nullableOfNullable; + switch (Js.toOption(value)) { + | Some(value) => + Some( + value + |> Js.Array.map(value => + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + } + ), + ) + | None => None + }; + }, + nullableOfNonNullable: { + let value = (value: Raw.t).nullableOfNonNullable; + switch (Js.toOption(value)) { + | Some(value) => Some(value |> Js.Array.map(value => value)) + | None => None + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let nullableOfNonNullable = { + let value = (value: t).nullableOfNonNullable; + switch (value) { + | Some(value) => + Js.Nullable.return(value |> Js.Array.map(value => value)) + | None => Js.Nullable.null + }; + } + and nullableOfNullable = { + let value = (value: t).nullableOfNullable; + switch (value) { + | Some(value) => + Js.Nullable.return( + value + |> Js.Array.map(value => + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + } + ), + ) + | None => Js.Nullable.null + }; + }; + {nullableOfNullable, nullableOfNonNullable}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _ListFragment8: [ | `ListFragment8], value: Raw.t) => + parse(value); + let verifyName = + fun + | `ListFragment8 => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; +}; +module MyQuery8: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + /** The GraphQL query */ + let query: int; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_variousScalars = { + nullableString: Js.Nullable.t(string), + string, + nullableInt: Js.Nullable.t(int), + int, + nullableFloat: Js.Nullable.t(float), + float, + nullableBoolean: Js.Nullable.t(bool), + boolean: bool, + nullableID: Js.Nullable.t(string), + id: string, + }; + type t = { + lists: ListFragment8.Raw.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + }; + type t_variousScalars = { + nullableString: option(string), + string, + nullableInt: option(int), + int, + nullableFloat: option(float), + float, + nullableBoolean: option(bool), + boolean: bool, + nullableID: option(string), + id: string, + }; + type t = { + lists: ListFragment8.t_Lists, + variousScalars: t_variousScalars, + }; + type t_variables = unit; + [@bs.module "apollo-client"] + external graphql: (array(string), int) => int = "gql"; + let query = + graphql( + [| + "query MyQuery8 {\nlists {\n...ListFragment8 \n}\n\nvariousScalars {\nnullableString \nstring \nnullableInt \nint \nnullableFloat \nfloat \nnullableBoolean \nboolean \nnullableID \nid \n}\n\n}\n", + "", + |], + ListFragment8.query, + ); + let parse: Raw.t => t = + (value) => ( + { + lists: { + let value = (value: Raw.t).lists; + + ListFragment8.verifyArgsAndParse( + ~fragmentName=`ListFragment8, + value, + ); + }, + variousScalars: { + let value = (value: Raw.t).variousScalars; + ( + { + nullableString: { + let value = (value: Raw.t_variousScalars).nullableString; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + string: { + let value = (value: Raw.t_variousScalars).string; + value; + }, + nullableInt: { + let value = (value: Raw.t_variousScalars).nullableInt; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + int: { + let value = (value: Raw.t_variousScalars).int; + value; + }, + nullableFloat: { + let value = (value: Raw.t_variousScalars).nullableFloat; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + float: { + let value = (value: Raw.t_variousScalars).float; + value; + }, + nullableBoolean: { + let value = (value: Raw.t_variousScalars).nullableBoolean; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + boolean: { + let value = (value: Raw.t_variousScalars).boolean; + value; + }, + nullableID: { + let value = (value: Raw.t_variousScalars).nullableID; + switch (Js.toOption(value)) { + | Some(value) => Some(value) + | None => None + }; + }, + id: { + let value = (value: Raw.t_variousScalars).id; + value; + }, + }: t_variousScalars + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let variousScalars = { + let value = (value: t).variousScalars; + ( + { + let id = { + let value = (value: t_variousScalars).id; + value; + } + and nullableID = { + let value = (value: t_variousScalars).nullableID; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and boolean = { + let value = (value: t_variousScalars).boolean; + value; + } + and nullableBoolean = { + let value = (value: t_variousScalars).nullableBoolean; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and float = { + let value = (value: t_variousScalars).float; + value; + } + and nullableFloat = { + let value = (value: t_variousScalars).nullableFloat; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and int = { + let value = (value: t_variousScalars).int; + value; + } + and nullableInt = { + let value = (value: t_variousScalars).nullableInt; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + } + and string = { + let value = (value: t_variousScalars).string; + value; + } + and nullableString = { + let value = (value: t_variousScalars).nullableString; + switch (value) { + | Some(value) => Js.Nullable.return(value) + | None => Js.Nullable.null + }; + }; + { + nullableString, + string, + nullableInt, + int, + nullableFloat, + float, + nullableBoolean, + boolean, + nullableID, + id, + }; + }: Raw.t_variousScalars + ); + } + and lists = { + let value = (value: t).lists; + ListFragment8.serialize(value); + }; + {lists, variousScalars}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/typename.re.txt b/snapshot_tests/operations/expected/template/generate/typename.re.txt new file mode 100644 index 00000000..487b9ed2 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/typename.re.txt @@ -0,0 +1,212 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: Js.Nullable.t(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: Js.Nullable.t(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + }; + type t_first_inner_inner = { + __typename: string, + field: string, + }; + type t_first_inner = { + __typename: string, + inner: option(t_first_inner_inner), + }; + type t_first = { + __typename: string, + inner: option(t_first_inner), + }; + type t = {first: t_first}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n first: nestedObject {\n __typename\n inner {\n __typename\n inner {\n __typename\n field\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + first: { + let value = (value: Raw.t).first; + ( + { + __typename: { + let value = (value: Raw.t_first).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = (value: Raw.t_first_inner).__typename; + value; + }, + inner: { + let value = (value: Raw.t_first_inner).inner; + switch (Js.toOption(value)) { + | Some(value) => + Some( + { + __typename: { + let value = + (value: Raw.t_first_inner_inner).__typename; + value; + }, + field: { + let value = + (value: Raw.t_first_inner_inner).field; + value; + }, + }: t_first_inner_inner, + ) + | None => None + }; + }, + }: t_first_inner, + ) + | None => None + }; + }, + }: t_first + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let first = { + let value = (value: t).first; + ( + { + let inner = { + let value = (value: t_first).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let inner = { + let value = (value: t_first_inner).inner; + switch (value) { + | Some(value) => + Js.Nullable.return( + { + let field = { + let value = (value: t_first_inner_inner).field; + value; + } + and __typename = { + let value = + (value: t_first_inner_inner).__typename; + value; + }; + {__typename, field}; + }: Raw.t_first_inner_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first_inner).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first_inner, + ) + | None => Js.Nullable.null + }; + } + and __typename = { + let value = (value: t_first).__typename; + value; + }; + {__typename, inner}; + }: Raw.t_first + ); + }; + {first: first}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/union.re.txt b/snapshot_tests/operations/expected/template/generate/union.re.txt new file mode 100644 index 00000000..23dae354 --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/union.re.txt @@ -0,0 +1,688 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module Graphql_ppx_runtime = { + let assign_typename = (obj, _) => obj; +}; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module MyQueryNoError: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman_Human = {name: string}; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + | `Human(t_dogOrHuman_Human) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + }: t_dogOrHuman_Human + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let name = { + let value = (value: t_dogOrHuman_Human).name; + value; + }; + {__typename: "Human", name}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; + +type named = { + name: string, + __typename: string, +}; +module NamedQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + name: string, + __typename: string, + }; + type t_dogOrHuman_Human = { + name: string, + __typename: string, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(named) + | `Human(named) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n __typename\n }\n ...on Human {\n name\n __typename\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Dog).__typename; + value; + }, + }: named + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_dogOrHuman_Human = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Human).name; + value; + }, + __typename: { + let value = (value: Raw.t_dogOrHuman_Human).__typename; + value; + }, + }: named + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Dog"}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `Human(value) => ( + Obj.magic( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename: "Human"}; + }: Raw.t_dogOrHuman_Human, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; +module NamedSpread = { + module DogFields: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + /** the GraphQL fragment */ + let query: string; + /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ + let parse: Raw.t => named; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON-compatible data */ + let serialize: named => Raw.t; + let verifyArgsAndParse: (~fragmentName: [ | `DogFields], Raw.t) => t; + let verifyName: [ | `DogFields] => unit; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t = { + name: string, + __typename: string, + }; + type nonrec t_Dog = t; + }; + type t = named; + type nonrec t_Dog = named; + let query: string = [%raw + "require(\"gql\")`\n fragment DogFields on Dog {\n name\n __typename\n }\n`" + ]; + let parse: Raw.t => named = + (value) => ( + { + name: { + let value = (value: Raw.t).name; + value; + }, + __typename: { + let value = (value: Raw.t).__typename; + value; + }, + }: named + ); + let serialize: named => Raw.t = + (value) => ( + { + let __typename = { + let value = (value: named).__typename; + value; + } + and name = { + let value = (value: named).name; + value; + }; + {name, __typename}; + }: Raw.t + ); + let verifyArgsAndParse = + (~fragmentName as _DogFields: [ | `DogFields], value: Raw.t) => + parse(value); + let verifyName = + fun + | `DogFields => (); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + }; + module DogOrHuman: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + } = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(DogFields.t_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = + [%raw + "(frag_0) => require(\"gql\")`\n query dogOrHuman {\n dogOrHuman {\n __typename\n ...on Dog {\n ...DogFields\n }\n }\n }\n ${frag_0}\n`" + ]( + DogFields.query, + ); + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: DogFields.Raw.t = Obj.magic(value); + + DogFields.verifyArgsAndParse( + ~fragmentName=`DogFields, + value, + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + Graphql_ppx_runtime.assign_typename( + Obj.magic(DogFields.serialize(value)): Js.Json.t, + "Dog", + ), + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => ( + Obj.magic(value): Raw.t_dogOrHuman + ) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; + }; +}; diff --git a/snapshot_tests/operations/expected/template/generate/unionPartial.re.txt b/snapshot_tests/operations/expected/template/generate/unionPartial.re.txt new file mode 100644 index 00000000..9367f58a --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/unionPartial.re.txt @@ -0,0 +1,145 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_dogOrHuman; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + }; + type t_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_dogOrHuman_Dog) + ]; + type t = {dogOrHuman: t_dogOrHuman}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n query {\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + dogOrHuman: { + let value = (value: Raw.t).dogOrHuman; + let typename: string = + Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_dogOrHuman_Dog = Obj.magic(value); + ( + { + name: { + let value = (value: Raw.t_dogOrHuman_Dog).name; + value; + }, + barkVolume: { + let value = (value: Raw.t_dogOrHuman_Dog).barkVolume; + value; + }, + }: t_dogOrHuman_Dog + ); + }, + ) + | _ => `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_dogOrHuman + ); + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let dogOrHuman = { + let value = (value: t).dogOrHuman; + switch (value) { + | `Dog(value) => ( + Obj.magic( + { + let barkVolume = { + let value = (value: t_dogOrHuman_Dog).barkVolume; + value; + } + and name = { + let value = (value: t_dogOrHuman_Dog).name; + value; + }; + {__typename: "Dog", name, barkVolume}; + }: Raw.t_dogOrHuman_Dog, + ): Raw.t_dogOrHuman + ) + | `FutureAddedValue(value) => (Obj.magic(value): Raw.t_dogOrHuman) + }; + }; + {dogOrHuman: dogOrHuman}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/snapshot_tests/operations/expected/template/generate/variant.re.txt b/snapshot_tests/operations/expected/template/generate/variant.re.txt new file mode 100644 index 00000000..e40d1c0c --- /dev/null +++ b/snapshot_tests/operations/expected/template/generate/variant.re.txt @@ -0,0 +1,294 @@ +[@ocaml.ppx.context + { + tool_name: "ppx_driver", + include_dirs: [], + load_path: [], + open_modules: [], + for_package: None, + debug: false, + use_threads: false, + use_vmthreads: false, + recursive_types: false, + principal: false, + transparent_modules: false, + unboxed_types: false, + unsafe_string: false, + cookies: [], + } +]; +module MyQuery: { + [@ocaml.warning "-32-30"]; + module Raw: { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + /** The GraphQL query */ + let query: string; + /** Parse the JSON-compatible GraphQL data to ReasonML data types */ + let parse: Raw.t => t; + /** Serialize the ReasonML GraphQL data that was parsed using the parse +function back to the original JSON compatible data */ + let serialize: t => Raw.t; + let serializeVariables: unit => Raw.t_variables; + let makeVariables: unit => t_variables; + let makeDefaultVariables: unit => t_variables; + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +} = { + [@ocaml.warning "-32-30"]; + module Raw = { + type t_mutationForVariant_dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman_Dog = { + __typename: string, + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = { + __typename: string, + name: string, + }; + type t_mutationForVariant_dogOrHuman; + type t_mutationForVariant; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + }; + type t_mutationForVariant_dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_human = {name: string}; + type t_mutationForVariant_dogOrHuman_Dog = { + name: string, + barkVolume: float, + }; + type t_mutationForVariant_dogOrHuman_Human = {name: string}; + type t_mutationForVariant_dogOrHuman = [ + | `FutureAddedValue(Js.Json.t) + | `Dog(t_mutationForVariant_dogOrHuman_Dog) + | `Human(t_mutationForVariant_dogOrHuman_Human) + ]; + type t_mutationForVariant = [ + | `BaseType(string) + | `BaseTypeList(array(string)) + | `Dog(t_mutationForVariant_dog) + | `Human(t_mutationForVariant_human) + | `DogOrHuman(t_mutationForVariant_dogOrHuman) + ]; + type t = {mutationForVariant: t_mutationForVariant}; + type t_variables = unit; + let query: string = [%raw + "require(\"gql\")`\n mutation {\n mutationForVariant {\n baseType\n baseTypeList\n dog {\n name\n barkVolume\n }\n human {\n name\n }\n dogOrHuman {\n __typename\n ...on Dog {\n name\n barkVolume\n }\n ...on Human {\n name\n }\n }\n }\n }\n`" + ]; + let parse: Raw.t => t = + (value) => ( + { + mutationForVariant: { + let value = (value: Raw.t).mutationForVariant; + switch (Js.Json.decodeObject(Obj.magic(value): Js.Json.t)) { + | None => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "Expected type " + ++ "VariantTestResult" + ++ " to be an object", + ) + | Some(value) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseType"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseType(value); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "baseTypeList"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `BaseTypeList(value |> Js.Array.map(value => value)); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "dog"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Dog( + { + name: { + let value = (value: Raw.t_mutationForVariant_dog).name; + value; + }, + barkVolume: { + let value = + (value: Raw.t_mutationForVariant_dog).barkVolume; + value; + }, + }: t_mutationForVariant_dog, + ); + | Some(_) => + let temp = Js.Dict.unsafeGet(Obj.magic(value), "human"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `Human( + { + name: { + let value = + (value: Raw.t_mutationForVariant_human).name; + value; + }, + }: t_mutationForVariant_human, + ); + | Some(_) => + let temp = + Js.Dict.unsafeGet(Obj.magic(value), "dogOrHuman"); + switch (Js.Json.decodeNull(temp)) { + | None => + let value = temp; + `DogOrHuman( + { + let typename: string = + Obj.magic( + Js.Dict.unsafeGet( + Obj.magic(value), + "__typename", + ), + ); + ( + switch (typename) { + | "Dog" => + `Dog( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Dog = + Obj.magic(value); + ( + { + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + name; + value; + }, + barkVolume: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Dog + ). + barkVolume; + value; + }, + }: t_mutationForVariant_dogOrHuman_Dog + ); + }, + ) + | "Human" => + `Human( + { + let value: Raw.t_mutationForVariant_dogOrHuman_Human = + Obj.magic(value); + ( + { + name: { + let value = + ( + value: Raw.t_mutationForVariant_dogOrHuman_Human + ). + name; + value; + }, + }: t_mutationForVariant_dogOrHuman_Human + ); + }, + ) + | _ => + `FutureAddedValue(Obj.magic(value): Js.Json.t) + }: t_mutationForVariant_dogOrHuman + ); + }, + ); + | Some(_) => + Js.Exn.raiseError( + "graphql-ppx: " + ++ "All fields on variant selection set on type " + ++ "VariantTestResult" + ++ " were null", + ) + }; + }; + }; + }; + }; + }; + }, + }: t + ); + let serialize: t => Raw.t = + (value) => ( + { + let mutationForVariant = { + let value = (value: t).mutationForVariant; + let _temp = value; + Obj.magic(Js.Json.null); + }; + {mutationForVariant: mutationForVariant}; + }: Raw.t + ); + let serializeVariables = () => (); + let makeVariables = () => (); + let makeDefaultVariables = () => makeVariables(); + external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"; + external toJson: Raw.t => Js.Json.t = "%identity"; + external variablesToJson: Raw.t_variables => Js.Json.t = "%identity"; +}; diff --git a/tests_bucklescript/operations/explicit_object_record.re b/snapshot_tests/operations/explicit_object_record.re similarity index 100% rename from tests_bucklescript/operations/explicit_object_record.re rename to snapshot_tests/operations/explicit_object_record.re diff --git a/tests_bucklescript/operations/extensions.re b/snapshot_tests/operations/extensions.re similarity index 100% rename from tests_bucklescript/operations/extensions.re rename to snapshot_tests/operations/extensions.re diff --git a/tests_bucklescript/operations/fragmentDefinition.re b/snapshot_tests/operations/fragmentDefinition.re similarity index 97% rename from tests_bucklescript/operations/fragmentDefinition.re rename to snapshot_tests/operations/fragmentDefinition.re index 3b4ff2be..9e686cea 100644 --- a/tests_bucklescript/operations/fragmentDefinition.re +++ b/snapshot_tests/operations/fragmentDefinition.re @@ -1,4 +1,4 @@ -module GraphQL_PPX = { +module Graphql_ppx_runtime = { // mock let deepMerge = (json1, _) => { json1; diff --git a/tests_bucklescript/operations/fragmentInFragment.re b/snapshot_tests/operations/fragmentInFragment.re similarity index 87% rename from tests_bucklescript/operations/fragmentInFragment.re rename to snapshot_tests/operations/fragmentInFragment.re index e05cf8d3..b777f8d0 100644 --- a/tests_bucklescript/operations/fragmentInFragment.re +++ b/snapshot_tests/operations/fragmentInFragment.re @@ -1,4 +1,4 @@ -module GraphQL_PPX = { +module Graphql_ppx_runtime = { // mock let deepMerge = (json1, _) => { json1; diff --git a/tests_bucklescript/operations/fragmentOnInterface.re b/snapshot_tests/operations/fragmentOnInterface.re similarity index 90% rename from tests_bucklescript/operations/fragmentOnInterface.re rename to snapshot_tests/operations/fragmentOnInterface.re index 0794dc14..9d1862de 100644 --- a/tests_bucklescript/operations/fragmentOnInterface.re +++ b/snapshot_tests/operations/fragmentOnInterface.re @@ -1,4 +1,4 @@ -module GraphQL_PPX = { +module Graphql_ppx_runtime = { // mock let deepMerge = (json1, _) => { json1; diff --git a/snapshot_tests/operations/fragmentUnion.re b/snapshot_tests/operations/fragmentUnion.re new file mode 100644 index 00000000..9cd0ef83 --- /dev/null +++ b/snapshot_tests/operations/fragmentUnion.re @@ -0,0 +1,26 @@ + +module Graphql_ppx_runtime = { + // mock + let assign_typename: (Js.Json.t, string) => Js.Json.t = [%raw {| (obj, typename) => { obj.__typename = typename; return obj } |}] +}; + +[%graphql + {| + fragment DogFragment on Dog { + name + } + fragment HumanFragment on Human { + name + } + + query MyQuery { + dogOrHuman { + ... on Dog { + ...DogFragment + } + ... on Human { + ...HumanFragment + } + } + } +|}] diff --git a/tests_bucklescript/operations/fragmentvariableinput.re b/snapshot_tests/operations/fragmentvariableinput.re similarity index 100% rename from tests_bucklescript/operations/fragmentvariableinput.re rename to snapshot_tests/operations/fragmentvariableinput.re diff --git a/tests_bucklescript/operations/hasuraRepro.re b/snapshot_tests/operations/hasuraRepro.re similarity index 100% rename from tests_bucklescript/operations/hasuraRepro.re rename to snapshot_tests/operations/hasuraRepro.re diff --git a/tests_bucklescript/operations/interface.re b/snapshot_tests/operations/interface.re similarity index 96% rename from tests_bucklescript/operations/interface.re rename to snapshot_tests/operations/interface.re index 95eb184d..68a1c99e 100644 --- a/tests_bucklescript/operations/interface.re +++ b/snapshot_tests/operations/interface.re @@ -1,4 +1,4 @@ -module GraphQL_PPX = { +module Graphql_ppx_runtime = { // mock let deepMerge = (json1, _) => { json1; diff --git a/tests_bucklescript/operations/lists.re b/snapshot_tests/operations/lists.re similarity index 100% rename from tests_bucklescript/operations/lists.re rename to snapshot_tests/operations/lists.re diff --git a/tests_bucklescript/operations/listsArgs.re b/snapshot_tests/operations/listsArgs.re similarity index 100% rename from tests_bucklescript/operations/listsArgs.re rename to snapshot_tests/operations/listsArgs.re diff --git a/tests_bucklescript/operations/listsInput.re b/snapshot_tests/operations/listsInput.re similarity index 100% rename from tests_bucklescript/operations/listsInput.re rename to snapshot_tests/operations/listsInput.re diff --git a/tests_bucklescript/operations/module_type.re b/snapshot_tests/operations/module_type.re similarity index 100% rename from tests_bucklescript/operations/module_type.re rename to snapshot_tests/operations/module_type.re diff --git a/tests_bucklescript/operations/mutation.re b/snapshot_tests/operations/mutation.re similarity index 100% rename from tests_bucklescript/operations/mutation.re rename to snapshot_tests/operations/mutation.re diff --git a/tests_bucklescript/operations/mutationWithArgs.re b/snapshot_tests/operations/mutationWithArgs.re similarity index 100% rename from tests_bucklescript/operations/mutationWithArgs.re rename to snapshot_tests/operations/mutationWithArgs.re diff --git a/tests_bucklescript/operations/mutationWithArgsAndNoRecords.re b/snapshot_tests/operations/mutationWithArgsAndNoRecords.re similarity index 100% rename from tests_bucklescript/operations/mutationWithArgsAndNoRecords.re rename to snapshot_tests/operations/mutationWithArgsAndNoRecords.re diff --git a/tests_bucklescript/operations/nested.re b/snapshot_tests/operations/nested.re similarity index 100% rename from tests_bucklescript/operations/nested.re rename to snapshot_tests/operations/nested.re diff --git a/tests_bucklescript/operations/nonrecursiveInput.re b/snapshot_tests/operations/nonrecursiveInput.re similarity index 100% rename from tests_bucklescript/operations/nonrecursiveInput.re rename to snapshot_tests/operations/nonrecursiveInput.re diff --git a/tests_bucklescript/operations/omitFutureValueEnum.re b/snapshot_tests/operations/omitFutureValueEnum.re similarity index 100% rename from tests_bucklescript/operations/omitFutureValueEnum.re rename to snapshot_tests/operations/omitFutureValueEnum.re diff --git a/tests_bucklescript/operations/omitFutureValueUnion.re b/snapshot_tests/operations/omitFutureValueUnion.re similarity index 100% rename from tests_bucklescript/operations/omitFutureValueUnion.re rename to snapshot_tests/operations/omitFutureValueUnion.re diff --git a/tests_bucklescript/operations/pokedexApolloMode.re b/snapshot_tests/operations/pokedexApolloMode.re similarity index 100% rename from tests_bucklescript/operations/pokedexApolloMode.re rename to snapshot_tests/operations/pokedexApolloMode.re diff --git a/tests_bucklescript/operations/pokedexScalars.re b/snapshot_tests/operations/pokedexScalars.re similarity index 100% rename from tests_bucklescript/operations/pokedexScalars.re rename to snapshot_tests/operations/pokedexScalars.re diff --git a/tests_bucklescript/operations/record.re b/snapshot_tests/operations/record.re similarity index 92% rename from tests_bucklescript/operations/record.re rename to snapshot_tests/operations/record.re index e275acde..b815f4ad 100644 --- a/tests_bucklescript/operations/record.re +++ b/snapshot_tests/operations/record.re @@ -1,3 +1,10 @@ +module Graphql_ppx_runtime = { + // mock + let assign_typename = (obj, _) => { + obj; + }; +}; + type scalars = { __typename: string, string, diff --git a/tests_bucklescript/operations/recursiveInput.re b/snapshot_tests/operations/recursiveInput.re similarity index 100% rename from tests_bucklescript/operations/recursiveInput.re rename to snapshot_tests/operations/recursiveInput.re diff --git a/tests_bucklescript/operations/scalars.re b/snapshot_tests/operations/scalars.re similarity index 100% rename from tests_bucklescript/operations/scalars.re rename to snapshot_tests/operations/scalars.re diff --git a/tests_bucklescript/operations/scalarsArgs.re b/snapshot_tests/operations/scalarsArgs.re similarity index 100% rename from tests_bucklescript/operations/scalarsArgs.re rename to snapshot_tests/operations/scalarsArgs.re diff --git a/tests_bucklescript/operations/scalarsInput.re b/snapshot_tests/operations/scalarsInput.re similarity index 100% rename from tests_bucklescript/operations/scalarsInput.re rename to snapshot_tests/operations/scalarsInput.re diff --git a/tests_bucklescript/operations/skipDirectives.re b/snapshot_tests/operations/skipDirectives.re similarity index 100% rename from tests_bucklescript/operations/skipDirectives.re rename to snapshot_tests/operations/skipDirectives.re diff --git a/tests_bucklescript/operations/subscription.re b/snapshot_tests/operations/subscription.re similarity index 100% rename from tests_bucklescript/operations/subscription.re rename to snapshot_tests/operations/subscription.re diff --git a/tests_bucklescript/operations/tagged_template.re b/snapshot_tests/operations/tagged_template.re similarity index 97% rename from tests_bucklescript/operations/tagged_template.re rename to snapshot_tests/operations/tagged_template.re index 0216f87b..c07ede65 100644 --- a/tests_bucklescript/operations/tagged_template.re +++ b/snapshot_tests/operations/tagged_template.re @@ -1,4 +1,4 @@ -module GraphQL_PPX = { +module Graphql_ppx_runtime = { // mock let deepMerge = (json1, _) => { json1; @@ -180,7 +180,7 @@ module MyQuery4 = [%graphql [%graphql {| - fragment ListFragment8 on Lists @ppxConfig( + fragment ListFragment8 on Lists @ppxConfig( templateTagImport: "gql", templateTagLocation: "apollo-client", templateTagReturnType: "int", diff --git a/tests_bucklescript/operations/typename.re b/snapshot_tests/operations/typename.re similarity index 100% rename from tests_bucklescript/operations/typename.re rename to snapshot_tests/operations/typename.re diff --git a/tests_bucklescript/operations/union.re b/snapshot_tests/operations/union.re similarity index 90% rename from tests_bucklescript/operations/union.re rename to snapshot_tests/operations/union.re index f35f6f74..12689d39 100644 --- a/tests_bucklescript/operations/union.re +++ b/snapshot_tests/operations/union.re @@ -1,3 +1,10 @@ +module Graphql_ppx_runtime = { + // mock + let assign_typename = (obj, _) => { + obj; + }; +}; + module MyQuery = [%graphql {| { diff --git a/tests_bucklescript/operations/unionPartial.re b/snapshot_tests/operations/unionPartial.re similarity index 100% rename from tests_bucklescript/operations/unionPartial.re rename to snapshot_tests/operations/unionPartial.re diff --git a/tests_bucklescript/operations/variant.re b/snapshot_tests/operations/variant.re similarity index 100% rename from tests_bucklescript/operations/variant.re rename to snapshot_tests/operations/variant.re diff --git a/snapshot_tests/ppx_output.sh b/snapshot_tests/ppx_output.sh new file mode 100755 index 00000000..38db021c --- /dev/null +++ b/snapshot_tests/ppx_output.sh @@ -0,0 +1,4 @@ +#!/bin/sh +file="$1" +shift 1 +refmt --parse re --print binary $file | graphql_ppx -schema ../graphql_schema.json $@ /dev/stdin /dev/stdout | refmt --parse binary --print re diff --git a/tests_bucklescript/utilities/.gitignore b/snapshot_tests/utilities/.gitignore similarity index 100% rename from tests_bucklescript/utilities/.gitignore rename to snapshot_tests/utilities/.gitignore diff --git a/tests_bucklescript/utilities/GraphQL_PPX.js b/snapshot_tests/utilities/GraphQL_PPX.js similarity index 100% rename from tests_bucklescript/utilities/GraphQL_PPX.js rename to snapshot_tests/utilities/GraphQL_PPX.js diff --git a/snapshot_tests/utilities/GraphQL_PPX.ml b/snapshot_tests/utilities/GraphQL_PPX.ml new file mode 100644 index 00000000..b5e37872 --- /dev/null +++ b/snapshot_tests/utilities/GraphQL_PPX.ml @@ -0,0 +1,38 @@ +[%%private +let clone = + (fun a -> + Obj.magic (Js.Obj.assign (Obj.magic (Js.Obj.empty ())) (Obj.magic a)) + : 'a Js.Dict.t -> 'a Js.Dict.t)] + +let rec deepMerge (json1 : Js.Json.t) (json2 : Js.Json.t) = + match + ( ( Obj.magic json1 = Js.null, + Js_array2.isArray json1, + Js.typeof json1 = "object" ), + ( Obj.magic json2 = Js.null, + Js_array2.isArray json2, + Js.typeof json2 = "object" ) ) + with + | (_, true, _), (_, true, _) -> + (Obj.magic + (Js.Array.mapi + (fun el1 idx -> + let el2 = Js.Array.unsafe_get (Obj.magic json2) idx in + match Js.typeof el2 = "object" with + | true -> deepMerge el1 el2 + | false -> el2) + (Obj.magic json1)) + : Js.Json.t) + | (false, false, true), (false, false, true) -> + let obj1 = clone (Obj.magic json1) in + let obj2 = Obj.magic json2 in + Js.Dict.keys obj2 + |> Js.Array.forEach (fun key -> + let existingVal = (Js.Dict.unsafeGet obj1 key : Js.Json.t) in + let newVal = (Js.Dict.unsafeGet obj2 key : Js.Json.t) in + Js.Dict.set obj1 key + (match Js.typeof existingVal <> "object" with + | true -> newVal + | false -> Obj.magic (deepMerge existingVal newVal))); + Obj.magic obj1 + | (_, _, _), (_, _, _) -> json2 diff --git a/src/base/ast_serializer_apollo.re b/src/base/ast_serializer_apollo.re deleted file mode 100644 index 7c84f160..00000000 --- a/src/base/ast_serializer_apollo.re +++ /dev/null @@ -1,216 +0,0 @@ -open Graphql_ast; -open Source_pos; - -let ser_optional = serializer => - fun - | None => `Null - | Some(item) => serializer(item); - -let ser_list_to_array = (serializer, items) => - `List(List.map(serializer, items)); - -let ser_optional_list = serializer => - fun - | None - | Some({item: [], _}) => `List([]) - | Some({item, _}) => ser_list_to_array(serializer, item); - -let ser_name = ({item: name, _}) => - `Assoc([("kind", `String("Name")), ("value", `String(name))]); - -let rec ser_type = - fun - | {item: Tr_named(name), _} => - `Assoc([("kind", `String("NamedType")), ("name", ser_name(name))]) - | {item: Tr_list(inner), _} => - `Assoc([("kind", `String("ListType")), ("type", ser_type(inner))]) - | {item: Tr_non_null_named(name), _} => - `Assoc([ - ("kind", `String("NonNullType")), - ( - "type", - `Assoc([ - ("kind", `String("NamedType")), - ("name", ser_name(name)), - ]), - ), - ]) - | {item: Tr_non_null_list(inner), _} => - `Assoc([ - ("kind", `String("NonNullType")), - ( - "type", - `Assoc([ - ("kind", `String("ListType")), - ("type", ser_type(inner)), - ]), - ), - ]); - -let rec ser_value = - fun - | {item: Iv_null, _} => `Assoc([("kind", `String("NullValue"))]) - | {item: Iv_int(i), _} => - `Assoc([ - ("kind", `String("IntValue")), - ("value", `String(string_of_int(i))), - ]) - | {item: Iv_float(f), _} => - `Assoc([ - ("kind", `String("FloatValue")), - ("value", `String(Printf.sprintf("%.16g", f))), - ]) - | {item: Iv_string(s), _} => - `Assoc([("kind", `String("StringValue")), ("value", `String(s))]) - | {item: Iv_boolean(b), _} => - `Assoc([("kind", `String("BooleanValue")), ("value", `Bool(b))]) - | {item: Iv_enum(e), _} => - `Assoc([("kind", `String("EnumValue")), ("value", `String(e))]) - | {item: Iv_variable(v), span, _} => - `Assoc([ - ("kind", `String("Variable")), - ("name", ser_name({item: v, span})), - ]) - | {item: Iv_list(l), _} => - `Assoc([ - ("kind", `String("ListValue")), - ("values", ser_list_to_array(ser_value, l)), - ]) - | {item: Iv_object(o), _} => - `Assoc([ - ("kind", `String("ObjectValue")), - ("fields", ser_list_to_array(ser_object_field, o)), - ]) -and ser_object_field = ((k, v)) => - `Assoc([ - ("kind", `String("ObjectField")), - ("name", ser_name(k)), - ("value", ser_value(v)), - ]); - -let ser_argument = ((name, value)) => - `Assoc([ - ("kind", `String("Argument")), - ("name", ser_name(name)), - ("value", ser_value(value)), - ]); - -let ser_arguments = args => ser_optional_list(ser_argument, args); - -let ser_variable_definition = ((name, def)) => - `Assoc([ - ("kind", `String("VariableDefinition")), - ( - "variable", - `Assoc([("kind", `String("Variable")), ("name", ser_name(name))]), - ), - ("type", ser_type(def.vd_type)), - ("defaultValue", ser_optional(ser_value, def.vd_default_value)), - ]); - -let ser_variable_definitions = defs => - ser_optional_list(ser_variable_definition, defs); - -let ser_directive = ({item, _}) => - `Assoc([ - ("kind", `String("Directive")), - ("name", ser_name(item.d_name)), - ("arguments", ser_arguments(item.d_arguments)), - ]); - -let ser_directives = ser_list_to_array(ser_directive); - -let ser_type_condition = tc => ser_type({item: Tr_named(tc), span: tc.span}); - -let rec ser_selection_set = sset => - `Assoc([ - ("kind", `String("SelectionSet")), - ("selections", ser_list_to_array(ser_selection, sset.item)), - ]) -and ser_selection = - fun - | Field({item, _}) => - `Assoc([ - ("kind", `String("Field")), - ("alias", ser_optional(ser_name, item.fd_alias)), - ("name", ser_name(item.fd_name)), - ("arguments", ser_arguments(item.fd_arguments)), - ("directives", ser_directives(item.fd_directives)), - ( - "selectionSet", - ser_optional(ser_selection_set, item.fd_selection_set), - ), - ]) - | FragmentSpread({item, _}) => - `Assoc([ - ("kind", `String("FragmentSpread")), - ("name", ser_name(item.fs_name)), - ("directives", ser_directives(item.fs_directives)), - ]) - | InlineFragment({item, _}) => - `Assoc([ - ("kind", `String("InlineFragment")), - ( - "typeCondition", - ser_optional(ser_type_condition, item.if_type_condition), - ), - ("directives", ser_directives(item.if_directives)), - ("selectionSet", ser_selection_set(item.if_selection_set)), - ]); - -let ser_definition = - fun - | Operation({item, _}) => - `Assoc([ - ("kind", `String("OperationDefinition")), - ("name", ser_optional(ser_name, item.o_name)), - ( - "operation", - switch (item.o_type) { - | Query => `String("query") - | Mutation => `String("mutation") - | Subscription => `String("subscription") - }, - ), - ( - "variableDefinitions", - ser_variable_definitions(item.o_variable_definitions), - ), - ("directives", ser_directives(item.o_directives)), - ("selectionSet", ser_selection_set(item.o_selection_set)), - ]) - | Fragment({item, _}) => - `Assoc([ - ("kind", `String("FragmentDefintion")), - ("name", ser_name(item.fg_name)), - ("typeCondition", ser_type_condition(item.fg_type_condition)), - ("directives", ser_directives(item.fg_directives)), - ("selectionSet", ser_selection_set(item.fg_selection_set)), - ]); - -let def_end = - fun - | Operation({span: (_, e), _}) - | Fragment({span: (_, e), _}) => e.index; - -let document_end = - List.fold_left((end_, def) => max(end_, def_end(def)), 0); - -let serialize_document = (source, defs) => - `Assoc([ - ("kind", `String("Document")), - ("definitions", ser_list_to_array(ser_definition, defs)), - ( - "loc", - `Assoc([ - ("start", `Int(0)), - ("end", `Int(defs |> document_end)), - ("source", `StringExpr(source)), - ( - "locationOffset", - `Assoc([("column", `Int(1)), ("line", `Int(1))]), - ), - ("name", `String("GraphQL request")), - ]), - ), - ]); diff --git a/src/base/ast_transforms.re b/src/base/ast_transforms.re deleted file mode 100644 index 4b74cb3b..00000000 --- a/src/base/ast_transforms.re +++ /dev/null @@ -1,267 +0,0 @@ -type t = (Schema.t, Graphql_ast.document) => Graphql_ast.document; -type parent = - | Definition(Graphql_ast.definition) - | Selection(Graphql_ast.selection); - -let get_parent_span = - fun - | Selection(Graphql_ast.Field({span})) => span - | Selection(Graphql_ast.InlineFragment({span})) => span - | Selection(Graphql_ast.FragmentSpread({span})) => span - | Definition(Graphql_ast.Operation({span})) => span - | Definition(Graphql_ast.Fragment({span})) => span; - -// get's the type of a field name -let safe_get_field_type = (schema, ty: Schema.type_meta, name) => { - let ty_fields = - switch (ty) { - | Interface({im_fields, _}) => im_fields - | Object({om_fields, _}) => om_fields - | _ => [] - }; - Schema.( - List.find_opt(fm => fm.Schema.fm_name == name, ty_fields) - |> Option.map(field => field.fm_field_type) - |> Option.map(Graphql_printer.type_ref_name) - |> Option.flat_map(Schema.lookup_type(schema)) - ); -}; - -let traverse_selection_set = (schema, ty, selection_set, fn) => { - Graphql_ast.( - selection_set - |> List.map( - fun - | Graphql_ast.InlineFragment( - { - item: { - if_type_condition: Some(type_condition), - if_selection_set: selection, - }, - } as field, - ) as parent => { - let field_ty = Schema.lookup_type(schema, type_condition.item); - switch (field_ty) { - | None => parent - | Some(field_ty) => - let selection_set = - fn(Selection(parent), schema, field_ty, selection.item); - Graphql_ast.InlineFragment({ - ...field, - item: { - ...field.item, - if_selection_set: { - ...selection, - item: selection_set, - }, - }, - }); - }; - } - | Graphql_ast.Field( - {item: {fd_selection_set: Some(selection)}} as field, - ) as parent => { - let field_ty = - safe_get_field_type(schema, ty, field.item.fd_name.item); - switch (field_ty) { - | None => parent - | Some(field_ty) => - let selection_set = - fn(Selection(parent), schema, field_ty, selection.item); - - Graphql_ast.Field({ - ...field, - item: { - ...field.item, - fd_selection_set: - Some({...selection, item: selection_set}), - }, - }); - }; - } - | other => other, - ) - ); -}; - -let rec do_add_typename_to_selection_set = (parent, schema, ty, selection_set) => { - let add_typename = - switch (ty, selection_set) { - | (_, []) => false - // do not add typename to a single fragment spread. It will be added in the - // fragment anyway, and it will prevent the result to be a single record of - // the type of the fragment - | (_, [Graphql_ast.FragmentSpread(_)]) => false - // do not inject `__typename` in interfaces and unions, the printer does that - // already behind the scenes - | (Schema.Interface(_), _selection_set) => false - | (Schema.Union(_), _selection_set) => false - | (Schema.Object({om_name}), _selection_set) => - // do not inject __typename in top-level types - Schema.( - switch (schema) { - | {meta: {sm_subscription_type: Some(name)}} when name == om_name => - false - | {meta: {sm_mutation_type: Some(name)}} when name == om_name => - false - | {meta: {sm_query_type: name}} when name == om_name => false - | _ => - switch (parent) { - // we cannot add typename when using @bsvariant - | Selection( - Graphql_ast.Field({item: {fd_directives: directives}}), - ) => - !( - directives - |> List.exists((d: Source_pos.spanning(Graphql_ast.directive)) => - d.item.d_name.item == "bsVariant" - ) - ) - | _ => true - } - } - ) - | (_, _selection_set) => false - }; - let selection_set = - traverse_selection_set( - schema, - ty, - selection_set, - do_add_typename_to_selection_set, - ); - - let already_has_typename = - selection_set - |> List.exists( - fun - | Graphql_ast.Field({item: {fd_name: {item: "__typename"}}}) => - true - | _ => false, - ); - - let parent_span = get_parent_span(parent); - if (add_typename && !already_has_typename) { - [ - Graphql_ast.Field({ - span: parent_span, - item: { - fd_alias: None, - fd_name: { - span: ( - {Source_pos.index: (-1), line: (-1), col: (-1)}, - {Source_pos.index: (-1), line: (-1), col: (-1)}, - ), - item: "__typename", - }, - fd_arguments: None, - fd_directives: [], - fd_selection_set: None, - }, - }), - ...selection_set, - ]; - } else { - selection_set; - }; -}; - -let rec do_remove_typename_from_union = (_parent, schema, ty, selection_set) => { - let selection_set = - switch (ty) { - | Schema.Union(_) => - Graphql_ast.( - selection_set - |> List.fold_left( - acc => - fun - | Field({item: {fd_name: {item: "__typename"}}}) => acc - | other => [other, ...acc], - [], - ) - |> List.rev - ) - | _ => selection_set - }; - traverse_selection_set( - schema, - ty, - selection_set, - do_remove_typename_from_union, - ); -}; - -let traverse_document_selections = (fn, schema: Schema.t, definitions) => { - Graphql_ast.( - definitions - |> List.map(def => { - switch (def) { - | Operation({item: op, span}) as parent => - let ty_name = - switch (op.o_type) { - | Query => schema.meta.sm_query_type - | Mutation => - Option.unsafe_unwrap( - ~reason="Cannot find mutation type", - schema.meta.sm_mutation_type, - ) - | Subscription => - Option.unsafe_unwrap( - ~reason="Cannot find subscription type", - schema.meta.sm_subscription_type, - ) - }; - let ty = Schema.lookup_type(schema, ty_name); - switch (ty) { - | None => parent - | Some(ty) => - Operation({ - span, - item: { - ...op, - o_selection_set: { - item: - fn( - Definition(parent), - schema, - ty, - op.o_selection_set.item, - ), - span: op.o_selection_set.span, - }, - }, - }) - }; - - | Fragment({item: f, span}) as parent => - let ty_name = f.fg_type_condition.item; - let ty = Schema.lookup_type(schema, ty_name); - switch (ty) { - | Some(ty) => - Fragment({ - item: { - ...f, - fg_selection_set: { - item: - fn( - Definition(parent), - schema, - ty, - f.fg_selection_set.item, - ), - span: f.fg_selection_set.span, - }, - }, - span, - }) - | None => parent - }; - } - }) - ); -}; - -let add_typename_to_selection_set = - traverse_document_selections(do_add_typename_to_selection_set); -let remove_typename_from_union = - traverse_document_selections(do_remove_typename_from_union); diff --git a/src/base/compat.re b/src/base/compat.re deleted file mode 100644 index 906c48b4..00000000 --- a/src/base/compat.re +++ /dev/null @@ -1,2 +0,0 @@ -let capitalize_ascii = String.capitalize_ascii; -let uncapitalize_ascii = String.uncapitalize_ascii; diff --git a/src/base/dirty_checker.re b/src/base/dirty_checker.re deleted file mode 100644 index af952201..00000000 --- a/src/base/dirty_checker.re +++ /dev/null @@ -1,76 +0,0 @@ -let log_head = "[dirty_checker]"; - -exception File_not_found; - -let hash = file => { - let () = Log.log("[calc hash of] " ++ file); - Digest.file(file); -}; - -let read_hash = src => { - let () = Log.log("[read hash from] " ++ src); - switch (open_in_bin(src)) { - | exception _ => None - | hash_file => - switch (Digest.input(hash_file)) { - | hash => - close_in(hash_file); - Some(hash); - | exception End_of_file => None - } - }; -}; - -let write_hash = (hash, dest) => { - let () = Log.log("[write hash to] " ++ dest); - switch (open_out_bin(dest)) { - | dest => - Digest.output(dest, hash); - close_out(dest); - | exception _ => () - }; - (); -}; - -let find_file = file => - if (Sys.file_exists(file)) { - let () = Log.log("[found] " ++ file); - Some(file); - } else { - let () = Log.log("[not found] " ++ file); - None; - }; - -type checker = { - src: string, - hash_path: string, - dirty_callback: string => unit, -}; - -exception Dirty_update_failure(string); - -let dirty_update = (hash, checker) => { - Log.log("[resource dirty!]"); - switch (checker.dirty_callback(checker.src)) { - | () => - write_hash(hash, checker.hash_path); - Log.log("[update ok]"); - | exception (Dirty_update_failure(msg)) => - Log.error_log("[update error] " ++ msg) - }; -}; - -let check = checker => - switch (find_file(checker.src)) { - | None => raise(File_not_found) - | Some(file) => - let new_hash = hash(file); - switch (read_hash(checker.hash_path)) { - | None => dirty_update(new_hash, checker) /* dirty */ - | Some(old_hash) => - switch (Digest.compare(old_hash, new_hash)) { - | 0 => Log.log("[resource unchanged]") - | _ => dirty_update(new_hash, checker) - } - }; - }; /* dirty */ diff --git a/src/base/dune b/src/base/dune deleted file mode 100644 index 4cf1fe8d..00000000 --- a/src/base/dune +++ /dev/null @@ -1,8 +0,0 @@ -(library - (name graphql_ppx_base) - (public_name graphql_ppx.base) - (libraries unix result yojson ppxlib) - (flags - (:standard -w -9)) - (preprocess - (pps ppxlib.metaquot))) diff --git a/src/base/extract_type_definitions.re b/src/base/extract_type_definitions.re deleted file mode 100644 index d282cb8e..00000000 --- a/src/base/extract_type_definitions.re +++ /dev/null @@ -1,444 +0,0 @@ -open Result_structure; -open Generator_utils; -open Schema; -open Source_pos; -type path = list(string); - -// extract the typeref -type extracted_type = - | Type(Schema.type_meta) - | TypeNotFound(string) - | Nullable(extracted_type) - | List(extracted_type); - -type object_field = - | Field({ - type_: Result_structure.t, - loc_key: Source_pos.ast_location, - loc: Source_pos.ast_location, - path, - arguments: Graphql_ast.arguments, - }) - | Fragment({ - module_name: string, - key: string, - loc_key: Source_pos.ast_location, - type_name: option(string), - }) -and type_def = - | Object({ - loc: Source_pos.ast_location, - variant_parent: bool, - path, - existing_type: option(string), - fields: list(object_field), - interface_fragments: - option((string, list((string, Result_structure.t)))), - }) - | VariantSelection({ - loc: Source_pos.ast_location, - path, - fields: list((Result_structure.name, Result_structure.t)), - }) - | VariantUnion({ - loc: Source_pos.ast_location, - path, - fields: list((Result_structure.name, Result_structure.t)), - omit_future_value: bool, - }) - | VariantInterface({ - name: string, - loc: Source_pos.ast_location, - path, - fragments: list((string, Result_structure.t)), - }) - | Enum({ - loc: Source_pos.ast_location, - path, - fields: list(string), - omit_future_value: bool, - }); - -type input_object_field = - | InputField({ - type_: extracted_type, - name: string, - loc: Source_pos.ast_location, - loc_type: option(Source_pos.ast_location), - }); - -type arg_type_def = - | NoVariables - | InputObject({ - name: option(string), - fields: list(input_object_field), - loc: Source_pos.ast_location, - is_recursive: bool, - }); - -let has_required_variables = (arg_types: list(arg_type_def)) => { - List.fold_left( - has_required => - fun - | NoVariables => has_required - | InputObject({name: Some(_)}) => has_required - | InputObject({name: None, fields}) => - List.fold_left( - has_required => - fun - | InputField({type_: Nullable(_)}) => has_required - | InputField({type_: _}) => true, - has_required, - fields, - ), - false, - arg_types, - ); -}; - -let generate_type_name = (~prefix="t") => - fun - | [] => prefix - | path => { - path - |> List.rev - |> List.fold_left((acc, item) => acc ++ "_" ++ item, prefix); - }; - -// function that generate types. It will output a nested list type descriptions -// later this result can be flattened and converted to an ast of combined type -// definitions -let rec extract = (~fragment_def=false, ~variant=false, ~path, ~raw) => - fun - | Res_nullable({inner}) => extract(~path, ~raw, inner) - | Res_array({inner}) => extract(~path, ~raw, inner) - | Res_object({loc, fields, type_name, interface_fragments}) as result_structure - | Res_record({loc, fields, type_name, interface_fragments}) as result_structure => - switch (result_structure, type_name, raw, fragment_def) { - | (_, Some(_type_name), false, false) => - create_children(path, raw, fields) - | (_, Some(_type_name), false, true) => - create_object( - ~path, - ~raw, - ~loc, - ~variant_parent=variant, - ~existing_type=type_name, - ~interface_fragments, - fields, - ) - | (Res_record(_), _, false, _) => - create_object( - ~path, - ~raw, - ~loc, - ~variant_parent=variant, - ~existing_type=None, - ~interface_fragments, - fields, - ) - | (_, _, _, _) => - create_object( - ~path, - ~raw, - ~loc, - ~variant_parent=variant, - ~existing_type=None, - ~interface_fragments, - fields, - ) - } - | Res_poly_variant_union({loc, fragments, omit_future_value}) => [ - VariantUnion({path, fields: fragments, loc, omit_future_value}), - ...extract_fragments( - fragments - |> List.map((({item: name}: Result_structure.name, t)) => - (name, t) - ), - path, - raw, - ), - ] - | Res_poly_variant_selection_set({loc, fragments}) => [ - VariantSelection({path, fields: fragments, loc}), - ...extract_fragments( - fragments - |> List.map((({item: name}: Result_structure.name, t)) => - (name, t) - ), - path, - raw, - ), - ] - | Res_poly_variant_interface({loc, name, fragments}) => [ - VariantInterface({name, path, fragments, loc}), - ...extract_fragments(fragments, [name, ...path], raw), - ] - | Res_custom_decoder({inner}) => extract(~path, ~raw, inner) - | Res_solo_fragment_spread(_) => [] - | Res_error(_) => [] - | Res_id(_) => [] - | Res_string(_) => [] - | Res_int(_) => [] - | Res_float(_) => [] - | Res_boolean(_) => [] - | Res_raw_scalar(_) => [] - | Res_poly_enum({loc, enum_meta, omit_future_value}) => [ - Enum({ - path, - fields: enum_meta.em_values |> List.map(({evm_name, _}) => evm_name), - loc, - omit_future_value, - }), - ] -and _fragment_names = f => f |> List.map(((name, _)) => name) -and extract_fragments = (fragments, path, raw) => { - fragments - |> List.fold_left( - (acc, (name, inner)) => - List.append( - extract(~variant=true, ~path=[name, ...path], ~raw, inner), - acc, - ), - [], - ); -} -and create_children = (path, raw, fields) => { - fields - |> List.fold_left( - acc => - fun - | Fr_named_field({name, type_}) => - List.append(extract(~path=[name, ...path], ~raw, type_), acc) - | Fr_fragment_spread(_) => acc, - [], - ); -} -and create_object = - ( - ~path, - ~raw, - ~loc, - ~variant_parent, - ~existing_type, - ~interface_fragments, - fields, - ) => { - let object_fields = - fields - |> List.map( - fun - | Fr_named_field({name, loc, loc_key, type_, arguments}) => { - Field({loc, loc_key, path: [name, ...path], type_, arguments}); - } - | Fr_fragment_spread({key, loc: loc_key, name, type_name}) => - Fragment({module_name: name, key, loc_key, type_name}), - ); - - [ - [ - Object({ - variant_parent, - loc, - path, - existing_type, - fields: object_fields, - interface_fragments, - }), - ], - create_children(path, raw, fields), - switch (interface_fragments) { - | Some((_, [])) => [] - | Some((name, fragments)) => [ - VariantInterface({name, loc, path, fragments}), - ...extract_fragments(fragments, [name, ...path], raw), - ] - | None => [] - }, - ] - |> List.concat; -}; - -let _raise_inconsistent_schema = (type_name, loc) => - raise_error_with_loc( - loc, - "Inconsistent schema, type named " ++ type_name ++ " cannot be found", - ); - -let fetch_type = (schema, type_ref) => { - let type_name = innermost_name(type_ref); - (type_name, lookup_type(schema, type_name)); -}; - -let rec convert_type_ref = schema => - fun - | Named(type_name) => - Nullable( - switch (lookup_type(schema, type_name)) { - | None => TypeNotFound(type_name) - | Some(type_) => Type(type_) - }, - ) - | NonNull(Named(type_name)) => - switch (lookup_type(schema, type_name)) { - | None => TypeNotFound(type_name) - | Some(type_) => Type(type_) - } - | List(type_ref) => Nullable(List(convert_type_ref(schema, type_ref))) - | NonNull(List(type_ref)) => List(convert_type_ref(schema, type_ref)) - // fold multiple non_nulls - | NonNull(NonNull(inner)) => convert_type_ref(schema, NonNull(inner)); - -let generate_input_field_types = - ( - _input_obj_name, - schema: Schema.t, - fields: - list( - ( - string, - Schema.type_ref, - Source_pos.ast_location, - option(Source_pos.ast_location), - ), - ), - ) => { - fields - |> List.fold_left( - (acc, (name, type_ref, loc, loc_type)) => { - [ - InputField({ - name, - type_: convert_type_ref(schema, type_ref), - loc, - loc_type, - }), - ...acc, - ] - }, - [], - ) - |> List.rev; -}; - -let rec get_inner_type = (type_: extracted_type) => { - switch (type_) { - | Type(_) => Some(type_) - | Nullable(inner) => get_inner_type(inner) - | List(inner) => get_inner_type(inner) - | TypeNotFound(_) => None - }; -}; - -let get_input_object_name = (InputField({type_, _})) => { - let type_ = get_inner_type(type_); - switch (type_) { - | Some(Type(InputObject({iom_name, _}))) => Some(iom_name) - | _ => None - }; -}; - -let get_input_object_names = (fields: list(input_object_field)) => { - fields - |> List.map(get_input_object_name) - |> List.fold_left( - acc => - fun - | Some(name) => [name, ...acc] - | _ => acc, - [], - ); -}; - -let rec extract_input_object = - ( - schema: Schema.t, - finalized_input_objects, - ( - name: option(string), - fields: list((string, Schema.type_ref, loc, option(loc))), - loc, - ), - ) => { - let gen_fields = generate_input_field_types(name, schema, fields); - - let is_recursive = - switch (name) { - | None => false - | Some(name) => - gen_fields |> get_input_object_names |> List.exists(f => f == name) - }; - - [ - InputObject({name, fields: gen_fields, loc, is_recursive}), - ...fields - |> List.fold_left( - (acc, (_name, type_ref, loc, _)) => { - let (_type_name, type_) = fetch_type(schema, type_ref); - switch (type_) { - | Some(Schema.InputObject({iom_name, iom_input_fields, _})) => - let finalized_input_objects_in_same_list = - acc - |> List.fold_left( - acc => - fun - | InputObject({name: Some(name)}) => [name, ...acc] - | _ => acc, - [], - ); - - let finalized_input_objects = - List.append( - finalized_input_objects, - finalized_input_objects_in_same_list, - ); - let already_created_earlier = - finalized_input_objects |> List.exists(f => f == iom_name); - - if (already_created_earlier) { - // we already generated this input object - acc; - } else { - let fields = - iom_input_fields - |> List.map(field => - (field.am_name, field.am_arg_type, loc, None) - ); - - let result = - extract_input_object( - schema, - [iom_name, ...finalized_input_objects], - (Some(iom_name), fields, loc), - ); - - List.append(acc, result); - }; - | _ => acc - }; - }, - [], - ), - ]; -}; - -let extract_args = (config, args): list(arg_type_def) => - switch (args) { - | Some({item, span}) => - ( - None, - item - |> List.map( - (({item: name, span}, {Graphql_ast.vd_type: variable_type, _})) => - ( - name, - Type_utils.to_schema_type_ref(variable_type.item), - config.map_loc(span), - Some(config.map_loc(variable_type.span)), - ) - ), - config.map_loc(span), - ) - |> extract_input_object(config.schema, []) - | _ => [NoVariables] - }; diff --git a/src/base/extract_type_definitions.rei b/src/base/extract_type_definitions.rei deleted file mode 100644 index 59a40f2a..00000000 --- a/src/base/extract_type_definitions.rei +++ /dev/null @@ -1,93 +0,0 @@ -type path = list(string); - -type extracted_type = - | Type(Schema.type_meta) - | TypeNotFound(string) - | Nullable(extracted_type) - | List(extracted_type); - -type object_field = - | Field({ - type_: Result_structure.t, - loc_key: Source_pos.ast_location, - loc: Source_pos.ast_location, - path, - arguments: Graphql_ast.arguments, - }) - | Fragment({ - module_name: string, - key: string, - loc_key: Source_pos.ast_location, - type_name: option(string), - }) -and type_def = - | Object({ - loc: Source_pos.ast_location, - variant_parent: bool, - path, - existing_type: option(string), - fields: list(object_field), - interface_fragments: - option((string, list((string, Result_structure.t)))), - }) - | VariantSelection({ - loc: Source_pos.ast_location, - path, - fields: list((Result_structure.name, Result_structure.t)), - }) - | VariantUnion({ - loc: Source_pos.ast_location, - path, - fields: list((Result_structure.name, Result_structure.t)), - omit_future_value: bool, - }) - | VariantInterface({ - name: string, - loc: Source_pos.ast_location, - path, - fragments: list((string, Result_structure.t)), - }) - | Enum({ - loc: Source_pos.ast_location, - path, - fields: list(string), - omit_future_value: bool, - }); - -type input_object_field = - | InputField({ - type_: extracted_type, - name: string, - loc: Source_pos.ast_location, - loc_type: option(Source_pos.ast_location), - }); - -type arg_type_def = - | NoVariables - | InputObject({ - name: option(string), - fields: list(input_object_field), - loc: Source_pos.ast_location, - is_recursive: bool, - }); - -let extract: - ( - ~fragment_def: bool=?, - ~variant: bool=?, - ~path: path, - ~raw: bool, - Result_structure.t - ) => - list(type_def); -let generate_type_name: (~prefix: string=?, path) => string; -let extract_args: - ( - Generator_utils.output_config, - option(Source_pos.spanning(Graphql_ast.variable_definitions)) - ) => - list(arg_type_def); - -let get_inner_type: extracted_type => option(extracted_type); - -let has_required_variables: list(arg_type_def) => bool; diff --git a/src/base/generator_utils.re b/src/base/generator_utils.re deleted file mode 100644 index 4e349ce3..00000000 --- a/src/base/generator_utils.re +++ /dev/null @@ -1,45 +0,0 @@ -type error_marker = {mutable has_error: bool}; - -let raise_error_with_loc = Ppx_config.raise_error_with_loc; - -let raise_error = (map_loc, span, message) => - raise_error_with_loc(map_loc(span), message); - -let some_or = (o, d) => - switch (o) { - | Some(v) => v - | None => d - }; - -let capitalize_ascii = Compat.capitalize_ascii; -let uncapitalize_ascii = Compat.uncapitalize_ascii; - -type output_config = { - map_loc: - ((Source_pos.source_position, Source_pos.source_position)) => - Source_pos.ast_location, - delimiter: option(string), - schema: Schema.t, - full_document: Graphql_ast.document, - template_tag: (option(string), option(string), option(string)), - template_tag_return_type: option(string), - template_tag_is_function: option(bool), - inline: bool, - future_added_value: bool, - extend: option(string), - fragment_in_query: Ppx_config.fragment_in_query, - native: bool, -}; - -let filter_map = (f, l) => { - let rec loop = acc => - fun - | [] => List.rev(acc) - | [head, ...tail] => - switch (f(head)) { - | None => loop(acc, tail) - | Some(v) => loop([v, ...acc], tail) - }; - - loop([], l); -}; diff --git a/src/base/graphql_ast.re b/src/base/graphql_ast.re deleted file mode 100644 index 7ac391b7..00000000 --- a/src/base/graphql_ast.re +++ /dev/null @@ -1,89 +0,0 @@ -open Source_pos; - -type type_ref = - | Tr_named(spanning(string)) - | Tr_list(spanning(type_ref)) - | Tr_non_null_named(spanning(string)) - | Tr_non_null_list(spanning(type_ref)); - -type input_value = - | Iv_null - | Iv_int(int) - | Iv_float(float) - | Iv_string(string) - | Iv_boolean(bool) - | Iv_enum(string) - | Iv_variable(string) - | Iv_list(list(spanning(input_value))) - | Iv_object(list((spanning(string), spanning(input_value)))); - -type variable_definition = { - vd_type: spanning(type_ref), - vd_default_value: option(spanning(input_value)), -}; - -type variable_definitions = list((spanning(string), variable_definition)); - -type argument = (spanning(string), spanning(input_value)); -type arguments = list(argument); - -type directive = { - d_name: spanning(string), - d_arguments: option(spanning(arguments)), -}; - -type fragment_spread = { - fs_name: spanning(string), - fs_directives: list(spanning(directive)), -}; - -type field = { - fd_alias: option(spanning(string)), - fd_name: spanning(string), - fd_arguments: option(spanning(arguments)), - fd_directives: list(spanning(directive)), - fd_selection_set: option(spanning(list(selection))), -} -and inline_fragment = { - if_type_condition: option(spanning(string)), - if_directives: list(spanning(directive)), - if_selection_set: spanning(list(selection)), -} -and selection = - | Field(spanning(field)) - | FragmentSpread(spanning(fragment_spread)) - | InlineFragment(spanning(inline_fragment)); - -type operation_type = - | Query - | Mutation - | Subscription; - -type operation = { - o_type: operation_type, - o_name: option(spanning(string)), - o_variable_definitions: option(spanning(variable_definitions)), - o_directives: list(spanning(directive)), - o_selection_set: spanning(list(selection)), -}; - -type fragment = { - fg_variable_definitions: option(spanning(variable_definitions)), - fg_name: spanning(string), - fg_type_condition: spanning(string), - fg_directives: list(spanning(directive)), - fg_selection_set: spanning(list(selection)), -}; - -type definition = - | Operation(spanning(operation)) - | Fragment(spanning(fragment)); - -type document = list(definition); - -let rec innermost_name = - fun - | Tr_named({item, _}) - | Tr_non_null_named({item, _}) => item - | Tr_list({item, _}) - | Tr_non_null_list({item, _}) => innermost_name(item); diff --git a/src/base/graphql_lexer.re b/src/base/graphql_lexer.re deleted file mode 100644 index 36f64ffc..00000000 --- a/src/base/graphql_lexer.re +++ /dev/null @@ -1,471 +0,0 @@ -open Result; - -open Source_pos; - -type lexer = { - source: string, - length: int, - mutable position: source_position, - mutable has_reached_eof: bool, -}; - -type token = - | Name(string) - | Int(int) - | Float(float) - | String(string) - | Exclamation_mark - | Dollar - | Paren_open - | Paren_close - | Bracket_open - | Bracket_close - | Curly_open - | Curly_close - | Ellipsis - | Dot - | Colon - | Equals - | At - | Pipe - | Ampersand - | End_of_file; - -let string_of_token = t => - switch (t) { - | Name(s) => s - | Int(i) => string_of_int(i) - | Float(f) => Printf.sprintf("%.16g", f) - | String(s) => "\"" ++ s ++ "\"" - | Exclamation_mark => "!" - | Dollar => "$" - | Paren_open => "(" - | Paren_close => ")" - | Bracket_open => "[" - | Bracket_close => "]" - | Curly_open => "{" - | Curly_close => "}" - | Ellipsis => "..." - | Dot => "." - | Colon => ":" - | Equals => "=" - | At => "@" - | Pipe => "|" - | Ampersand => "&" - | End_of_file => "[EOF]" - }; - -type lexerError = - | Unknown_character(char) - | Unexpected_character(char) - | Unterminated_string - | Unknown_character_in_string(char) - | Unknown_escape_sequence(string) - | Unexpected_end_of_file - | Invalid_number; - -let make = source => { - source, - length: String.length(source), - position: origin, - has_reached_eof: false, -}; - -let peek_char = lexer => - if (lexer.position.index >= lexer.length) { - None; - } else { - Some((lexer.position.index, lexer.source.[lexer.position.index])); - }; - -let peek_char_only = lexer => lexer |> peek_char |> Option.map(snd); - -let next_char = lexer => { - let next = peek_char(lexer); - let () = - switch (peek_char_only(lexer)) { - | Some('\n') => lexer.position = advance_line(lexer.position) - | Some(_) => lexer.position = advance_col(lexer.position) - | _ => () - }; - next; -}; - -exception Internal_lexer_error; - -let emit_single_char = (lexer, token) => { - let start_pos = lexer.position; - let _ = - switch (next_char(lexer)) { - | Some(next) => next - | None => raise(Internal_lexer_error) - }; - - single_width(start_pos, token); -}; - -let rec scan_over_whitespace = lexer => - switch (peek_char_only(lexer)) { - | Some('\t') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some(' ') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some('\n') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some('\r') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some(',') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some('#') => - let _ = next_char(lexer); - scan_to_end_of_line(lexer); - | _ => () - } -and scan_to_end_of_line = lexer => - switch (peek_char_only(lexer)) { - | Some('\n') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some('\r') => - let _ = next_char(lexer); - scan_over_whitespace(lexer); - | Some(_) => - let _ = next_char(lexer); - scan_to_end_of_line(lexer); - | None => () - }; - -let is_name_start = c => - c == '_' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'; - -let is_digit = c => c >= '0' && c <= '9'; - -let is_name_cont = c => is_name_start(c) || is_digit(c); - -let is_number_start = c => is_digit(c) || c == '-'; - -let scan_name = lexer => { - let start_pos = lexer.position; - switch (next_char(lexer)) { - | None => Error(zero_width(lexer.position, Unexpected_end_of_file)) - | Some((start_idx, _)) => - let rec scan_loop = end_idx => - switch (peek_char(lexer)) { - | Some((idx, ch)) when is_name_cont(ch) => - let _ = next_char(lexer); - scan_loop(idx); - | Some(_) => end_idx - | None => end_idx - }; - - let endIdx = scan_loop(start_idx); - Ok( - start_end( - start_pos, - lexer.position, - Name(String.sub(lexer.source, start_idx, endIdx - start_idx + 1)), - ), - ); - }; -}; - -let scan_ellipsis_or_dot = lexer => { - let start_pos = lexer.position; - let rec scan_loop = i => - if (i == 0) { - Ok(start_end(start_pos, lexer.position, Ellipsis)); - } else { - switch (peek_char(lexer)) { - | Some((_, '.')) => - let _ = next_char(lexer); - scan_loop(i - 1); - | Some((_, _)) when i == 2 => - Ok(start_end(start_pos, lexer.position, Dot)) - | Some((_, ch)) => - let _ = next_char(lexer); - Error(single_width(lexer.position, Unexpected_character(ch))); - | None => Error(zero_width(lexer.position, Unexpected_end_of_file)) - }; - }; - scan_loop(3); -}; - -let scan_digits = lexer => { - let start_pos = lexer.position; - switch (peek_char(lexer)) { - | None => Error(zero_width(start_pos, Unexpected_end_of_file)) - | Some((start_idx, _)) => - let rec scan_loop = end_idx => - switch (peek_char(lexer)) { - | Some((idx, ch)) when is_digit(ch) => - let _ = next_char(lexer); - scan_loop(idx); - | Some(_) - | None => end_idx - }; - - let end_idx = scan_loop(start_idx); - try( - Ok( - int_of_string( - String.sub(lexer.source, start_idx, end_idx - start_idx + 1), - ), - ) - ) { - | Failure(_) => - Error(start_end(start_pos, lexer.position, Invalid_number)) - }; - }; -}; - -let scan_integer_part = lexer => { - let is_negative = - switch (peek_char_only(lexer)) { - | Some('-') => - let _ = next_char(lexer); - Ok(true); - | Some(_) => Ok(false) - | None => Error(zero_width(lexer.position, Unexpected_end_of_file)) - }; - - switch (is_negative) { - | Error(e) => Error(e) - | Ok(neg) => - switch (scan_digits(lexer)) { - | Error(e) => Error(e) - | Ok(num) => - Ok( - if (neg) { - (-1) * num; - } else { - num; - }, - ) - } - }; -}; - -let scan_number = lexer => { - let start_pos = lexer.position; - let build_number = (int_part, frac_part, exp_part) => { - let mantissa = - frac_part - |> Option.map(float_of_int) - |> Option.map(frac => - if (frac > 0.0) { - frac /. 10.0 ** (frac |> log10 |> floor); - } else { - 0.0; - } - ) - |> Option.map(m => - if (int_part < 0) { - (-1.0) *. m; - } else { - m; - } - ); - - let exp = - exp_part |> Option.map(float_of_int) |> Option.map(e => 10.0 ** e); - - let num_token = - switch (mantissa, exp) { - | (None, None) => Int(int_part) - | (None, Some(exp)) => Float(float_of_int(int_part) *. exp) - | (Some(mantissa), None) => Float(float_of_int(int_part) +. mantissa) - | (Some(mantissa), Some(exp)) => - Float((float_of_int(int_part) +. mantissa) ** exp) - }; - - Ok(start_end(start_pos, lexer.position, num_token)); - }; - - let scan_exp_part = (int_part, frac_part) => - switch (peek_char_only(lexer)) { - | Some('e') - | Some('E') => - let _ = next_char(lexer); - switch (scan_integer_part(lexer)) { - | Error(e) => Error(e) - | Ok(exp_part) => build_number(int_part, frac_part, Some(exp_part)) - }; - | None - | Some(_) => build_number(int_part, frac_part, None) - }; - - switch (scan_integer_part(lexer)) { - | Error(e) => Error(e) - | Ok(int_part) => - switch (peek_char_only(lexer)) { - | Some('.') => - let _ = next_char(lexer); - switch (scan_digits(lexer)) { - | Error(e) => Error(e) - | Ok(digits) => scan_exp_part(int_part, Some(digits)) - }; - | Some(_) - | None => scan_exp_part(int_part, None) - } - }; -}; - -let scan_string = (~start_pos, lexer) => { - switch (peek_char(lexer)) { - | None => Error(zero_width(start_pos, Unexpected_end_of_file)) - | Some(_) => - let rec scan_loop = acc => - switch (peek_char_only(lexer)) { - | None => Error(zero_width(lexer.position, Unterminated_string)) - | Some('\n') - | Some('\r') => - Error(single_width(lexer.position, Unterminated_string)) - | Some('"') => - let _ = next_char(lexer); - Ok(start_end(start_pos, lexer.position, String(acc))); - | Some('\\') => - let _ = next_char(lexer); - switch (peek_char_only(lexer)) { - | None => Error(zero_width(lexer.position, Unterminated_string)) - | Some('"') => - let _ = next_char(lexer); - // string concat here maybe not optimal, but strings do not occur - // super frequently - and are short - and a Buffer also has some overhead - acc ++ "\"" |> scan_loop; - | Some('\\') => - let _ = next_char(lexer); - acc ++ "\\" |> scan_loop; - | Some('/') => - let _ = next_char(lexer); - acc ++ "/" |> scan_loop; - | Some('b') => - let _ = next_char(lexer); - acc ++ "\n" |> scan_loop; - | Some('f') => - let _ = next_char(lexer); - acc ++ "\014" |> scan_loop; - | Some('n') => - let _ = next_char(lexer); - acc ++ "\n" |> scan_loop; - | Some('r') => - let _ = next_char(lexer); - acc ++ "\r" |> scan_loop; - | Some('t') => - let _ = next_char(lexer); - acc ++ "\t" |> scan_loop; - | Some('u') => - Error( - single_width(lexer.position, Unknown_escape_sequence("\\uXXXX")), - ) - | Some(ch) => - Error( - single_width( - lexer.position, - Unknown_escape_sequence("\\" ++ String.make(1, ch)), - ), - ) - }; - | Some(ch) => - let _ = next_char(lexer); - acc ++ String.make(1, ch) |> scan_loop; - }; - - scan_loop(""); - }; -}; -let scan_block_string = (~start_pos, lexer) => { - let rec scan_loop = acc => - switch (peek_char_only(lexer)) { - | None => Error(zero_width(lexer.position, Unterminated_string)) - | Some('"') => - let _ = next_char(lexer); - switch (peek_char_only(lexer)) { - | Some('"') => - let _ = next_char(lexer); - switch (peek_char_only(lexer)) { - | Some('"') => - let _ = next_char(lexer); - // TODO: format block string according to: - // https://spec.graphql.org/June2018/#BlockStringValue() - // acc = blockStringValue(acc) - Ok(start_end(start_pos, lexer.position, String(acc))); - | Some(_) => acc ++ "\"\"" |> scan_loop - | None => Error(zero_width(lexer.position, Unterminated_string)) - }; - | Some(_) => acc ++ "\"" |> scan_loop - | None => Error(zero_width(lexer.position, Unterminated_string)) - }; - | Some(ch) => - let _ = next_char(lexer); - acc ++ String.make(1, ch) |> scan_loop; - }; - - scan_loop(""); -}; - -let scan_single_token = lexer => - if (lexer.has_reached_eof) { - None; - } else { - let () = scan_over_whitespace(lexer); - Some( - switch (peek_char_only(lexer)) { - | Some('!') => Ok(emit_single_char(lexer, Exclamation_mark)) - | Some('$') => Ok(emit_single_char(lexer, Dollar)) - | Some('(') => Ok(emit_single_char(lexer, Paren_open)) - | Some(')') => Ok(emit_single_char(lexer, Paren_close)) - | Some('[') => Ok(emit_single_char(lexer, Bracket_open)) - | Some(']') => Ok(emit_single_char(lexer, Bracket_close)) - | Some('{') => Ok(emit_single_char(lexer, Curly_open)) - | Some('}') => Ok(emit_single_char(lexer, Curly_close)) - | Some(':') => Ok(emit_single_char(lexer, Colon)) - | Some('=') => Ok(emit_single_char(lexer, Equals)) - | Some('@') => Ok(emit_single_char(lexer, At)) - | Some('|') => Ok(emit_single_char(lexer, Pipe)) - | Some('&') => Ok(emit_single_char(lexer, Ampersand)) - | Some('.') => scan_ellipsis_or_dot(lexer) - | Some('"') => - let start_pos = lexer.position; - let _ = next_char(lexer); - switch (peek_char_only(lexer)) { - | Some('"') => - let _ = next_char(lexer); - switch (peek_char_only(lexer)) { - | Some('"') => - let _ = next_char(lexer); - scan_block_string(~start_pos, lexer); - | None - | Some(_) => Ok(start_end(start_pos, lexer.position, String(""))) - }; - | None - | Some(_) => scan_string(~start_pos, lexer) - }; - | Some(ch) when is_number_start(ch) => scan_number(lexer) - | Some(ch) when is_name_start(ch) => scan_name(lexer) - | Some(ch) => - Error(single_width(lexer.position, Unknown_character(ch))) - | None => - let () = lexer.has_reached_eof = true; - Ok(zero_width(lexer.position, End_of_file)); - }, - ); - }; - -let consume = lexer => { - let rec consumer = acc => - switch (scan_single_token(lexer)) { - | Some(Ok(t)) => consumer([t, ...acc]) - | Some(Error(e)) => Error(e) - | None => Ok(acc) - }; - - switch (consumer([])) { - | Ok(l) => Ok(List.rev(l)) - | Error(e) => Error(e) - }; -}; diff --git a/src/base/graphql_parser.re b/src/base/graphql_parser.re deleted file mode 100644 index c109430a..00000000 --- a/src/base/graphql_parser.re +++ /dev/null @@ -1,108 +0,0 @@ -open Result; -open Source_pos; - -type parser = {mutable tokens: list(spanning(Graphql_lexer.token))}; - -type parseError = - | Unexpected_token(Graphql_lexer.token) - | Unexpected_end_of_file - | Lexer_error(Graphql_lexer.lexerError); - -let make = tokens => {tokens: tokens}; - -let peek = parser => List.hd(parser.tokens); - -exception Internal_parse_error; - -let next = parser => - switch (parser.tokens) { - | [x] => Error(replace(x, Unexpected_end_of_file)) - | [x, ..._] => - let () = parser.tokens = List.tl(parser.tokens); - Ok(x); - | _ => raise(Internal_parse_error) - }; - -let expect = (parser, token) => - switch (next(parser)) { - | Ok(span) when span.item == token => Ok(span) - | Ok(span) => Error(replace(span, Unexpected_token(span.item))) - | x => x - }; - -let expect_name = parser => - switch (next(parser)) { - | Ok({item: Graphql_lexer.Name(name), _} as span) => - Ok(replace(span, name)) - | Ok({item: Graphql_lexer.End_of_file, _} as span) => - Error(replace(span, Unexpected_end_of_file)) - | Ok(span) => Error(map(t => Unexpected_token(t), span)) - | Error(e) => Error(e) - }; - -let expect_dotted_name = parser => { - let rec loop = (start_pos, _, acc) => - switch (next(parser)) { - | Ok({item: Graphql_lexer.Name(name), span: (_, end_pos)}) => - let acc = acc ++ name; - switch (peek(parser)) { - | {item: Graphql_lexer.Dot, span: (_, end_pos)} => - let _ = next(parser); - loop(start_pos, end_pos, acc ++ "."); - | _ => Ok(start_end(start_pos, end_pos, acc)) - }; - | Ok({item: Graphql_lexer.End_of_file, _} as span) => - Error(replace(span, Unexpected_end_of_file)) - | Ok(span) => Error(map(t => Unexpected_token(t), span)) - | Error(e) => Error(e) - }; - - let {span: (start_pos, end_pos), _} = peek(parser); - loop(start_pos, end_pos, ""); -}; - -let skip = (parser, token) => - switch (peek(parser)) { - | span when span.item == token => - Result_ext.map(x => Some(x), next(parser)) - | span when span.item == Graphql_lexer.End_of_file => - Error(zero_width(start_pos(span), Unexpected_end_of_file)) - | _ => Ok(None) - }; - -let delimited_list = (parser, opening, sub_parser, closing) => - switch (expect(parser, opening)) { - | Error(e) => Error(e) - | Ok({span: (start_pos, _), _}) => - let rec scanner = acc => - switch (skip(parser, closing)) { - | Ok(Some({span: (_, end_pos), _})) => - Ok(start_end(start_pos, end_pos, List.rev(acc))) - | _ => - switch (sub_parser(parser)) { - | Ok(span) => scanner([span, ...acc]) - | Error(e) => Error(e) - } - }; - - scanner([]); - }; - -let delimited_nonempty_list = (parser, opening, sub_parser, closing) => - switch (expect(parser, opening)) { - | Error(e) => Error(e) - | Ok({span: (start_pos, _), _}) => - let rec scanner = acc => - switch (sub_parser(parser)) { - | Error(e) => Error(e) - | Ok(span) => - switch (skip(parser, closing)) { - | Error(e) => Error(e) - | Ok(Some({span: (_, end_pos), _})) => - Ok(start_end(start_pos, end_pos, List.rev([span, ...acc]))) - | Ok(None) => scanner([span, ...acc]) - } - }; - - scanner([]); - }; diff --git a/src/base/graphql_parser_directives.re b/src/base/graphql_parser_directives.re deleted file mode 100644 index 6646e2e5..00000000 --- a/src/base/graphql_parser_directives.re +++ /dev/null @@ -1,81 +0,0 @@ -open Graphql_ast; -open Graphql_parser; -open Source_pos; - -// This is shared between document and schema parsing. -// This should be rewritten for schema, but now it's only really -// used for the @deprecated directive on types. -// In the latest spec more directives are possible, so it needs separate -// AST as part of Schema.t - -let parse_argument = parser => - Result_ext.( - expect_name(parser) - |> flat_map(name => - expect(parser, Graphql_lexer.Colon) |> replace(name) - ) - |> flat_map(name => - Graphql_parser_value.parse_value_literal(false, parser) - |> map(value => (name, value)) - ) - ); - -let parse_arguments = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.Paren_open, _} => - delimited_nonempty_list( - parser, - Graphql_lexer.Paren_open, - parse_argument, - Graphql_lexer.Paren_close, - ) - |> Result_ext.map(args => Some(args)) - | _ => Ok(None) - }; - -let parse_directive = parser => - Result_ext.( - expect(parser, Graphql_lexer.At) - |> flat_map(({span: (at_start, _), _}) => - expect_name(parser) |> map(make_t2(at_start)) - ) - |> flat_map(((at_start, name)) => - parse_arguments(parser) |> map(make_t3(at_start, name)) - ) - |> map(((at_start, name, arguments)) => - switch (arguments) { - | None => - start_end( - at_start, - end_pos(name), - {d_name: name, d_arguments: None}, - ) - | Some(arguments) => - start_end( - at_start, - switch (arguments.item) { - | [hd, ..._] => hd |> snd |> end_pos - | [] => name |> end_pos - }, - {d_name: name, d_arguments: Some(arguments)}, - ) - } - ) - ); - -let parse_directives = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.At, _} => - let rec scanner = acc => - switch (peek(parser)) { - | {item: Graphql_lexer.At, _} => - switch (parse_directive(parser)) { - | Error(e) => Error(e) - | Ok(directive) => scanner([directive, ...acc]) - } - | _ => Ok(List.rev(acc)) - }; - - scanner([]); - | _ => Ok([]) - }; diff --git a/src/base/graphql_parser_document.re b/src/base/graphql_parser_document.re deleted file mode 100644 index 86910935..00000000 --- a/src/base/graphql_parser_document.re +++ /dev/null @@ -1,516 +0,0 @@ -open Result; -open Graphql_ast; -open Graphql_parser; -open Source_pos; -open Graphql_parser_directives; - -let last = l => - switch (List.length(l)) { - | 0 => None - | n => Some(List.nth(l, n - 1)) - }; - -let selection_end_pos = s => - switch (s) { - | Field({span: (_, end_pos), _}) => end_pos - | FragmentSpread({span: (_, end_pos), _}) => end_pos - | InlineFragment({span: (_, end_pos), _}) => end_pos - }; - -let rec parse_type = parser => - Result_ext.( - skip(parser, Graphql_lexer.Bracket_open) - |> flat_map( - fun - | Some({span: (start_pos, _), _}) => - parse_type(parser) - |> flat_map(inner_type => - expect(parser, Graphql_lexer.Bracket_close) - |> map(make_t2(inner_type)) - ) - |> flat_map( - ((inner_type, {span: (_, _ as bracket_end_pos), _})) => - switch (peek(parser)) { - | {item: Graphql_lexer.Exclamation_mark, span: (_, end_pos)} => - next(parser) - |> replace( - start_end( - start_pos, - end_pos, - Tr_non_null_list(inner_type), - ), - ) - - | _ => - Ok( - start_end( - start_pos, - bracket_end_pos, - Tr_list(inner_type), - ), - ) - } - ) - - | None => - expect_name(parser) - |> flat_map(name => - switch (peek(parser)) { - | {item: Graphql_lexer.Exclamation_mark, span: (_, end_pos)} => - next(parser) - |> replace( - start_end( - start_pos(name), - end_pos, - Tr_non_null_named(name), - ), - ) - - | _ => Ok(Source_pos.replace(name, Tr_named(name))) - } - ), - ) - ); - -let parse_variable_definition = parser => - Result_ext.( - expect(parser, Graphql_lexer.Dollar) - |> flat_map(({span: (start_pos, _), _}) => - expect_name(parser) |> map(make_t2(start_pos)) - ) - |> flat_map(v => expect(parser, Graphql_lexer.Colon) |> replace(v)) - |> flat_map(((start_pos, name)) => - parse_type(parser) |> map(make_t3(start_pos, name)) - ) - |> flat_map(((start_pos, name, ty)) => - skip(parser, Graphql_lexer.Equals) - |> map(make_t4(start_pos, name, ty)) - ) - |> flat_map(((start_pos, name, ty, equal_sign)) => - switch (equal_sign) { - | None => - Ok( - start_end( - start_pos, - end_pos(ty), - ( - start_end(start_pos, end_pos(name), name.item), - {vd_type: ty, vd_default_value: None}, - ), - ), - ) - | Some(_) => - Graphql_parser_value.parse_value_literal(true, parser) - |> map(default_value => - start_end( - start_pos, - end_pos(default_value), - ( - start_end(start_pos, end_pos(name), name.item), - {vd_type: ty, vd_default_value: Some(default_value)}, - ), - ) - ) - } - ) - ); - -let parse_variable_definitions = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.Paren_open, _} => - delimited_nonempty_list( - parser, - Graphql_lexer.Paren_open, - parse_variable_definition, - Graphql_lexer.Paren_close, - ) - |> Result_ext.map(span => - Some(map(items => List.map(s => s.item, items), span)) - ) - | _ => Ok(None) - }; - -let rec parse_selection_set = parser => - delimited_nonempty_list( - parser, - Graphql_lexer.Curly_open, - parse_selection, - Graphql_lexer.Curly_close, - ) -and parse_optional_selection_set = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_open, _} => - Result_ext.map(x => Some(x), parse_selection_set(parser)) - | _ => Ok(None) - } -and parse_field = parser => { - open Result_ext; - let parse_rest = (alias, name) => - parse_arguments(parser) - |> flat_map(arguments => - parse_directives(parser) |> map(make_t2(arguments)) - ) - |> flat_map(((arguments, directives)) => - parse_optional_selection_set(parser) - |> map(make_t3(arguments, directives)) - ) - |> map(((arguments, directives, selection_set)) => - start_end( - switch (alias) { - | Some({span: (start_pos, _), _}) => start_pos - | None => name |> start_pos - }, - switch (selection_set) { - | Some({span: (_, end_pos), _}) => end_pos - | None => - switch (last(directives)) { - | Some({span: (_, end_pos), _}) => end_pos - | None => - switch (arguments) { - | Some({span: (_, end_pos), _}) => end_pos - | None => name |> end_pos - } - } - }, - { - fd_alias: alias, - fd_name: name, - fd_arguments: arguments, - fd_directives: directives, - fd_selection_set: selection_set, - }, - ) - ); - - expect_name(parser) - |> flat_map(alias_or_name => - skip(parser, Graphql_lexer.Colon) |> map(make_t2(alias_or_name)) - ) - |> flat_map(((alias_or_name, colon)) => - switch (colon) { - | None => parse_rest(None, alias_or_name) - | Some(_) => - expect_name(parser) - |> flat_map(name => parse_rest(Some(alias_or_name), name)) - } - ); -} -and parse_fragment = parser => - Result_ext.( - switch (expect(parser, Graphql_lexer.Ellipsis)) { - | Error(e) => Error(e) - | Ok({span: (start_pos, _), _}) => - switch (peek(parser)) { - | {item: Graphql_lexer.Name("on"), _} => - next(parser) - |> flat_map(_ => expect_name(parser)) - |> flat_map(name => parse_directives(parser) |> map(make_t2(name))) - |> flat_map(((name, directives)) => - parse_selection_set(parser) |> map(make_t3(name, directives)) - ) - |> map(((name, directives, selection_set)) => - InlineFragment( - start_end( - start_pos, - end_pos(selection_set), - { - if_type_condition: Some(name), - if_directives: directives, - if_selection_set: selection_set, - }, - ), - ) - ) - - | {item: Graphql_lexer.Curly_open, _} => - parse_selection_set(parser) - |> map(selection_set => - InlineFragment( - start_end( - start_pos, - end_pos(selection_set), - { - if_type_condition: None, - if_directives: [], - if_selection_set: selection_set, - }, - ), - ) - ) - - | {item: Graphql_lexer.Name(_), _} => - expect_dotted_name(parser) - |> flat_map(name => parse_directives(parser) |> map(make_t2(name))) - |> map(((name, directives)) => - FragmentSpread( - start_end( - start_pos, - switch (last(directives)) { - | Some(s) => end_pos(s) - | None => end_pos(name) - }, - {fs_name: name, fs_directives: directives}, - ), - ) - ) - - | {item: Graphql_lexer.At, _} => - parse_directives(parser) - |> flat_map(directives => - parse_selection_set(parser) |> map(make_t2(directives)) - ) - |> map(((directives, selection_set)) => - InlineFragment( - start_end( - start_pos, - end_pos(selection_set), - { - if_type_condition: None, - if_directives: directives, - if_selection_set: selection_set, - }, - ), - ) - ) - - | _ => - switch (next(parser)) { - | Error(e) => Error(e) - | Ok(span) => Error(Source_pos.map(t => Unexpected_token(t), span)) - } - } - } - ) -and parse_selection = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.Ellipsis, _} => parse_fragment(parser) - | _ => - Result_ext.map( - (span: spanning(field)) => Field(span), - parse_field(parser), - ) - }; - -let parse_operation_type = parser => - switch (next(parser)) { - | Error(e) => Error(e) - | Ok({item: Graphql_lexer.Name("query"), _} as span) => - Ok(replace(span, Query)) - | Ok({item: Graphql_lexer.Name("mutation"), _} as span) => - Ok(replace(span, Mutation)) - | Ok({item: Graphql_lexer.Name("subscription"), _} as span) => - Ok(replace(span, Subscription)) - | Ok(span) => Error(map(t => Unexpected_token(t), span)) - }; - -let parse_operation_definition = parser => - Result_ext.( - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_open, _} => - switch (parse_selection_set(parser)) { - | Error(e) => Error(e) - | Ok(span) => - Ok( - Source_pos.replace( - span, - { - o_type: Query, - o_name: None, - o_variable_definitions: None, - o_directives: [], - o_selection_set: span, - }, - ), - ) - } - | {span: (start_pos, _), _} => - let parse_rest = (operation_type, name) => - parse_variable_definitions(parser) - |> flat_map(vdefs => - parse_directives(parser) |> map(make_t2(vdefs)) - ) - |> flat_map(((vdefs, directives)) => - parse_selection_set(parser) |> map(make_t3(vdefs, directives)) - ) - |> map(((vdefs, directives, selection_set)) => - start_end( - start_pos, - end_pos(selection_set), - { - o_type: operation_type, - o_name: name, - o_variable_definitions: vdefs, - o_directives: directives, - o_selection_set: selection_set, - }, - ) - ); - - switch (parse_operation_type(parser)) { - | Error(e) => Error(e) - | Ok(operation_type) => - switch (peek(parser)) { - | {item: Graphql_lexer.Name(_), _} => - switch (expect_name(parser)) { - | Error(e) => Error(e) - | Ok(name_span) => - parse_rest(operation_type.item, Some(name_span)) - } - | _ => parse_rest(operation_type.item, None) - } - }; - } - ); - -// we need to parse the argumentTypes directive, and produce a -// type from a string. -let parse_string_to_type = str => { - switch (str |> Graphql_lexer.make |> Graphql_lexer.consume) { - | Ok(tokens) => - switch (parse_type(Graphql_parser.make(tokens))) { - | Ok(type_) => Some(type_.item) - | Error(_) => None - } - - | Error(_) => None - }; -}; - -let get_fragment_argument_definitions = - (directives: list(Source_pos.spanning(Graphql_ast.directive))) => { - switch ( - directives |> List.find(d => {d.item.d_name.item == "argumentDefinitions"}) - ) { - | {item: {d_arguments: Some(arguments), _}, span} => - let arguments = - arguments.item - |> List.fold_left( - acc => - fun - | ( - {item: key, span}, - {item: Iv_object(values), span: type_span}, - ) => { - let type_ = - values - |> List.fold_left( - acc => - fun - | ( - {item: "type", _}, - {item: Iv_string(type_), _}, - ) => - Some(type_) - | _ => acc, - None, - ); - switch (type_) { - | Some(type_) => - switch (parse_string_to_type(type_)) { - | Some(type_) => [ - ( - {item: key, span}, - { - vd_type: { - item: type_, - span: type_span, - }, - vd_default_value: None, - }, - ), - ...acc, - ] - | None => acc - } - | _ => acc - }; - } - | _ => acc, - [], - ); - switch (arguments) { - | [] => None - | arguments => Some({span, item: arguments}) - }; - | _ => None - | exception Not_found => None - }; -}; - -let parse_fragment_definition = parser => - Result_ext.( - expect(parser, Graphql_lexer.Name("fragment")) - |> flat_map(({span: (start_pos, _), _}) => - expect_name(parser) |> map(make_t2(start_pos)) - ) - |> flat_map(((start_pos, name)) => - switch (name) { - | {item: "on", _} as span => - Error( - Source_pos.replace( - span, - Unexpected_token(Graphql_lexer.Name("on")), - ), - ) - | _ => Ok((start_pos, name)) - } - ) - |> flat_map(v => - expect(parser, Graphql_lexer.Name("on")) |> replace(v) - ) - |> flat_map(((start_pos, name)) => - expect_name(parser) |> map(make_t3(start_pos, name)) - ) - |> flat_map(((start_pos, name, type_cond)) => - parse_directives(parser) - |> map(make_t4(start_pos, name, type_cond)) - ) - |> flat_map(((start_pos, name, type_cond, directives)) => - parse_selection_set(parser) - |> map(make_t5(start_pos, name, type_cond, directives)) - ) - |> map(((start_pos, name, type_cond, directives, selection_set)) => - start_end( - start_pos, - end_pos(selection_set), - { - fg_name: name, - fg_variable_definitions: - get_fragment_argument_definitions(directives), - fg_type_condition: type_cond, - fg_directives: directives, - fg_selection_set: selection_set, - }, - ) - ) - ); - -let parse_definition = parser => - Result_ext.( - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_open, _} - | {item: Graphql_lexer.Name("query"), _} - | {item: Graphql_lexer.Name("mutation"), _} - | {item: Graphql_lexer.Name("subscription"), _} => - parse_operation_definition(parser) |> map(def => Operation(def)) - - | {item: Graphql_lexer.Name("fragment"), _} => - parse_fragment_definition(parser) |> map(def => Fragment(def)) - - | span => Error(Source_pos.map(t => Unexpected_token(t), span)) - } - ); - -let parse_document = parser => { - let rec scanner = acc => - switch (parse_definition(parser)) { - | Error(e) => Error(e) - | Ok(def) => - switch (peek(parser)) { - | {item: Graphql_lexer.End_of_file, _} => Ok(List.rev([def, ...acc])) - | _ => scanner([def, ...acc]) - } - }; - - scanner([]); -}; diff --git a/src/base/graphql_parser_schema.re b/src/base/graphql_parser_schema.re deleted file mode 100644 index d3da02ac..00000000 --- a/src/base/graphql_parser_schema.re +++ /dev/null @@ -1,572 +0,0 @@ -open Result; -open Graphql_parser; -open Source_pos; -open Graphql_parser_directives; - -let rec parse_type_ref = parser => { - Schema.( - switch (next(parser)) { - | Ok({item: Graphql_lexer.Name(name), _}) => - switch (peek(parser)) { - | {item: Graphql_lexer.Exclamation_mark, _} => - let _ = next(parser); - Ok(NonNull(Named(name))); - | _ => Ok(Named(name)) - } - | Ok({item: Graphql_lexer.Bracket_open, _}) => - parse_type_ref(parser) - |> Result_ext.flat_map(type_ref => { - expect(parser, Graphql_lexer.Bracket_close) - |> Result_ext.map(_ => type_ref) - }) - |> Result_ext.flat_map(type_ref => { - switch (peek(parser)) { - | {item: Graphql_lexer.Exclamation_mark, span: _} => - let _ = next(parser); - Ok(NonNull(List(type_ref))); - | _ => Ok(List(type_ref)) - } - }) - - | Ok({item, span}) => Error({span, item: Unexpected_token(item)}) - | Error(e) => Error(e) - } - ); -}; - -let parse_default_value = parser => { - switch (peek(parser)) { - | {item: Graphql_lexer.Equals} => - let _ = next(parser); - Graphql_parser_value.parse_value_literal(true, parser) - |> Result_ext.map(default_value => - Some(Graphql_printer.print_input_value(default_value.item)) - ); - - | _ => Ok(None) - }; -}; -let get_description = parser => { - switch (peek(parser)) { - | {item: Graphql_lexer.String(s), span: _} => - let _ = next(parser); - Some(s); - | _ => None - }; -}; -let parse_type_argument = parser => { - open Result_ext; - let description = get_description(parser); - - expect_name(parser) - |> flat_map(name => expect(parser, Graphql_lexer.Colon) |> replace(name)) - |> flat_map(name => - parse_type_ref(parser) |> map(type_ref => (name, type_ref)) - ) - |> flat_map(((name, type_ref)) => { - parse_default_value(parser) - |> map(default_value => { - // there can be directives, but we don't do anything with them yet - let _ = parse_directives(parser); - Schema.{ - am_name: name.item, - am_arg_type: type_ref, - am_default_value: default_value, - am_description: description, - }; - }) - }); -}; - -let parse_type_arguments = parser => - switch (peek(parser)) { - | {item: Graphql_lexer.Paren_open, _} => - delimited_nonempty_list( - parser, - Graphql_lexer.Paren_open, - parse_type_argument, - Graphql_lexer.Paren_close, - ) - |> Result_ext.map(args => args.item) - | _ => Ok([]) - }; - -type schema_element = - | Type(Schema.type_meta) - | Directive(Schema.directive_meta) - | Schema(Schema.schema_meta); - -let parse_scalar = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.map(({item: sm_name}) => { - Schema.{sm_name, sm_description: description} - }); -}; - -let get_deprecated_directive = directives => { - switch (directives) { - | Ok([ - { - item: - Graphql_ast.{ - d_name: {item: "deprecated"}, - d_arguments: - Some({ - item: [({item: "reason"}, {item: Iv_string(reason)})], - }), - }, - }, - ]) => - Some(reason) - | _ => None - }; -}; - -let parse_deprecated_directive = parser => { - parse_directives(parser) |> get_deprecated_directive; -}; - -let parse_enum_value = (~description, parser) => { - expect_name(parser) - |> Result_ext.map(n => { - // only accepted directive here is @deprecated(reason: "...") - let evm_deprecation_reason = parse_deprecated_directive(parser); - - Schema.{ - evm_name: n.item, - evm_description: description, - evm_deprecation_reason, - }; - }); -}; - -let parse_enum = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => {expect_name(parser)}) - |> Result_ext.flat_map(({item: em_name}) => { - expect(parser, Graphql_lexer.Curly_open) - |> Result_ext.map(_ => em_name) - }) - |> Result_ext.flat_map(em_name => { - [@tailcall] - let rec consume_enums = acc => { - switch (peek(parser)) { - // enum with description - | {item: Graphql_lexer.String(description)} => - let _ = next(parser); - - switch (parse_enum_value(~description=Some(description), parser)) { - | Ok(value) => consume_enums([value, ...acc]) - | Error(e) => Error(e) - }; - // just enum - | {item: Graphql_lexer.Name(_)} => - switch (parse_enum_value(~description=None, parser)) { - | Ok(value) => consume_enums([value, ...acc]) - | Error(e) => Error(e) - } - | {item: Graphql_lexer.Curly_close} => - let _ = next(parser); - // rev the list, because we been adding to the head - Ok(List.rev(acc)); - | {item, span} => Error({span, item: Unexpected_token(item)}) - }; - }; - - let em_values = consume_enums([]); - - em_values - |> Result_ext.map(em_values => { - Schema.{em_name, em_description: description, em_values} - }); - }); -}; - -let parse_field = parser => { - let description = get_description(parser); - expect_name(parser) - |> Result_ext.flat_map(({item: name}) => { - parse_type_arguments(parser) - |> Result_ext.flat_map(arguments => { - expect(parser, Graphql_lexer.Colon) - |> Result_ext.map(_ => arguments) - }) - |> Result_ext.flat_map(arguments => { - parse_type_ref(parser) - |> Result_ext.flat_map(field_type => { - let deprecation_reason = parse_deprecated_directive(parser); - - Ok( - Schema.{ - fm_name: name, - fm_description: description, - fm_arguments: arguments, - fm_field_type: field_type, - fm_deprecation_reason: deprecation_reason, - }, - ); - }) - }) - }); -}; - -let parse_fields = parser => { - let rec loop = acc => { - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_close, _} => - let _ = next(parser); - Ok(List.rev(acc)); - | _ => - let field = parse_field(parser); - switch (field) { - | Ok(field) => loop([field, ...acc]) - | Error(e) => Error(e) - }; - }; - }; - loop([]); -}; - -let parse_input_field = parser => { - parse_type_argument(parser); -}; - -let rec parse_input_fields = (parser, acc) => { - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_close, _} => - let _ = next(parser); - Ok(List.rev(acc)); - | _ => - let field = parse_input_field(parser); - switch (field) { - | Ok(field) => parse_input_fields(parser, [field, ...acc]) - | Error(e) => Error(e) - }; - }; -}; - -let parse_implements = parser => { - let rec parse_implementations = (parser, acc) => { - switch (expect_name(parser)) { - | Ok({item: name}) => - let acc = [name, ...acc]; - switch (peek(parser)) { - | {item: Graphql_lexer.Curly_open} => Ok(List.rev(acc)) - | {item: Graphql_lexer.Ampersand} => parse_implementations(parser, acc) - | {item, span} => - print_endline("HWOWWOOWO"); - Error({span, item: Unexpected_token(item)}); - }; - | Error(e) => Error(e) - }; - }; - - switch (peek(parser)) { - | {item: Graphql_lexer.Name("implements")} => - let _ = next(parser); - parse_implementations(parser, []); - | _ => Ok([]) - }; -}; - -let parse_object = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => {expect_name(parser)}) - |> Result_ext.flat_map(({item: name, _}) => { - parse_implements(parser) - |> Result_ext.flat_map(implements => { - expect(parser, Graphql_lexer.Curly_open) - |> Result_ext.flat_map(_ => {parse_fields(parser)}) - |> Result_ext.map(fields => { - Schema.{ - om_name: name, - om_description: description, - om_fields: fields, - om_interfaces: implements, - } - }) - }) - }); -}; - -let parse_interface = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.flat_map(({item: name, _}) => { - expect(parser, Graphql_lexer.Curly_open) - |> Result_ext.flat_map(_ => parse_fields(parser)) - |> Result_ext.map(fields => { - Schema.{ - im_name: name, - im_description: description, - im_fields: fields, - } - }) - }); -}; - -let rec add_to_schema = (parser, callback: string => Schema.schema_meta) => { - let schema = - expect(parser, Graphql_lexer.Colon) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.map(name => callback(name.item)); - - switch (schema) { - | Ok(schema) => parse_schema_fields(parser, schema) - | Error(e) => Error(e) - }; -} -and parse_schema_fields = (parser, acc) => { - switch (next(parser)) { - | Ok({item: Graphql_lexer.Name("query")}) => - add_to_schema(parser, name => {...acc, sm_query_type: name}) - | Ok({item: Graphql_lexer.Name("mutation")}) => - add_to_schema(parser, name => {...acc, sm_mutation_type: Some(name)}) - | Ok({item: Graphql_lexer.Name("subscription")}) => - add_to_schema(parser, name => {...acc, sm_subscription_type: Some(name)}) - | Ok({item: Graphql_lexer.Curly_close}) => Ok(acc) - | Ok({item, span}) => Error({span, item: Unexpected_token(item)}) - | Error(e) => Error(e) - }; -}; - -let parse_schema = parser => { - expect_name(parser) - |> Result_ext.flat_map(_ => {expect(parser, Graphql_lexer.Curly_open)}) - |> Result_ext.flat_map(_ => - parse_schema_fields( - parser, - { - sm_query_type: "Query", - sm_mutation_type: None, - sm_subscription_type: None, - }, - ) - ); -}; - -[@tailcall] -let rec parse_union_types = (~acc=[], parser) => { - let pipe = skip(parser, Graphql_lexer.Pipe); - switch (acc, pipe) { - | (_, Ok(Some(_))) - | ([], Ok(None)) => - switch (expect_name(parser)) { - | Ok(union) => parse_union_types(~acc=[union.item, ...acc], parser) - | Error(e) => Error(e) - } - // (_, Error(_)) is EOF, which is valid (it's a peek) - | (_, _) => Ok(List.rev(acc)) - }; -}; - -let parse_union = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.flat_map(name => { - expect(parser, Graphql_lexer.Equals) |> Result_ext.map(_ => name.item) - }) - |> Result_ext.flat_map(name => - parse_union_types(parser) - |> Result_ext.map(unions => { - Schema.{ - um_name: name, - um_description: description, - um_of_types: unions, - } - }) - ); -}; - -let parse_input_object = (~description, parser) => { - expect_name(parser) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.flat_map(({item: name, _}) => { - expect(parser, Graphql_lexer.Curly_open) - |> Result_ext.flat_map(_ => parse_input_fields(parser, [])) - |> Result_ext.map(fields => { - Schema.{ - iom_name: name, - iom_description: description, - iom_input_fields: fields, - } - }) - }); -}; - -let get_directive_location = str => { - Schema.( - switch (str) { - | "MUTATION" => Dl_mutation - | "SUBSCRIPTION" => Dl_subscription - | "FIELD" => Dl_field - | "FRAGMENT_DEFINITION" => Dl_fragment_definition - | "FRAGMENT_SPREAD" => Dl_fragment_spread - | "INLINE_FRAGMENT" => Dl_inline_fragment - | _ => Dl_unknown - } - ); -}; - -let rec parse_directive_locations = (~acc=[], parser) => { - let pipe = skip(parser, Graphql_lexer.Pipe); - switch (acc, pipe) { - // first directive can be without leading pipe - | ([], Ok(None)) - | (_, Ok(Some(_))) => - switch (expect_name(parser)) { - | Ok({item: name}) => - parse_directive_locations( - ~acc=[get_directive_location(name), ...acc], - parser, - ) - | Error(e) => Error(e) - } - // (_, Error(_)) is EOF, which is valid (it's a peek) - | _ => Ok(List.rev(acc)) - }; -}; - -let parse_directive = - (~description as _, parser): result(Schema.directive_meta, _) => { - expect_name(parser) - |> Result_ext.flat_map(_ => expect(parser, Graphql_lexer.At)) - |> Result_ext.flat_map(_ => expect_name(parser)) - |> Result_ext.flat_map(({item: name}) => { - parse_type_arguments(parser) - |> Result_ext.map(arguments => (name, arguments)) - }) - |> Result_ext.flat_map(((name, arguments)) => { - expect(parser, Graphql_lexer.Name("on")) - |> Result_ext.flat_map(_ => { - ( - parse_directive_locations(parser): - result(list(Schema.directive_location), _) - ) - |> Result_ext.map((locations) => { - ( - Schema.{ - dm_name: name, - // dm_description: description, - dm_locations: locations, - dm_arguments: arguments, - }: Schema.directive_meta - ) - }) - }) - }); -}; - -let parse_element: parser => result(schema_element, spanning(parseError)) = - parser => { - let description = get_description(parser); - switch (peek(parser)) { - | {item: Graphql_lexer.Name("scalar"), _} => - parse_scalar(~description, parser) - |> Result_ext.map(scalar => Type(Scalar(scalar))) - | {item: Graphql_lexer.Name("enum"), _} => - parse_enum(~description, parser) - |> Result_ext.map(enum => Type(Enum(enum))) - | {item: Graphql_lexer.Name("type"), _} => - parse_object(~description, parser) - |> Result_ext.map(obj => Type(Object(obj))) - | {item: Graphql_lexer.Name("interface"), _} => - parse_interface(~description, parser) - |> Result_ext.map(interface => Type(Interface(interface))) - | {item: Graphql_lexer.Name("union"), _} => - parse_union(~description, parser) - |> Result_ext.map(union => Type(Union(union))) - | {item: Graphql_lexer.Name("input"), _} => - parse_input_object(~description, parser) - |> Result_ext.map(input_object => Type(InputObject(input_object))) - | {item: Graphql_lexer.Name("schema"), _} => - parse_schema(parser) |> Result_ext.map(schema => Schema(schema)) - | {item: Graphql_lexer.Name("directive"), _} => - parse_directive(~description, parser) - |> Result_ext.map(directive => Directive(directive)) - | {item, span} => Error({span, item: Unexpected_token(item)}) - }; - }; - -let add_to_schema = (schema: Schema.t, element) => { - switch (element) { - | Type(type_) => - Hashtbl.add(schema.type_map, Schema.type_name(type_), type_); - schema; - | Schema(meta) => Schema.{...schema, meta} - | Directive(_) => schema - }; -}; - -let add_built_in_scalars = type_map => { - ["Int", "Float", "String", "ID", "Boolean"] - |> List.iter(scalar => - Hashtbl.add( - type_map, - scalar, - Schema.Scalar({sm_name: scalar, sm_description: None}), - ) - ); - type_map; -}; -let add_built_in_directives = directive_map => { - open Schema; - let directives = [ - { - dm_name: "include", - // dm_description: None, - dm_locations: [Dl_field, Dl_fragment_spread, Dl_inline_fragment], - dm_arguments: [ - { - am_name: "if", - am_description: None, - am_arg_type: NonNull(Named("Boolean")), - am_default_value: None, - }, - ], - }, - { - dm_name: "skip", - // dm_description: None, - dm_locations: [Dl_field, Dl_fragment_spread, Dl_inline_fragment], - dm_arguments: [ - { - am_name: "if", - am_description: None, - am_arg_type: NonNull(Named("Boolean")), - am_default_value: None, - }, - ], - }, - ]; - directives - |> List.iter(directive => - Hashtbl.add(directive_map, directive.dm_name, directive) - ); - directive_map; -}; - -let parse = parser => { - let schema = - Schema.{ - meta: { - sm_query_type: "Query", - sm_mutation_type: None, - sm_subscription_type: None, - }, - type_map: add_built_in_scalars(Hashtbl.create(100)), - directive_map: add_built_in_directives(Hashtbl.create(10)), - }; - let rec scanner = schema => - switch (parse_element(parser)) { - | Error(e) => Error(e) - | Ok(element) => - switch (peek(parser)) { - | {item: Graphql_lexer.End_of_file, _} => - Ok(add_to_schema(schema, element)) - | _ => scanner(add_to_schema(schema, element)) - } - }; - scanner(schema); -}; diff --git a/src/base/graphql_parser_schema.rei b/src/base/graphql_parser_schema.rei deleted file mode 100644 index b9eac83c..00000000 --- a/src/base/graphql_parser_schema.rei +++ /dev/null @@ -1,3 +0,0 @@ -let parse: - Graphql_parser.parser => - result(Schema.t, Source_pos.spanning(Graphql_parser.parseError)); diff --git a/src/base/graphql_parser_value.re b/src/base/graphql_parser_value.re deleted file mode 100644 index adc0a7bd..00000000 --- a/src/base/graphql_parser_value.re +++ /dev/null @@ -1,83 +0,0 @@ -open Result; - -open Source_pos; - -open Graphql_parser; -open Graphql_ast; - -let map_next_token = (parser, f) => - switch (next(parser)) { - | Ok(item) => Ok(map(f, item)) - | e => e - }; - -let replace_next_token = (parser, t) => - switch (next(parser)) { - | Ok(item) => Ok(replace(item, t)) - | Error(e) => Error(e) - }; - -let map_next_token_with_error = (parser, f) => - switch (next(parser)) { - | Ok(item) => Error(map(f, item)) - | Error(e) => Error(e) - }; - -let parse_variable_literal = parser => - Result_ext.( - expect(parser, Graphql_lexer.Dollar) - |> flat_map(({span: (start_pos, _), _}) => - expect_name(parser) |> map(make_t2(start_pos)) - ) - |> map(((start_pos, {item, span: (_, end_pos)})) => - start_end(start_pos, end_pos, Iv_variable(item)) - ) - ); - -let rec parse_value_literal = (is_const, parser) => - switch (peek(parser)) { - | {item: Graphql_lexer.Bracket_open, _} => - parse_list_literal(is_const, parser) - | {item: Graphql_lexer.Curly_open, _} => - parse_object_literal(is_const, parser) - | {item: Graphql_lexer.Dollar, _} when !is_const => - parse_variable_literal(parser) - | {item: Graphql_lexer.Int(i), _} => replace_next_token(parser, Iv_int(i)) - | {item: Graphql_lexer.Float(f), _} => - replace_next_token(parser, Iv_float(f)) - | {item: Graphql_lexer.String(s), _} => - replace_next_token(parser, Iv_string(s)) - | {item: Graphql_lexer.Name("true"), _} => - replace_next_token(parser, Iv_boolean(true)) - | {item: Graphql_lexer.Name("false"), _} => - replace_next_token(parser, Iv_boolean(false)) - | {item: Graphql_lexer.Name("null"), _} => - replace_next_token(parser, Iv_null) - | {item: Graphql_lexer.Name(name), _} => - replace_next_token(parser, Iv_enum(name)) - | _ => map_next_token_with_error(parser, t => Unexpected_token(t)) - } -and parse_list_literal = (is_const, parser) => - delimited_list( - parser, - Graphql_lexer.Bracket_open, - parse_value_literal(is_const), - Graphql_lexer.Bracket_close, - ) - |> Result_ext.map(span => map(items => Iv_list(items), span)) -and parse_object_literal = (is_const, parser) => - delimited_list( - parser, - Graphql_lexer.Curly_open, - parse_object_field(is_const), - Graphql_lexer.Curly_close, - ) - |> Result_ext.map(span => map(items => Iv_object(items), span)) -and parse_object_field = (is_const, parser) => - Result_ext.( - expect_name(parser) - |> flat_map(key => expect(parser, Graphql_lexer.Colon) |> replace(key)) - |> flat_map(key => - parse_value_literal(is_const, parser) |> map(make_t2(key)) - ) - ); diff --git a/src/base/graphql_ppx_base.re b/src/base/graphql_ppx_base.re deleted file mode 100644 index 11803ea8..00000000 --- a/src/base/graphql_ppx_base.re +++ /dev/null @@ -1,22 +0,0 @@ -module Generator_utils = Generator_utils; -module Graphql_lexer = Graphql_lexer; -module Graphql_parser = Graphql_parser; -module Graphql_parser_document = Graphql_parser_document; -module Log = Log; -module Ppx_config = Ppx_config; -module Read_schema = Read_schema; -module Result_decoder = Result_decoder; -module Result_structure = Result_structure; -module Source_pos = Source_pos; -module Validations = Validations; -module Schema = Schema; -module Schema_printer = Schema_printer; -module Compat = Compat; -module Graphql_ast = Graphql_ast; -module Type_utils = Type_utils; -module Option = Option; -module Traversal_utils = Traversal_utils; -module Graphql_printer = Graphql_printer; -module Ast_serializer_apollo = Ast_serializer_apollo; -module Extract_type_definitions = Extract_type_definitions; -module Ast_transforms = Ast_transforms; diff --git a/src/base/graphql_printer.re b/src/base/graphql_printer.re deleted file mode 100644 index d4f04448..00000000 --- a/src/base/graphql_printer.re +++ /dev/null @@ -1,378 +0,0 @@ -open Graphql_ast; -open Source_pos; - -open Schema; - -/* - We rely on graphql_ppx.re having created the result decoder before running - the functions in this file. The result decoder produces proper and located - error messages for missing or invalid types, which means that we can - for - simplicity's sake - skip any kind of error handling here. - - The tricky part is of course to make sure that they rely on the same kind - of validation logic :/ - */ - -exception Cant_find_fragment_type(spanning(string)); - -type t = - | String(string) - | FragmentNameRef(string) - | FragmentQueryRef(string); - -let rec type_ref_name = - fun - | Named(n) => n - | NonNull(t) => type_ref_name(t) - | List(t) => type_ref_name(t); - -let rec print_input_value = iv => - switch (iv) { - | Iv_null => "null" - | Iv_int(i) => string_of_int(i) - | Iv_float(f) => Printf.sprintf("%.16g", f) - | Iv_string(s) => "\"" ++ String.escaped(s) ++ "\"" - | Iv_boolean(b) => string_of_bool(b) - | Iv_enum(s) => s - | Iv_variable(v) => "$" ++ v - | Iv_list(list) => - "[" - ++ ( - list - |> List.map(({item, _}) => print_input_value(item)) - |> String.concat(", ") - ) - ++ "]" - | Iv_object(obj) => - "{" - ++ ( - obj - |> List.map((({item: key, _}, {item: value, _})) => - key ++ ": " ++ print_input_value(value) - ) - |> String.concat(", ") - ) - ++ "}" - }; - -let print_argument = (({item: key, _}, {item: value, _})) => - key ++ ": " ++ print_input_value(value); - -let print_arguments = args => - switch (args) { - | [] => "" - | args => - "(" ++ (List.map(print_argument, args) |> String.concat(", ")) ++ ")" - }; - -let print_directive = d => - "@" - ++ d.d_name.item - ++ ( - switch (d.d_arguments) { - | Some({item, _}) => print_arguments(item) - | None => "" - } - ); - -let is_internal_directive = d => - switch (d.item.d_name.item) { - | "bsOmitFutureValue" - | "ppxOmitFutureValue" - | "bsVariant" - | "ppxVariant" - | "bsRecord" - | "ppxRecord" - | "bsObject" - | "ppxObject" - | "bsDecoder" - | "ppxDecoder" - | "bsCustom" - | "ppxCustom" - | "ppxCustomOpt" - | "bsAs" - | "ppxAs" - | "argumentDefinitions" - | "arguments" - | "bsField" - | "ppxField" - | "ppxConfig" => true - | _ => false - }; - -let print_directives = ds => - " " - ++ ( - ds - |> List.filter(d => (!) @@ is_internal_directive(d)) - |> List.map(d => print_directive(d.item)) - |> String.concat(" ") - ) - ++ " "; - -let print_fragment_spread = s => [| - String("..."), - FragmentNameRef(s.fs_name.item), - String(" " ++ print_directives(s.fs_directives)), -|]; - -let rec print_type = ty => - switch (ty) { - | Tr_named(n) => n.item - | Tr_list(l) => "[" ++ print_type(l.item) ++ "]" - | Tr_non_null_list(l) => "[" ++ print_type(l.item) ++ "]!" - | Tr_non_null_named(n) => n.item ++ "!" - }; - -let rec print_selection_set = (schema, ty, selection_set) => - switch (selection_set) { - | [] => [||] - | selection => - let add_typename = - switch (ty) { - | Interface(_) - | Union(_) => true - | _ => false - }; - - let maybe_typename = - if (add_typename) { - Some(String("__typename\n")); - } else { - None; - }; - - let selection = - selection - |> List.map(s => - Array.append(print_selection(schema, ty, s), [|String("\n")|]) - ) - |> Array.concat; - - Array.concat([ - switch (maybe_typename) { - | Some(typename) => [|String("{\n"), typename|] - | None => [|String("{\n")|] - }, - selection, - [|String("}\n")|], - ]); - } -and print_selection = (schema, ty, selection) => - switch (selection) { - | Field({item, _}) => print_field(schema, ty, item) - | FragmentSpread({item, _}) => print_fragment_spread(item) - | InlineFragment({item, _}) => print_inline_fragment(schema, ty, item) - } -and print_field = (schema, ty, f) => { - let ty_fields = - switch (ty) { - | Interface({im_fields, _}) => im_fields - | Object({om_fields, _}) => om_fields - | _ => [] - }; - - let field_type_name = - List.find(fm => fm.fm_name == f.fd_name.item, ty_fields).fm_field_type - |> type_ref_name; - - let field_ty = - field_type_name - |> lookup_type(schema) - |> Option.unsafe_unwrap( - ~reason="Cannot find field type: " ++ field_type_name, - ); - - Array.append( - [ - switch (f.fd_alias) { - | Some({item, _}) => Some(String(item ++ ": ")) - | None => None - }, - Some(String(f.fd_name.item)), - switch (f.fd_arguments) { - | Some({item, _}) => Some(String(print_arguments(item))) - | None => None - }, - Some(String(print_directives(f.fd_directives))), - ] - |> List.fold_left( - acc => - fun - | Some(r) => [r, ...acc] - | None => acc, - [], - ) - |> List.rev - |> Array.of_list, - switch (f.fd_selection_set) { - | Some({item, _}) => print_selection_set(schema, field_ty, item) - | None => [||] - }, - ); -} -and print_inline_fragment = (schema, ty, f) => { - let inner_ty = - switch (f.if_type_condition) { - | Some({item, _}) => - lookup_type(schema, item) - |> Option.unsafe_unwrap( - ~reason="Can't find inline fragment type: " ++ item, - ) - | None => ty - }; - Array.append( - [| - String("..."), - String( - switch (f.if_type_condition) { - | Some({item, _}) => "on " ++ item ++ " " - | None => " " - }, - ), - String(print_directives(f.if_directives)), - |], - print_selection_set(schema, inner_ty, f.if_selection_set.item), - ); -}; - -let print_variable_definition = ((name, def)) => - Printf.sprintf( - "$%s: %s%s", - name.item, - print_type(def.vd_type.item), - switch (def.vd_default_value) { - | Some({item, _}) => " = " ++ print_input_value(item) - | None => "" - }, - ); - -let print_variable_definitions = defs => - "(" - ++ (List.map(print_variable_definition, defs) |> String.concat(", ")) - ++ ")"; - -let print_operation = (schema, op) => { - let ty_name = - switch (op.o_type) { - | Query => schema.meta.sm_query_type - | Mutation => - Option.unsafe_unwrap( - ~reason="Can't find mutation type", - schema.meta.sm_mutation_type, - ) - | Subscription => - Option.unsafe_unwrap( - ~reason="Can't find subscription type", - schema.meta.sm_subscription_type, - ) - }; - Array.append( - [ - Some( - String( - switch (op.o_type) { - | Query => "query " - | Mutation => "mutation " - | Subscription => "subscription " - }, - ), - ), - switch (op.o_name) { - | Some({item, _}) => Some(String(item)) - | None => None - }, - switch (op.o_variable_definitions) { - | Some({item, _}) => Some(String(print_variable_definitions(item))) - | None => None - }, - Some(String(print_directives(op.o_directives))), - ] - |> List.fold_left( - acc => - fun - | Some(r) => [r, ...acc] - | None => acc, - [], - ) - |> List.rev - |> Array.of_list, - print_selection_set( - schema, - lookup_type(schema, ty_name) - |> Option.unsafe_unwrap(~reason="Can't find type: " ++ ty_name), - op.o_selection_set.item, - ), - ); -}; - -let print_fragment = (schema, f) => - Array.append( - [| - String( - "fragment " - ++ f.fg_name.item - ++ " on " - ++ f.fg_type_condition.item - ++ " ", - ), - String(print_directives(f.fg_directives)), - |], - print_selection_set( - schema, - switch (lookup_type(schema, f.fg_type_condition.item)) { - | Some(fragment_type) => fragment_type - | None => raise(Cant_find_fragment_type(f.fg_type_condition)) - }, - f.fg_selection_set.item, - ), - ); - -let print_definition = (schema, def) => - switch (def) { - | Operation({item: operation, _}) => print_operation(schema, operation) - | Fragment({item: fragment, _}) => print_fragment(schema, fragment) - }; - -module StringSet = Set.Make(String); - -let find_fragment_refs = parts => - parts - |> Array.fold_left( - acc => - fun - | String(_) => acc - | FragmentNameRef(r) => StringSet.add(r, acc) - | FragmentQueryRef(_) => acc, - StringSet.empty, - ) - |> StringSet.elements; - -let compress_parts = (parts: array(t)) => { - parts - |> Array.to_list - |> List.fold_left( - (acc, curr) => { - switch (acc, curr) { - | ([String(s1), ...rest], String(s2)) => [ - String(s1 ++ s2), - ...rest, - ] - | (acc, curr) => [curr, ...acc] - } - }, - [], - ) - |> List.rev - |> Array.of_list; -}; - -let print_document = (schema, defs) => { - let parts = defs |> List.map(print_definition(schema)) |> Array.concat; - let fragment_refs = find_fragment_refs(parts); - Array.concat([ - parts, - fragment_refs |> Array.of_list |> Array.map(ref => FragmentQueryRef(ref)), - ]) - |> compress_parts; -}; diff --git a/src/base/graphql_printer.rei b/src/base/graphql_printer.rei deleted file mode 100644 index 65f167d4..00000000 --- a/src/base/graphql_printer.rei +++ /dev/null @@ -1,11 +0,0 @@ -exception Cant_find_fragment_type(Source_pos.spanning(string)); - -type t = - | String(string) - | FragmentNameRef(string) - | FragmentQueryRef(string); - -let type_ref_name: Schema.type_ref => string; -let print_type: Graphql_ast.type_ref => string; -let print_document: (Schema.t, Graphql_ast.document) => array(t); -let print_input_value: Graphql_ast.input_value => string; diff --git a/src/base/log.re b/src/base/log.re deleted file mode 100644 index 9c8bbcd3..00000000 --- a/src/base/log.re +++ /dev/null @@ -1,6 +0,0 @@ -let log = msg => - if (Ppx_config.verbose_logging()) { - print_endline(msg); - }; - -let error_log = prerr_endline; diff --git a/src/base/multi_visitor.re b/src/base/multi_visitor.re deleted file mode 100644 index 0b77a2a8..00000000 --- a/src/base/multi_visitor.re +++ /dev/null @@ -1,193 +0,0 @@ -module NullVisitor: Traversal_utils.VisitorSig = { - type t = unit; - include Traversal_utils.AbstractVisitor; - let make_self = _ => (); -}; - -module Visitor = - (H: Traversal_utils.VisitorSig, T: Traversal_utils.VisitorSig) - : Traversal_utils.VisitorSig => { - type t = (H.t, T.t); - - let make_self = () => (H.make_self(), T.make_self()); - - let enter_document = ((h, t), ctx, doc) => { - let () = H.enter_document(h, ctx, doc); - T.enter_document(t, ctx, doc); - }; - let exit_document = ((h, t), ctx, doc) => { - let () = H.exit_document(h, ctx, doc); - T.exit_document(t, ctx, doc); - }; - - let enter_operation_definition = ((h, t), ctx, def) => { - let () = H.enter_operation_definition(h, ctx, def); - T.enter_operation_definition(t, ctx, def); - }; - let exit_operation_definition = ((h, t), ctx, def) => { - let () = H.exit_operation_definition(h, ctx, def); - T.exit_operation_definition(t, ctx, def); - }; - - let enter_fragment_definition = ((h, t), ctx, def) => { - let () = H.enter_fragment_definition(h, ctx, def); - T.enter_fragment_definition(t, ctx, def); - }; - let exit_fragment_definition = ((h, t), ctx, def) => { - let () = H.exit_fragment_definition(h, ctx, def); - T.exit_fragment_definition(t, ctx, def); - }; - - let enter_variable_definition = ((h, t), ctx, def) => { - let () = H.enter_variable_definition(h, ctx, def); - T.enter_variable_definition(t, ctx, def); - }; - let exit_variable_definition = ((h, t), ctx, def) => { - let () = H.exit_variable_definition(h, ctx, def); - T.exit_variable_definition(t, ctx, def); - }; - - let enter_directive = ((h, t), ctx, d) => { - let () = H.enter_directive(h, ctx, d); - T.enter_directive(t, ctx, d); - }; - let exit_directive = ((h, t), ctx, d) => { - let () = H.exit_directive(h, ctx, d); - T.exit_directive(t, ctx, d); - }; - - let enter_argument = ((h, t), ctx, a) => { - let () = H.enter_argument(h, ctx, a); - T.enter_argument(t, ctx, a); - }; - let exit_argument = ((h, t), ctx, a) => { - let () = H.exit_argument(h, ctx, a); - T.exit_argument(t, ctx, a); - }; - - let enter_selection_set = ((h, t), ctx, s) => { - let () = H.enter_selection_set(h, ctx, s); - T.enter_selection_set(t, ctx, s); - }; - let exit_selection_set = ((h, t), ctx, s) => { - let () = H.exit_selection_set(h, ctx, s); - T.exit_selection_set(t, ctx, s); - }; - - let enter_field = ((h, t), ctx, f) => { - let () = H.enter_field(h, ctx, f); - T.enter_field(t, ctx, f); - }; - let exit_field = ((h, t), ctx, f) => { - let () = H.exit_field(h, ctx, f); - T.exit_field(t, ctx, f); - }; - - let enter_fragment_spread = ((h, t), ctx, fs) => { - let () = H.enter_fragment_spread(h, ctx, fs); - T.enter_fragment_spread(t, ctx, fs); - }; - let exit_fragment_spread = ((h, t), ctx, fs) => { - let () = H.exit_fragment_spread(h, ctx, fs); - T.exit_fragment_spread(t, ctx, fs); - }; - - let enter_inline_fragment = ((h, t), ctx, if_) => { - let () = H.enter_inline_fragment(h, ctx, if_); - T.enter_inline_fragment(t, ctx, if_); - }; - let exit_inline_fragment = ((h, t), ctx, if_) => { - let () = H.exit_inline_fragment(h, ctx, if_); - T.exit_inline_fragment(t, ctx, if_); - }; - - let enter_null_value = ((h, t), ctx, v) => { - let () = H.enter_null_value(h, ctx, v); - T.enter_null_value(t, ctx, v); - }; - let exit_null_value = ((h, t), ctx, v) => { - let () = H.exit_null_value(h, ctx, v); - T.exit_null_value(t, ctx, v); - }; - - let enter_int_value = ((h, t), ctx, v) => { - let () = H.enter_int_value(h, ctx, v); - T.enter_int_value(t, ctx, v); - }; - let exit_int_value = ((h, t), ctx, v) => { - let () = H.exit_int_value(h, ctx, v); - T.exit_int_value(t, ctx, v); - }; - - let enter_float_value = ((h, t), ctx, v) => { - let () = H.enter_float_value(h, ctx, v); - T.enter_float_value(t, ctx, v); - }; - let exit_float_value = ((h, t), ctx, v) => { - let () = H.exit_float_value(h, ctx, v); - T.exit_float_value(t, ctx, v); - }; - - let enter_string_value = ((h, t), ctx, v) => { - let () = H.enter_string_value(h, ctx, v); - T.enter_string_value(t, ctx, v); - }; - let exit_string_value = ((h, t), ctx, v) => { - let () = H.exit_string_value(h, ctx, v); - T.exit_string_value(t, ctx, v); - }; - - let enter_bool_value = ((h, t), ctx, v) => { - let () = H.enter_bool_value(h, ctx, v); - T.enter_bool_value(t, ctx, v); - }; - let exit_bool_value = ((h, t), ctx, v) => { - let () = H.exit_bool_value(h, ctx, v); - T.exit_bool_value(t, ctx, v); - }; - - let enter_enum_value = ((h, t), ctx, v) => { - let () = H.enter_enum_value(h, ctx, v); - T.enter_enum_value(t, ctx, v); - }; - let exit_enum_value = ((h, t), ctx, v) => { - let () = H.exit_enum_value(h, ctx, v); - T.exit_enum_value(t, ctx, v); - }; - - let enter_variable_value = ((h, t), ctx, v) => { - let () = H.enter_variable_value(h, ctx, v); - T.enter_variable_value(t, ctx, v); - }; - let exit_variable_value = ((h, t), ctx, v) => { - let () = H.exit_variable_value(h, ctx, v); - T.exit_variable_value(t, ctx, v); - }; - - let enter_list_value = ((h, t), ctx, v) => { - let () = H.enter_list_value(h, ctx, v); - T.enter_list_value(t, ctx, v); - }; - let exit_list_value = ((h, t), ctx, v) => { - let () = H.exit_list_value(h, ctx, v); - T.exit_list_value(t, ctx, v); - }; - - let enter_object_value = ((h, t), ctx, v) => { - let () = H.enter_object_value(h, ctx, v); - T.enter_object_value(t, ctx, v); - }; - let exit_object_value = ((h, t), ctx, v) => { - let () = H.exit_object_value(h, ctx, v); - T.exit_object_value(t, ctx, v); - }; - - let enter_object_field = ((h, t), ctx, f) => { - let () = H.enter_object_field(h, ctx, f); - T.enter_object_field(t, ctx, f); - }; - let exit_object_field = ((h, t), ctx, f) => { - let () = H.exit_object_field(h, ctx, f); - T.exit_object_field(t, ctx, f); - }; -}; diff --git a/src/base/option.re b/src/base/option.re deleted file mode 100644 index dcbe3b3f..00000000 --- a/src/base/option.re +++ /dev/null @@ -1,28 +0,0 @@ -exception Option_unwrap_error(string); - -let map = f => - fun - | None => None - | Some(v) => Some(f(v)); - -let flat_map = f => - fun - | None => None - | Some(v) => f(v); - -let unsafe_unwrap = (~reason) => - fun - | None => raise(Option_unwrap_error(reason)) - | Some(v) => v; - -let get_or_else = default => - fun - | None => default - | Some(v) => v; - -let is_some = - fun - | Some(_) => true - | None => false; - -let is_none = x => !is_some(x); diff --git a/src/base/ppx_config.re b/src/base/ppx_config.re deleted file mode 100644 index 40184c7f..00000000 --- a/src/base/ppx_config.re +++ /dev/null @@ -1,96 +0,0 @@ -type output_mode = - | String - | Apollo_AST; - -type fragment_in_query = - | Include - | Exclude; - -type config = { - verbose_logging: bool, - output_mode, - verbose_error_handling: bool, - apollo_mode: bool, - root_directory: string, - schema_file: string, - raise_error_with_loc: 'a. (Source_pos.ast_location, string) => 'a, - template_tag: option(string), - template_tag_location: option(string), - template_tag_import: option(string), - template_tag_return_type: option(string), - template_tag_is_function: option(bool), - custom_fields: Hashtbl.t(string, string), - future_added_value: bool, - extend_query: option(string), - extend_query_no_required_variables: option(string), - extend_mutation: option(string), - extend_mutation_no_required_variables: option(string), - extend_subscription: option(string), - extend_subscription_no_required_variables: option(string), - extend_fragment: option(string), - fragment_in_query, - native: bool, -}; - -let config_ref = ref(None); - -let set_config = config => config_ref := Some(config); - -let update_config = update => config_ref := config_ref^ |> Option.map(update); - -let unsafe_unwrap_config = Option.unsafe_unwrap(~reason="Cannot read config"); - -let verbose_logging = () => - (config_ref^ |> unsafe_unwrap_config).verbose_logging; - -let output_mode = () => (config_ref^ |> unsafe_unwrap_config).output_mode; - -let custom_fields = () => (config_ref^ |> unsafe_unwrap_config).custom_fields; - -let future_added_value = () => - (config_ref^ |> unsafe_unwrap_config).future_added_value; - -let apollo_mode = () => (config_ref^ |> unsafe_unwrap_config).apollo_mode; - -let template_tag = () => (config_ref^ |> unsafe_unwrap_config).template_tag; -let fragment_in_query = () => - (config_ref^ |> unsafe_unwrap_config).fragment_in_query; - -let template_tag_import = () => - (config_ref^ |> unsafe_unwrap_config).template_tag_import; -let template_tag_location = () => - (config_ref^ |> unsafe_unwrap_config).template_tag_location; -let template_tag_return_type = () => - (config_ref^ |> unsafe_unwrap_config).template_tag_return_type; - -let template_tag_is_function = () => - (config_ref^ |> unsafe_unwrap_config).template_tag_is_function; - -let verbose_error_handling = () => - (config_ref^ |> unsafe_unwrap_config).verbose_error_handling; - -let root_directory = () => - (config_ref^ |> unsafe_unwrap_config).root_directory; - -let schema_file = () => (config_ref^ |> unsafe_unwrap_config).schema_file; - -let extend_query = () => (config_ref^ |> unsafe_unwrap_config).extend_query; -let extend_query_no_required_variables = () => - (config_ref^ |> unsafe_unwrap_config).extend_query_no_required_variables; -let extend_mutation = () => - (config_ref^ |> unsafe_unwrap_config).extend_mutation; -let extend_mutation_no_required_variables = () => - (config_ref^ |> unsafe_unwrap_config).extend_mutation_no_required_variables; - -let extend_subscription = () => - (config_ref^ |> unsafe_unwrap_config).extend_subscription; -let extend_subscription_no_required_variables = () => - (config_ref^ |> unsafe_unwrap_config). - extend_subscription_no_required_variables; -let extend_fragment = () => - (config_ref^ |> unsafe_unwrap_config).extend_fragment; - -let native = () => (config_ref^ |> unsafe_unwrap_config).native; - -let raise_error_with_loc = (loc, message) => - (config_ref^ |> unsafe_unwrap_config).raise_error_with_loc(loc, message); diff --git a/src/base/read_schema.re b/src/base/read_schema.re deleted file mode 100644 index 47678228..00000000 --- a/src/base/read_schema.re +++ /dev/null @@ -1,501 +0,0 @@ -exception Schema_file_not_found; - -let typename_field = { - Schema.fm_name: "__typename", - fm_description: None, - fm_arguments: [], - fm_field_type: Schema.NonNull(Schema.Named("String")), - fm_deprecation_reason: None, -}; - -let map_items = (f, t) => { - let new_t = Hashtbl.create(Hashtbl.length(t)); - let mapper = (k, v) => { - let (k', v') = f(k, v); - Hashtbl.add(new_t, k', v'); - }; - - let () = Hashtbl.iter(mapper, t); - new_t; -}; - -let map_values = f => map_items((k, v) => (k, f(k, v))); - -let some_or = (o, v) => - switch (o) { - | Some(v) => v - | None => v - }; - -let add_typename_if_missing = fields => - Schema.( - if (List.exists(({fm_name, _}) => fm_name == "__typename", fields)) { - fields; - } else { - [typename_field, ...fields]; - } - ); - -exception Unknown_type_kind(string); - -let rec type_ref_name = tr => - Schema.( - switch (tr) { - | Named(n) => n - | NonNull(i) => type_ref_name(i) - | List(i) => type_ref_name(i) - } - ); - -let make_enum_value_meta = v => - Yojson.Basic.Util.( - Schema.{ - evm_name: v |> member("name") |> to_string, - evm_description: v |> member("description") |> to_string_option, - evm_deprecation_reason: - if (v |> member("isDeprecated") |> to_bool) { - Some( - some_or( - v |> member("deprecationReason") |> to_string_option, - "(unknown)", - ), - ); - } else { - None; - }, - } - ); - -let rec make_type_ref = v => - Yojson.Basic.Util.( - Schema.( - switch (v |> member("kind") |> to_string) { - | "LIST" => List(v |> member("ofType") |> make_type_ref) - | "NON_NULL" => NonNull(v |> member("ofType") |> make_type_ref) - | _ => Named(v |> member("name") |> to_string) - } - ) - ); - -let make_argument_meta = v => - Yojson.Basic.Util.( - Schema.{ - am_name: v |> member("name") |> to_string, - am_description: v |> member("description") |> to_string_option, - am_arg_type: v |> member("type") |> make_type_ref, - am_default_value: v |> member("defaultValue") |> to_string_option, - } - ); - -let make_field_meta = v => - Yojson.Basic.Util.( - Schema.{ - fm_name: v |> member("name") |> to_string, - fm_description: v |> member("description") |> to_string_option, - fm_arguments: - v |> member("args") |> to_list |> List.map(make_argument_meta), - fm_field_type: v |> member("type") |> make_type_ref, - fm_deprecation_reason: - if (v |> member("isDeprecated") |> to_bool) { - Some( - some_or( - v |> member("deprecationReason") |> to_string_option, - "(unknown)", - ), - ); - } else { - None; - }, - } - ); - -let make_scalar_meta = v => - Yojson.Basic.Util.( - Schema.{ - sm_name: v |> member("name") |> to_string, - sm_description: v |> member("description") |> to_string_option, - } - ); - -let make_object_meta = v => - Yojson.Basic.Util.( - Schema.{ - om_name: v |> member("name") |> to_string, - om_description: v |> member("description") |> to_string_option, - om_fields: - v - |> member("fields") - |> to_list - |> List.map(make_field_meta) - |> add_typename_if_missing, - om_interfaces: - v - |> member("interfaces") - |> to_list - |> List.map(i => i |> make_type_ref |> type_ref_name), - } - ); - -let make_enum_meta = v => - Yojson.Basic.Util.( - Schema.{ - em_name: v |> member("name") |> to_string, - em_description: v |> member("description") |> to_string_option, - em_values: - v - |> member("enumValues") - |> to_list - |> List.map(make_enum_value_meta), - } - ); - -let make_interface_meta = v => - Yojson.Basic.Util.( - Schema.{ - im_name: v |> member("name") |> to_string, - im_description: v |> member("description") |> to_string_option, - im_fields: - v - |> member("fields") - |> to_list - |> List.map(make_field_meta) - |> add_typename_if_missing, - } - ); - -let make_union_meta = v => - Yojson.Basic.Util.( - Schema.{ - um_name: v |> member("name") |> to_string, - um_description: v |> member("description") |> to_string_option, - um_of_types: - v - |> member("possibleTypes") - |> to_list - |> List.map(i => i |> make_type_ref |> type_ref_name), - } - ); - -let make_input_object_meta = v => - Yojson.Basic.Util.( - Schema.{ - iom_name: v |> member("name") |> to_string, - iom_description: v |> member("description") |> to_string_option, - iom_input_fields: - v |> member("inputFields") |> to_list |> List.map(make_argument_meta), - } - ); - -let make_type_meta = (_, v) => - Yojson.Basic.Util.( - switch (v |> member("kind") |> to_string) { - | "SCALAR" => Schema.Scalar(make_scalar_meta(v)) - | "OBJECT" => Schema.Object(make_object_meta(v)) - | "ENUM" => Schema.Enum(make_enum_meta(v)) - | "INTERFACE" => Schema.Interface(make_interface_meta(v)) - | "UNION" => Schema.Union(make_union_meta(v)) - | "INPUT_OBJECT" => Schema.InputObject(make_input_object_meta(v)) - | e => raise @@ Unknown_type_kind(e) - } - ); - -let make_type_map = type_array => { - open Yojson.Basic.Util; - let rec type_map_loop = (i, type_map) => - if (i == Array.length(type_array)) { - type_map; - } else { - let () = - Hashtbl.add( - type_map, - type_array[i] |> member("name") |> to_string, - type_array[i], - ); - type_map_loop(i + 1, type_map); - }; - - let type_map = type_map_loop(0, Hashtbl.create(Array.length(type_array))); - map_values(make_type_meta, type_map); -}; - -let make_directive_location = directive_location => - Schema.( - Yojson.Basic.Util.( - switch (directive_location |> to_string) { - | "QUERY" => Dl_query - | "MUTATION" => Dl_mutation - | "SUBSCRIPTION" => Dl_subscription - | "FIELD" => Dl_field - | "FRAGMENT_DEFINITION" => Dl_fragment_definition - | "FRAGMENT_SPREAD" => Dl_fragment_spread - | "INLINE_FRAGMENT" => Dl_inline_fragment - | _ => Dl_unknown - } - ) - ); - -let make_directive_meta = (_, directive) => - Schema.( - Yojson.Basic.Util.{ - // dm_description: directive |> member("description") |> to_string_option, - dm_name: directive |> member("name") |> to_string, - dm_locations: - directive - |> member("locations") - |> to_list - |> List.map(make_directive_location), - dm_arguments: - directive - |> member("args") - |> to_list - |> List.map(make_argument_meta), - } - ); - -let make_directive_map = directive_array => { - open Yojson.Basic.Util; - let directive_json_map = Hashtbl.create(Array.length(directive_array)); - let () = - Array.iter( - directive => - Hashtbl.add( - directive_json_map, - directive |> member("name") |> to_string, - directive, - ), - directive_array, - ); - map_values(make_directive_meta, directive_json_map); -}; - -let make_schema_meta = v => - Yojson.Basic.Util.( - Schema.{ - sm_query_type: v |> member("queryType") |> member("name") |> to_string, - sm_mutation_type: - v - |> member("mutationType") - |> to_option(m => m |> member("name") |> to_string), - sm_subscription_type: - v - |> member("subscriptionType") - |> to_option(s => s |> member("name") |> to_string), - } - ); - -let find_file_towards_root = (dir, file) => { - let rec inner = (dir, file) => { - let here_file = Filename.concat(dir, file); - Log.log("[read_schema][here_file] " ++ here_file); - - if (Sys.file_exists(here_file)) { - let () = Log.log("[read_schema][found] " ++ here_file); - Some(here_file); - } else if (Filename.dirname(dir) == dir) { - None; - } else { - inner(Filename.dirname(dir), file); - }; - }; - - if (!Filename.is_relative(file)) { - Some(file); - } else { - inner(dir, file); - }; -}; - -exception Ppx_cache_dir_is_not_dir; - -let create_dir_if_not_exist = abs_path => - if (Sys.file_exists(abs_path)) { - let file_stat = Unix.stat(abs_path); - Unix.( - switch (file_stat.st_kind) { - | S_DIR => () - | _ => raise(Ppx_cache_dir_is_not_dir) - } - ); - } else { - let () = Log.log("[make_cache_dir]" ++ abs_path); - switch (Unix.mkdir(abs_path, 493)) { - | () => () - | exception (Unix.Unix_error(error, cmd, msg)) => - switch (error) { - | Unix.EEXIST => () /* It's Ok since the build tool e.g. BuckleScript could be multi-threading */ - | error => - Log.error_log(Unix.error_message(error) ++ " " ++ cmd ++ " " ++ msg); - raise(Unix.Unix_error(error, cmd, msg)); - } - }; - }; - -/** - * Naming Explaniation - * - * json_schema_rel: the path passed in from bsconfig.json "schema" flag - * json_schema: the absolute path of confirmed-exist json schema - * marshaled_schema: the absolute path of marshaled schema - */ - -let ppx_cache_dir = ".graphql_ppx_cache/"; - -let get_ppx_cache_path = (suffix, relative_to) => { - let dir = - try(Sys.getenv("cur__target_dir")) { - | _ => Filename.dirname(relative_to) - }; - - let cache_dir_path = Filename.concat(dir, ppx_cache_dir); - let () = create_dir_if_not_exist(cache_dir_path); - let name = Filename.basename(relative_to) ++ suffix; - Filename.concat(dir, ppx_cache_dir ++ name); -}; - -let get_marshaled_path = get_ppx_cache_path(".marshaled"); -let get_hash_path = get_ppx_cache_path(".hash"); - -let parse_json_schema = json_schema => { - Log.log("[parse json schema] " ++ json_schema); - let result = Yojson.Basic.from_file(json_schema); - open Yojson.Basic.Util; - open Schema; - let schema = - result - |> member("data") - |> to_option(json => json |> member("__schema")) - |> ( - fun - | Some(json) => json - | None => result |> member("__schema") - ); - { - meta: make_schema_meta(schema), - type_map: - schema |> member("types") |> to_list |> Array.of_list |> make_type_map, - directive_map: - schema - |> member("directives") - |> to_list - |> Array.of_list - |> make_directive_map, - }; -}; - -/* marshaled schema would be placed in `.graphql_ppx_cache` dir relatively to json_schema */ -let create_marshaled_schema = (json_schema, data) => { - let marshaled_schema = get_marshaled_path(json_schema); - Log.log("[write marshaled] " ++ marshaled_schema); - switch (open_out_bin(marshaled_schema)) { - | exception (Sys_error(msg)) => - Log.error_log("[write marshaled][Sys_error]: " ++ msg); - raise(Sys_error(msg)); - | outc => - Marshal.to_channel(outc, data, []); - close_out(outc); - }; -}; - -let read_whole_file = filename => { - let ch = open_in(filename); - let s = really_input_string(ch, in_channel_length(ch)); - close_in(ch); - s; -}; - -exception LexerError(string); -exception ParserError(string, int, int); -exception InvalidExtension(string); -let parse_graphql_schema = schema_file => { - let schema_str = read_whole_file(schema_file); - switch (Graphql_lexer.make(schema_str) |> Graphql_lexer.consume) { - | Ok(tokens) => - switch (Graphql_parser.make(tokens) |> Graphql_parser_schema.parse) { - | Ok(schema) => schema - | Error(parser_error) => - raise( - ParserError( - switch (parser_error.item) { - | Unexpected_token(token) => - "Unexpected token " ++ Graphql_lexer.string_of_token(token) - | Unexpected_end_of_file => "Unexpected end of file" - | Lexer_error(_) => "Lexer error" - }, - fst(parser_error.span).line, - snd(parser_error.span).line, - ), - ) - } - | Error(_lex_error) => raise(LexerError("lexer error!")) - }; -}; - -let parse_schema = schema_file => { - switch (String.lowercase_ascii(Filename.extension(schema_file))) { - | ".graphql" => parse_graphql_schema(schema_file) - | ".json" => parse_json_schema(schema_file) - | extension => raise(InvalidExtension(extension)) - }; -}; - -/* build_schema: parse json schema and create marshaled schema */ -let build_schema = schema_file => - schema_file |> parse_schema |> create_marshaled_schema(schema_file); - -let build_schema_if_dirty = json_schema => - Dirty_checker.( - { - src: json_schema, - hash_path: get_hash_path(json_schema), - dirty_callback: build_schema, - } - |> check - ); - -let rec read_marshaled_schema = json_schema => { - let marshaled_schema = get_marshaled_path(json_schema); - Log.log("[read marshaled] " ++ marshaled_schema); - switch (open_in_bin(marshaled_schema)) { - | exception (Sys_error(msg)) => - Log.error_log("[read marshaled][Sys_error]: " ++ msg); - raise(Sys_error(msg)); - | file => - let data = - switch (Marshal.from_channel(file)) { - | data => - close_in(file); - data; - | exception _ => - close_in(file); - recovery_build(json_schema); - }; - - data; - }; -} -and recovery_build = json_schema => { - let () = Log.error_log("Marshaled file is broken. Doing recovery build..."); - /* we don't remove marshal file since it might result in race condition, - * we simply let every thread noticed the broken marshal file rewrite to it */ - build_schema_if_dirty(json_schema); - read_marshaled_schema(json_schema); -}; - -/* lazily read schema and check if schema file existed */ -let get_schema = maybe_schema => - lazy( - switch ( - find_file_towards_root( - Ppx_config.root_directory(), - switch (maybe_schema) { - | Some(schema_name) => schema_name - | None => Ppx_config.schema_file() - }, - ) - ) { - | None => raise(Schema_file_not_found) - | Some(json_schema) => - build_schema_if_dirty(json_schema); - read_marshaled_schema(json_schema); - } - ); diff --git a/src/base/result_decoder.re b/src/base/result_decoder.re deleted file mode 100644 index 34e0e3f0..00000000 --- a/src/base/result_decoder.re +++ /dev/null @@ -1,1262 +0,0 @@ -open Graphql_ast; -open Source_pos; -open Schema; - -open Type_utils; -open Generator_utils; -open Result_structure; - -let get_with_default = (value, default_value) => { - switch (value) { - | Some(value) => Some(value) - | None => default_value - }; -}; - -let make_error = (error_marker, map_loc, span, message) => { - let () = error_marker.has_error = true; - Res_error({loc: map_loc(span), message}); -}; - -let has_directive = (~prepend=false, name, directives) => - List.exists( - ({item: {d_name: {item, _}, _}, _}) => - prepend ? item == "bs" ++ name || item == "ppx" ++ name : item == name, - directives, - ); - -let find_directive = (~prepend=false, name, directives) => - switch ( - List.find( - ({item: {d_name: {item, _}, _}, _}) => - prepend ? item == "bs" ++ name || item == "ppx" ++ name : item == name, - directives, - ) - ) { - | d => Some(d) - | exception Not_found => None - }; - -let find_argument = (name, arguments) => - arguments - |> Option.flat_map(({item: arguments, _}) => - switch ( - List.find( - (({item: arg_name, _}, _)) => arg_name == name, - arguments, - ) - ) { - | a => Some(a) - | exception Not_found => None - } - ); - -let find_fragment_arguments = - (directives: list(Source_pos.spanning(Graphql_ast.directive))) => { - switch (directives |> List.find(d => d.item.d_name.item == "arguments")) { - | {item: {d_arguments: Some(arguments), _}, _} => - arguments.item - |> List.fold_left( - acc => - fun - | ({item: name, _}, {item: Iv_variable(variable_name), _}) - when name == variable_name => [ - name, - ...acc, - ] - | _ => acc, - [], - ) - | _ => [] - | exception Not_found => [] - }; -}; - -let get_ppx_as = directives => { - switch (directives |> find_directive(~prepend=true, "As")) { - | None => None - | Some({item: {d_arguments, _}, _}) => - switch (find_argument("type", d_arguments)) { - | Some((_, {item: Iv_string(type_name), _})) => Some(type_name) - | _ => None - } - }; -}; - -let rec unify_type = - ( - ~has_decoder, - // ^^ track if it already has an inline ppxConfig defined - error_marker, - as_record, - existing_record, - omit_future_value, - config, - span, - ty, - selection_set: option(spanning(list(selection))), - ) => - switch (ty) { - | Ntr_nullable(t) => - Res_nullable({ - loc: config.map_loc(span), - inner: - unify_type( - ~has_decoder, - error_marker, - as_record, - existing_record, - omit_future_value, - config, - span, - t, - selection_set, - ), - }) - | Ntr_list(t) => - Res_array({ - loc: config.map_loc(span), - inner: - unify_type( - ~has_decoder, - error_marker, - as_record, - existing_record, - omit_future_value, - config, - span, - t, - selection_set, - ), - }) - | Ntr_named(n) => - switch (lookup_type(config.schema, n)) { - | None => raise_error(config.map_loc, span, "Could not find type " ++ n) - | Some(Scalar({sm_name: "ID", _})) - | Some(Scalar({sm_name: "String", _})) => - Res_string({loc: config.map_loc(span)}) - | Some(Scalar({sm_name: "Int", _})) => - Res_int({loc: config.map_loc(span)}) - | Some(Scalar({sm_name: "Float", _})) => - Res_float({loc: config.map_loc(span)}) - | Some(Scalar({sm_name: "Boolean", _})) => - Res_boolean({loc: config.map_loc(span)}) - | Some(Scalar(_)) when has_decoder => - Res_raw_scalar({loc: config.map_loc(span)}) - | Some(Scalar({sm_name})) => - // if there is no inline @ppxCustom defined, try look for custom fields - // in config - try({ - let decoderModule = Hashtbl.find(Ppx_config.custom_fields(), sm_name); - Res_custom_decoder({ - loc: config.map_loc(span), - ident: decoderModule, - inner: Res_raw_scalar({loc: config.map_loc(span)}), - }); - }) { - | Not_found => Res_raw_scalar({loc: config.map_loc(span)}) - | other => raise(other) - } - | Some(Object(_) as ty) => - unify_selection_set( - error_marker, - as_record, - existing_record, - config, - span, - ty, - selection_set, - ) - | Some(Enum(enum_meta)) => - Res_poly_enum({ - loc: config.map_loc(span), - enum_meta, - omit_future_value, - }) - | Some(Interface(im) as ty) => - unify_interface( - error_marker, - as_record, - config, - span, - im, - ty, - selection_set, - existing_record, - ) - | Some(InputObject(_)) => - make_error( - error_marker, - config.map_loc, - span, - "Can't have fields on input objects", - ) - | Some(Union(um)) => - unify_union( - error_marker, - config, - span, - um, - omit_future_value, - selection_set, - ) - } - } -and unify_interface = - ( - error_marker, - _as_record, - config, - span, - interface_meta, - ty, - selection_set, - existing_record, - ) => - switch (selection_set) { - | None => - make_error( - error_marker, - config.map_loc, - span, - "Interface types must have subselections", - ) - | Some(selection_set) => - let unwrap_type_conds = ((selections, fragments), selection) => - switch (selection) { - | InlineFragment({item: {if_type_condition: None, _}, span}) => - raise_error( - config.map_loc, - span, - "Inline fragments must have a type condition", - ) - | InlineFragment(frag) => (selections, [frag, ...fragments]) - | selection => ([selection, ...selections], fragments) - }; - - let (base_selection_set, fragments) = - List.fold_left(unwrap_type_conds, ([], []), selection_set.item); - - let generate_case = (selection, ty, name) => ( - name, - Res_object({ - loc: config.map_loc(span), - name, - fields: - List.map( - unify_selection( - ~base_type=interface_meta.im_name, - error_marker, - config, - ty, - ), - selection, - ), - type_name: None, - interface_fragments: None, - }), - ); - - let generate_fragment_case = - ({item: {if_type_condition, if_selection_set, _}, _}) => - switch (if_type_condition) { - | Some(if_type_condition) => - let {item, _} = if_selection_set; - let selection = item; - let ty = - switch (lookup_type(config.schema, if_type_condition.item)) { - | Some(ty) => ty - | None => ty - }; - - generate_case(selection, ty, if_type_condition.item); - | None => assert(false) - }; - - let fragment_cases = List.map(generate_fragment_case, fragments); - - let interface = - Res_poly_variant_interface({ - loc: config.map_loc(span), - name: interface_meta.im_name, - fragments: fragment_cases, - }); - - switch (base_selection_set) { - | [] => interface - | _ => - Res_object({ - loc: config.map_loc(span), - name: interface_meta.im_name, - fields: - List.map( - unify_selection( - ~base_type=interface_meta.im_name, - error_marker, - config, - ty, - ), - base_selection_set, - ), - type_name: existing_record, - interface_fragments: Some((interface_meta.im_name, fragment_cases)), - }) - }; - } -and unify_union = - (error_marker, config, span, union_meta, omit_future_value, selection_set) => - switch (selection_set) { - | None => - make_error( - error_marker, - config.map_loc, - span, - "Union types must have subselections", - ) - | Some(selection_set) => - let unwrap_type_conds = selection => - switch (selection) { - | Field({span, _}) - | FragmentSpread({span, _}) => - raise_error( - config.map_loc, - span, - "Only inline fragments can appear on unions", - ) - | InlineFragment({item: {if_type_condition: None, _}, span}) => - raise_error( - config.map_loc, - span, - "Inline fragments must have a type condition", - ) - | InlineFragment(frag) => frag - }; - - let type_cond_name = ({item: {if_type_condition, _}, _}) => - switch (if_type_condition) { - | Some({item, _}) => item - | None => assert(false) - }; - - let generate_case = - ({item: {if_type_condition, if_selection_set, if_directives}, _}) => - switch (if_type_condition) { - | Some(if_type_condition) => - let type_cond_ty = - switch (lookup_type(config.schema, if_type_condition.item)) { - | None => - raise_error( - config.map_loc, - if_type_condition.span, - "Could not find type", - ) - | Some(ty) => ty - }; - - let is_record = has_directive(~prepend=true, "Record", if_directives); - let existing_record = get_ppx_as(if_directives); - - let result_decoder = - unify_selection_set( - error_marker, - is_record, - existing_record, - config, - if_selection_set.span, - type_cond_ty, - Some(if_selection_set), - ); - (if_type_condition, result_decoder); - | None => assert(false) - }; - - let fragments = List.map(unwrap_type_conds, selection_set.item); - let covered_cases = - List.map(type_cond_name, fragments) |> List.sort(compare); - let possible_cases = List.sort(compare, union_meta.um_of_types); - - Res_poly_variant_union({ - loc: config.map_loc(span), - name: union_meta.um_name, - fragments: List.map(generate_case, fragments), - exhaustive: - if (covered_cases == possible_cases) { - Exhaustive; - } else { - Nonexhaustive; - }, - omit_future_value, - }); - } -and unify_variant = (error_marker, config, span, ty, selection_set) => - switch (ty) { - | Ntr_nullable(t) => - Res_nullable({ - loc: config.map_loc(span), - inner: unify_variant(error_marker, config, span, t, selection_set), - }) - | Ntr_list(t) => - Res_array({ - loc: config.map_loc(span), - inner: unify_variant(error_marker, config, span, t, selection_set), - }) - | Ntr_named(n) => - switch (lookup_type(config.schema, n)) { - | None => - make_error( - error_marker, - config.map_loc, - span, - "Could not find type " ++ n, - ) - | Some(Scalar(_)) - | Some(Enum(_)) - | Some(Interface(_)) - | Some(Union(_)) - | Some(InputObject(_)) => - make_error( - error_marker, - config.map_loc, - span, - "Variant fields can only be applied to object types", - ) - | Some(Object(_) as ty) => - switch (selection_set) { - | None => - make_error( - error_marker, - config.map_loc, - span, - "Variant fields need a selection set", - ) - | Some({item, _}) => - let fields = - item - |> List.map(selection => - switch (selection) { - | Field({item, _}) => - switch (lookup_field(ty, item.fd_name.item)) { - | None => - raise_error( - config.map_loc, - span, - "Unknown field on type " ++ type_name(ty), - ) - | Some(field_meta) => - let key = some_or(item.fd_alias, item.fd_name); - let inner_type = - switch (to_native_type_ref(field_meta.fm_field_type)) { - | Ntr_list(_) - | Ntr_named(_) => - raise_error( - config.map_loc, - span, - "Variant field must only contain nullable fields", - ) - | Ntr_nullable(i) => i - }; - ( - key, - unify_type( - ~has_decoder=false, - error_marker, - false, - None, - false, - config, - span, - inner_type, - item.fd_selection_set, - ), - ); - } - | FragmentSpread({span, _}) => - raise_error( - config.map_loc, - span, - "Variant selections can only contain fields", - ) - | InlineFragment({span, _}) => - raise_error( - config.map_loc, - span, - "Variant selections can only contain fields", - ) - } - ); - - Res_poly_variant_selection_set({ - loc: config.map_loc(span), - name: n, - fragments: fields, - }); - } - } - } -and unify_field = (error_marker, config, field_span, ty) => { - let ast_field = field_span.item; - let field_name = ast_field.fd_name.item; - let field_meta = lookup_field(ty, field_name); - let key = some_or(ast_field.fd_alias, ast_field.fd_name); - let key_span = key.span; - let key = key.item; - let is_variant = - has_directive(~prepend=true, "Variant", ast_field.fd_directives); - let is_record = - has_directive(~prepend=true, "Record", ast_field.fd_directives); - let omit_future_value = - has_directive(~prepend=true, "OmitFutureValue", ast_field.fd_directives) - || !config.future_added_value; - let has_decoder = - switch ( - has_directive(~prepend=true, "Decoder", ast_field.fd_directives), - has_directive(~prepend=true, "Custom", ast_field.fd_directives), - has_directive(~prepend=true, "CustomOpt", ast_field.fd_directives), - ) { - | (true, _, _) - | (_, true, _) - | (_, _, true) => true - | (false, false, false) => false - }; - - let existing_record = get_ppx_as(ast_field.fd_directives); - - let has_skip = - has_directive("skip", ast_field.fd_directives) - || has_directive("include", ast_field.fd_directives); - let sub_unifier = - if (is_variant) { - unify_variant(error_marker); - } else { - unify_type( - ~has_decoder, - error_marker, - is_record, - existing_record, - omit_future_value, - ); - }; - - let parser_expr = - switch (field_meta) { - | None => - make_error( - error_marker, - config.map_loc, - ast_field.fd_name.span, - "Unknown field '" ++ field_name ++ "' on type " ++ type_name(ty), - ) - | Some(field_meta) => - let field_ty = to_native_type_ref(field_meta.fm_field_type); - let sub_unifier = - sub_unifier( - config, - field_span.span, - field_ty, - ast_field.fd_selection_set, - ); - if (has_skip && !is_nullable(field_ty)) { - Res_nullable({ - loc: config.map_loc(field_span.span), - inner: sub_unifier, - }); - } else { - sub_unifier; - }; - }; - - let loc = config.map_loc(field_span.span); - let loc_key = config.map_loc(key_span); - let arguments = - switch (ast_field.fd_arguments) { - | None => [] - | Some({item}) => item - }; - switch ( - switch ( - ast_field.fd_directives |> find_directive(~prepend=true, "Decoder"), - ast_field.fd_directives |> find_directive(~prepend=true, "Custom"), - ast_field.fd_directives |> find_directive(~prepend=true, "CustomOpt"), - ) { - | (Some(decoder), _, _) => `Custom(decoder) - | (_, Some(decoder), _) => `Custom(decoder) - | (_, _, Some(decoder)) => `CustomOpt(decoder) - | (None, None, None) => `None - } - ) { - | `None => - Fr_named_field({name: key, loc_key, loc, type_: parser_expr, arguments}) - | `Custom({item: {d_arguments, _}, span}) as result - | `CustomOpt({item: {d_arguments, _}, span}) as result => - switch (find_argument("module", d_arguments)) { - | None => - Fr_named_field({ - name: key, - loc, - loc_key, - type_: - make_error( - error_marker, - config.map_loc, - span, - "ppxDecoder must be given 'module' argument", - ), - arguments, - }) - | Some((_, {item: Iv_string(module_name), span})) => - switch (result, parser_expr) { - | (`Custom(_), Res_nullable({loc, inner: t})) => - Fr_named_field({ - name: key, - loc_key, - loc, - type_: - Res_nullable({ - loc, - inner: - Res_custom_decoder({ - loc: config.map_loc(span), - ident: module_name, - inner: t, - }), - }), - arguments, - }) - | (`CustomOpt(_), Res_nullable({loc, inner: t})) => - Fr_named_field({ - name: key, - loc_key, - loc, - type_: - Res_custom_decoder({ - loc: config.map_loc(span), - ident: module_name, - inner: Res_nullable({loc, inner: t}), - }), - arguments, - }) - | (_, Res_array({loc, inner: t})) => - Fr_named_field({ - name: key, - loc_key, - loc, - type_: - Res_array({ - loc, - inner: - Res_custom_decoder({ - loc: config.map_loc(span), - ident: module_name, - inner: t, - }), - }), - arguments, - }) - | _ => - Fr_named_field({ - name: key, - loc_key, - loc, - type_: - Res_custom_decoder({ - loc: config.map_loc(span), - ident: module_name, - inner: parser_expr, - }), - arguments, - }) - } - | Some((_, {span, _})) => - Fr_named_field({ - name: key, - loc_key, - loc, - type_: - make_error( - error_marker, - config.map_loc, - span, - "The 'module' argument must be a string", - ), - arguments, - }) - } - }; -} -and unify_selection = - (~base_type: string, error_marker, config, ty, selection) => - switch (selection) { - | Field(field_span) => unify_field(error_marker, config, field_span, ty) - | FragmentSpread({item: {fs_directives, fs_name}, span}) => - let arguments = find_fragment_arguments(fs_directives); - switch (find_directive(~prepend=true, "Field", fs_directives)) { - | None => - let key = - fs_name.item - |> String.split_on_char('.') - |> List.rev - |> List.hd - |> String.uncapitalize_ascii; - Fr_fragment_spread({ - key, - loc: config.map_loc(span), - name: fs_name.item, - type_name: Some(base_type), - arguments, - }); - | Some({item: {d_arguments, _}, span}) => - switch (find_argument("name", d_arguments)) { - | None => - raise_error( - config.map_loc, - span, - "ppxField must be given 'name' argument", - ) - | Some((_, {item: Iv_string(key), span})) => - Fr_fragment_spread({ - key, - loc: config.map_loc(span), - name: fs_name.item, - type_name: Some(base_type), - arguments, - }) - | Some(_) => - raise_error( - config.map_loc, - span, - "The 'name' argument must be a string", - ) - } - }; - | InlineFragment({span, _}) => - raise_error( - config.map_loc, - span, - "Inline fragments are not yet supported", - ) - } -and unify_selection_set = - ( - error_marker, - as_record, - existing_record, - config, - span, - ty, - selection_set, - ) => - switch (selection_set) { - | None => - make_error( - error_marker, - config.map_loc, - span, - "Must select subfields on objects", - ) - | Some({item: [FragmentSpread({item: {fs_directives, fs_name}, _})], _}) => - let arguments = find_fragment_arguments(fs_directives); - - if (as_record) { - make_error( - error_marker, - config.map_loc, - span, - "@ppxRecord can not be used with fragment spreads, place @ppxRecord on the fragment definition instead", - ); - } else { - Res_solo_fragment_spread({ - type_name: type_name(ty), - loc: config.map_loc(span), - name: fs_name.item, - arguments, - }); - }; - | Some({item, _}) when as_record => - Res_record({ - loc: config.map_loc(span), - name: type_name(ty), - fields: - List.map( - unify_selection( - ~base_type=type_name(ty), - error_marker, - config, - ty, - ), - item, - ), - type_name: existing_record, - interface_fragments: None, - }) - | Some({item, _}) => - Res_object({ - loc: config.map_loc(span), - name: type_name(ty), - fields: - List.map( - unify_selection( - ~base_type=type_name(ty), - error_marker, - config, - ty, - ), - item, - ), - type_name: existing_record, - interface_fragments: None, - }) - }; - -let unify_operation = (error_marker, config) => - fun - | {item: {o_type: Query, o_selection_set, _}, span} => - unify_selection_set( - error_marker, - false, - None, - config, - span, - query_type(config.schema), - Some(o_selection_set), - ) - | {item: {o_type: Mutation, o_selection_set, _}, span} => - switch (mutation_type(config.schema)) { - | Some(mutation_type) => - unify_selection_set( - error_marker, - false, - None, - config, - span, - mutation_type, - Some(o_selection_set), - ) - | None => - make_error( - error_marker, - config.map_loc, - span, - "This schema does not contain any mutations", - ) - } - | {item: {o_type: Subscription, o_selection_set, _}, span} => - switch (subscription_type(config.schema)) { - | Some(subscription_type) => - unify_selection_set( - error_marker, - false, - None, - config, - span, - subscription_type, - Some(o_selection_set), - ) - | None => - make_error( - error_marker, - config.map_loc, - span, - "This schema does not contain any subscriptions", - ) - }; - -type query_config = { - schema: option(string), - records: option(bool), - objects: option(bool), - inline: option(bool), - template_tag: option(string), - template_tag_location: option(string), - template_tag_import: option(string), - template_tag_return_type: option(string), - tagged_template: option(bool), - template_tag_is_function: option(bool), - future_added_value: option(bool), - extend: option(string), - fragment_in_query: option(Ppx_config.fragment_in_query), - apollo_mode: option(bool), -}; - -let get_template_tag = query_config => { - switch (query_config.tagged_template) { - | Some(false) => (None, None, None) - | _ => - switch ( - get_with_default(query_config.template_tag, Ppx_config.template_tag()), - get_with_default( - query_config.template_tag_location, - Ppx_config.template_tag_location(), - ), - get_with_default( - query_config.template_tag_import, - Ppx_config.template_tag_import(), - ), - ) { - | (Some(tag), Some(location), Some(import)) => ( - Some(tag), - Some(location), - Some(import), - ) - | (None, Some(location), Some(import)) => ( - Some(import), - Some(location), - Some(import), - ) - | (Some(tag), Some(location), None) => ( - Some(tag), - Some(location), - Some("default"), - ) - | (None, Some(location), None) => ( - None, - Some(location), - Some("default"), - ) - | (Some(tag), None, Some(_)) - | (Some(tag), None, None) => (Some(tag), None, None) - | (None, _, _) => (None, None, None) - } - }; -}; - -let get_config_arguments = directives => { - Graphql_ast.( - directives - |> filter_map( - fun - | { - item: { - d_name: {item: "ppxConfig"}, - d_arguments: Some({item: arguments}), - }, - } => - Some(arguments) - | _ => None, - ) - |> List.concat - ); -}; - -/** - Allow configuration per definition using directives -*/ - -let config_arguments_to_config = - (existing_query_config, directive_arguments): query_config => { - Graphql_ast.( - directive_arguments - |> List.fold_left( - config => - fun - | ({item: "schema"}, {item: Iv_string(value)}) => { - ...config, - schema: Some(value), - } - | ({item: "records"}, {item: Iv_boolean(value)}) => { - ...config, - records: Some(value), - } - | ({item: "objects"}, {item: Iv_boolean(value)}) => { - ...config, - objects: Some(value), - } - | ({item: "inline"}, {item: Iv_boolean(value)}) => { - ...config, - inline: Some(value), - } - | ({item: "templateTag"}, {item: Iv_string(value)}) => { - ...config, - template_tag: Some(value), - } - | ({item: "templateTagLocation"}, {item: Iv_string(value)}) => { - ...config, - template_tag_location: Some(value), - } - | ({item: "templateTagImport"}, {item: Iv_string(value)}) => { - ...config, - template_tag_import: Some(value), - } - | ({item: "templateTagReturnType"}, {item: Iv_string(value)}) => { - ...config, - template_tag_return_type: Some(value), - } - | ({item: "taggedTemplate"}, {item: Iv_boolean(value)}) => { - ...config, - tagged_template: Some(value), - } - | ({item: "templateTagIsFunction"}, {item: Iv_boolean(value)}) => { - ...config, - template_tag_is_function: Some(value), - } - | ({item: "futureAddedValue"}, {item: Iv_boolean(value)}) => { - ...config, - future_added_value: Some(value), - } - | ({item: "extend"}, {item: Iv_string(value)}) => { - ...config, - extend: Some(value), - } - | ({item: "fragmentInQuery"}, {item: Iv_string("include")}) => { - ...config, - fragment_in_query: Some(Include), - } - | ({item: "fragmentInQuery"}, {item: Iv_string("exclude")}) => { - ...config, - fragment_in_query: Some(Exclude), - } - | ({item: "apollo_mode"}, {item: Iv_boolean(value)}) => { - ...config, - apollo_mode: Some(value), - } - | _ => config, - existing_query_config, - ) - ); -}; - -let to_output_config = - (~map_loc, ~delimiter, ~document, (definition, query_config)) => { - let schema = Lazy.force(Read_schema.get_schema(query_config.schema)); - let definition = - switch ( - { - ( - if (switch (query_config.apollo_mode) { - | None => Ppx_config.apollo_mode() - | Some(apollo_mode) => apollo_mode - }) { - [definition] - |> Ast_transforms.add_typename_to_selection_set(schema); - } else { - [definition]; - } - ) - |> Ast_transforms.remove_typename_from_union(schema); - } - ) { - | [definition] => definition - | _ => definition - }; - - let template_tag = get_template_tag(query_config); - - ( - definition, - { - Generator_utils.map_loc, - delimiter, - full_document: document, - inline: - switch (query_config.inline) { - | Some(value) => value - | None => false - }, - future_added_value: - switch (query_config.future_added_value) { - | Some(value) => value - | None => Ppx_config.future_added_value() - }, - /* the only call site of schema, make it lazy! */ - schema, - template_tag, - template_tag_return_type: - get_with_default( - query_config.template_tag_return_type, - Ppx_config.template_tag_return_type(), - ), - template_tag_is_function: - get_with_default( - query_config.template_tag_is_function, - Ppx_config.template_tag_is_function(), - ), - extend: query_config.extend, - fragment_in_query: - switch (query_config.fragment_in_query) { - | Some(value) => value - | None => Ppx_config.fragment_in_query() - }, - native: Ppx_config.native(), - }, - ); -}; - -let rec generate_config = - (~map_loc, ~delimiter, ~initial_query_config, document) => { - switch (document) { - | [Operation({item: {o_directives: directives}}) as definition, ...rest] - | [Fragment({item: {fg_directives: directives}}) as definition, ...rest] => - let query_config = - directives - |> get_config_arguments - |> config_arguments_to_config(initial_query_config); - - [ - to_output_config( - ~document, - ~map_loc, - ~delimiter, - (definition, query_config), - ), - ...generate_config(~map_loc, ~delimiter, ~initial_query_config, rest), - ]; - | [] => [] - }; -}; - -let rec unify_document_schema = document => { - let error_marker = {Generator_utils.has_error: false}; - switch (document) { - | [ - (Operation({item: {o_variable_definitions, _}, _} as op), config), - ...rest, - ] => - let structure = unify_operation(error_marker, config, op); - [ - ( - Def_operation({ - variable_definitions: o_variable_definitions, - has_error: error_marker.has_error, - operation: op, - inner: structure, - }), - config, - ), - ...unify_document_schema(rest), - ]; - | [ - ( - Fragment( - { - item: { - fg_name, - fg_selection_set, - fg_type_condition, - fg_directives, - }, - span, - } as fg, - ), - config, - ), - ...rest, - ] => [ - { - open Result; - let with_decoder = - switch ( - switch ( - fg_directives |> find_directive(~prepend=true, "Decoder"), - fg_directives |> find_directive(~prepend=true, "Custom"), - ) { - | (Some(decoder), _) - | (_, Some(decoder)) => Some(decoder) - | (None, None) => None - } - ) { - | None => Ok(None) - | Some({item: {d_arguments, _}, span}) as result => - switch (result, find_argument("module", d_arguments)) { - | (_, None) => - Error( - make_error( - error_marker, - config.map_loc, - span, - "ppxDecoder must be given 'module' argument", - ), - ) - | (_, Some((_, {item: Iv_string(ident), span}))) => - Ok( - Some( - structure => - Res_custom_decoder({ - loc: config.map_loc(span), - ident, - inner: structure, - }), - ), - ) - | (_, Some((_, {span, _}))) => - Error( - make_error( - error_marker, - config.map_loc, - span, - "The 'module' argument must be a string", - ), - ) - } - }; - - let is_record = has_directive(~prepend=true, "Record", fg_directives); - - let argumentDefinitions = fg.item.fg_variable_definitions; - - ( - switch (Schema.lookup_type(config.schema, fg_type_condition.item)) { - | None => - Def_fragment({ - name: fg_name.item, - variable_definitions: argumentDefinitions, - has_error: true, - fragment: fg, - type_name: None, - inner: - make_error( - error_marker, - config.map_loc, - fg_type_condition.span, - Printf.sprintf( - "Unknown type \"%s\"", - fg_type_condition.item, - ), - ), - }) - | Some(ty) => - let existing_record = get_ppx_as(fg_directives); - let structure = - unify_selection_set( - error_marker, - is_record, - existing_record, - config, - span, - ty, - Some(fg_selection_set), - ); - - let argumentDefinitions = fg.item.fg_variable_definitions; - - switch (with_decoder) { - | Error(err) => - Def_fragment({ - name: fg_name.item, - variable_definitions: argumentDefinitions, - has_error: true, - fragment: fg, - type_name: existing_record, - inner: err, - }) - | Ok(decoder) => - Def_fragment({ - name: fg_name.item, - variable_definitions: argumentDefinitions, - has_error: error_marker.has_error, - fragment: fg, - type_name: existing_record, - inner: - switch (decoder) { - | Some(decoder) => decoder(structure) - | None => structure - }, - }) - }; - }, - config, - ); - }, - ...unify_document_schema(rest), - ] - | [] => [] - }; -}; diff --git a/src/base/result_decoder.rei b/src/base/result_decoder.rei deleted file mode 100644 index 6e1b58f0..00000000 --- a/src/base/result_decoder.rei +++ /dev/null @@ -1,38 +0,0 @@ -type query_config = { - schema: option(string), - records: option(bool), - objects: option(bool), - inline: option(bool), - template_tag: option(string), - template_tag_location: option(string), - template_tag_import: option(string), - template_tag_return_type: option(string), - tagged_template: option(bool), - template_tag_is_function: option(bool), - future_added_value: option(bool), - extend: option(string), - fragment_in_query: option(Ppx_config.fragment_in_query), - apollo_mode: option(bool), -}; - -let generate_config: - ( - ~map_loc: ((Source_pos.source_position, Source_pos.source_position)) => - Source_pos.ast_location, - ~delimiter: option(string), - ~initial_query_config: query_config, - list(Graphql_ast.definition) - ) => - list((Graphql_ast.definition, Generator_utils.output_config)); -/** - * Takes a list of the AST of the GraphQL definitions (operations or fragments) - * and transforms that into a list of result structures. These result structures - * form the basis to generate the reason code for: - * - `query` variable - * - `parse` function - * - `serialize` function - * - `makeVariables` function -*/ -let unify_document_schema: - list((Graphql_ast.definition, Generator_utils.output_config)) => - list((Result_structure.definition, Generator_utils.output_config)); diff --git a/src/base/result_ext.re b/src/base/result_ext.re deleted file mode 100644 index f7599cf1..00000000 --- a/src/base/result_ext.re +++ /dev/null @@ -1,21 +0,0 @@ -open Result; - -let flat_map = f => - fun - | Error(e) => Error(e) - | Ok(v) => f(v); - -let map = f => - fun - | Error(e) => Error(e) - | Ok(v) => Ok(f(v)); - -let replace = v => - fun - | Error(e) => Error(e) - | Ok(_) => Ok(v); - -let make_t2 = (a, b) => (a, b); -let make_t3 = (a, b, c) => (a, b, c); -let make_t4 = (a, b, c, d) => (a, b, c, d); -let make_t5 = (a, b, c, d, e) => (a, b, c, d, e); diff --git a/src/base/result_structure.re b/src/base/result_structure.re deleted file mode 100644 index 4932e2ad..00000000 --- a/src/base/result_structure.re +++ /dev/null @@ -1,131 +0,0 @@ -type exhaustive_flag = - | Exhaustive - | Nonexhaustive; - -type loc = Source_pos.ast_location; -type name = Source_pos.spanning(string); - -type field_result = - | Fr_named_field({ - name: string, - loc_key: loc, - loc, - type_: t, - arguments: Graphql_ast.arguments, - }) - | Fr_fragment_spread({ - key: string, - loc, - name: string, - type_name: option(string), - arguments: list(string), - }) -and t = - | Res_nullable({ - loc, - inner: t, - }) - | Res_array({ - loc, - inner: t, - }) - | Res_id({loc}) - | Res_string({loc}) - | Res_int({loc}) - | Res_float({loc}) - | Res_boolean({loc}) - | Res_raw_scalar({loc}) - | Res_poly_enum({ - loc, - enum_meta: Schema.enum_meta, - omit_future_value: bool, - }) - | Res_custom_decoder({ - loc, - ident: string, - inner: t, - }) - | Res_record({ - loc, - name: string, - fields: list(field_result), - type_name: option(string), - interface_fragments: option((string, list((string, t)))), - }) - | Res_object({ - loc, - name: string, - fields: list(field_result), - type_name: option(string), - interface_fragments: option((string, list((string, t)))), - }) - | Res_poly_variant_selection_set({ - loc, - name: string, - fragments: list((name, t)), - }) - | Res_poly_variant_union({ - loc, - name: string, - fragments: list((name, t)), - exhaustive: exhaustive_flag, - omit_future_value: bool, - }) - | Res_poly_variant_interface({ - loc, - name: string, - fragments: list((string, t)), - }) - | Res_solo_fragment_spread({ - loc, - name: string, - type_name: string, - arguments: list(string), - }) - | Res_error({ - loc, - message: string, - }); - -type definition = - | Def_fragment({ - name: string, - variable_definitions: - option(Source_pos.spanning(Graphql_ast.variable_definitions)), - has_error: bool, - fragment: Source_pos.spanning(Graphql_ast.fragment), - type_name: option(string), // decodes to a custom type (ppxAs) - inner: t, - }) - | Def_operation({ - variable_definitions: - option(Source_pos.spanning(Graphql_ast.variable_definitions)), - has_error: bool, - operation: Source_pos.spanning(Graphql_ast.operation), - inner: t, - }); - -let res_loc = - fun - | Res_nullable({loc}) - | Res_array({loc}) - | Res_id({loc}) - | Res_string({loc}) - | Res_int({loc}) - | Res_float({loc}) - | Res_boolean({loc}) - | Res_raw_scalar({loc}) - | Res_poly_enum({loc}) - | Res_custom_decoder({loc}) - | Res_record({loc}) - | Res_object({loc}) - | Res_poly_variant_selection_set({loc}) - | Res_poly_variant_union({loc}) - | Res_poly_variant_interface({loc}) - | Res_solo_fragment_spread({loc}) - | Res_error({loc}) => loc; - -let can_be_absent_as_field = - fun - | Res_nullable(_) => true - | _ => false; diff --git a/src/base/result_structure.rei b/src/base/result_structure.rei deleted file mode 100644 index 2ba8f59a..00000000 --- a/src/base/result_structure.rei +++ /dev/null @@ -1,109 +0,0 @@ -type exhaustive_flag = - | Exhaustive - | Nonexhaustive; - -type loc = Source_pos.ast_location; -type name = Source_pos.spanning(string); - -type field_result = - | Fr_named_field({ - name: string, - loc_key: loc, - loc, - type_: t, - arguments: Graphql_ast.arguments, - }) - | Fr_fragment_spread({ - key: string, - loc, - name: string, - type_name: option(string), - arguments: list(string), - }) -and t = - | Res_nullable({ - loc, - inner: t, - }) - | Res_array({ - loc, - inner: t, - }) - | Res_id({loc}) - | Res_string({loc}) - | Res_int({loc}) - | Res_float({loc}) - | Res_boolean({loc}) - | Res_raw_scalar({loc}) - | Res_poly_enum({ - loc, - enum_meta: Schema.enum_meta, - omit_future_value: bool, - }) - | Res_custom_decoder({ - loc, - ident: string, - inner: t, - }) - | Res_record({ - loc, - name: string, - fields: list(field_result), - type_name: option(string), - interface_fragments: option((string, list((string, t)))), - }) - | Res_object({ - loc, - name: string, - fields: list(field_result), - type_name: option(string), - interface_fragments: option((string, list((string, t)))), - }) - | Res_poly_variant_selection_set({ - loc, - name: string, - fragments: list((name, t)), - }) - | Res_poly_variant_union({ - loc, - name: string, - fragments: list((name, t)), - exhaustive: exhaustive_flag, - omit_future_value: bool, - }) - | Res_poly_variant_interface({ - loc, - name: string, - fragments: list((string, t)), - }) - | Res_solo_fragment_spread({ - loc, - name: string, - type_name: string, - arguments: list(string), - }) - | Res_error({ - loc, - message: string, - }); - -type definition = - | Def_fragment({ - name: string, - variable_definitions: - option(Source_pos.spanning(Graphql_ast.variable_definitions)), - has_error: bool, - fragment: Source_pos.spanning(Graphql_ast.fragment), - type_name: option(string), // decodes to a custom type (ppxAs) - inner: t, - }) - | Def_operation({ - variable_definitions: - option(Source_pos.spanning(Graphql_ast.variable_definitions)), - has_error: bool, - operation: Source_pos.spanning(Graphql_ast.operation), - inner: t, - }); - -let res_loc: t => loc; -let can_be_absent_as_field: t => bool; diff --git a/src/base/rule_all_required_arguments.re b/src/base/rule_all_required_arguments.re deleted file mode 100644 index 4bbf5d00..00000000 --- a/src/base/rule_all_required_arguments.re +++ /dev/null @@ -1,51 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Source_pos; - open Graphql_ast; - open Schema; - - include AbstractVisitor; - - let enter_field = (_self, ctx, def) => { - let field_meta = - Context.parent_type(ctx) - |> Option.flat_map(t => Schema.lookup_field(t, def.item.fd_name.item)); - - let provided_args = - def.item.fd_arguments - |> Option.map(span => span.item) - |> Option.get_or_else([]) - |> List.map(arg => (arg |> fst).item); - - let expected_args = - field_meta - |> Option.map(fm => fm.fm_arguments) - |> Option.get_or_else([]) - |> List.filter(arg => - switch (arg.am_arg_type, arg.am_default_value) { - | (NonNull(_), None) => true - | (NonNull(_), Some(_)) - | _ => false - } - ); - - expected_args - |> List.iter(arg => { - let provided = - provided_args |> List.exists(arg_name => arg_name == arg.am_name); - if (!provided) { - let message = - Printf.sprintf( - "Argument \"%s\" on field \"%s\" not provided", - arg.am_name, - def.item.fd_name.item, - ); - - Context.push_error(ctx, def.item.fd_name.span, message); - }; - }); - }; - - type t = unit; - let make_self = () => (); -}; diff --git a/src/base/rule_deprecated_fields.re b/src/base/rule_deprecated_fields.re deleted file mode 100644 index 09c770e6..00000000 --- a/src/base/rule_deprecated_fields.re +++ /dev/null @@ -1,32 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Source_pos; - open Graphql_ast; - - include AbstractVisitor; - - type t = unit; - let make_self = () => (); - - let enter_field = (_, ctx, def) => { - let field_meta = - Context.parent_type(ctx) - |> Option.flat_map(t => Schema.lookup_field(t, def.item.fd_name.item)); - - field_meta - |> Option.map((field: Schema.field_meta) => { - switch (field.fm_deprecation_reason) { - | None => () - | Some(reason) => - let message = - Printf.sprintf( - "Field \"%s\" has been deprecated. Reason: %s", - field.fm_name, - reason, - ); - Context.push_warning(ctx, def.span, message); - } - }) - |> ignore; - }; -}; diff --git a/src/base/rule_known_argument_names.re b/src/base/rule_known_argument_names.re deleted file mode 100644 index 5b54869f..00000000 --- a/src/base/rule_known_argument_names.re +++ /dev/null @@ -1,74 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Source_pos; - open Graphql_ast; - open Schema; - - type arg_pos = - | Directive(string) - | Field(string, string); - - type known_args = option((arg_pos, list(argument_meta))); - - type t = ref(known_args); - include Traversal_utils.AbstractVisitor; - - let make_self = () => ref(None); - - let report_error = (ctx, span, pos, arg_name) => { - let msg = - switch (pos) { - | Directive(dir_name) => - Printf.sprintf( - "Unknown argument \"%s\" on directive \"%s\"", - arg_name, - dir_name, - ) - | Field(field_name, type_name) => - Printf.sprintf( - "Unknown argument \"%s\" on field \"%s\" of type \"%s\"", - arg_name, - field_name, - type_name, - ) - }; - - Context.push_error(ctx, span, msg); - }; - - let enter_argument = (known_args, ctx, (name, _, _)) => - switch (known_args^) { - | None => () - | Some((pos, known_args)) => - if ((!) @@ List.exists(am => am.am_name == name.item, known_args)) { - report_error(ctx, name.span, pos, name.item); - } - }; - - let enter_directive = (known_args, ctx, directive) => - known_args := - Schema.lookup_directive(ctx.schema, directive.item.d_name.item) - |> Option.map(dm => (Directive(dm.dm_name), dm.dm_arguments)); - - let exit_directive = (known_args, _, _) => known_args := None; - - let enter_field = (known_args, ctx, field) => { - let field_name = field.item.fd_name.item; - known_args := - ( - switch (Context.parent_type(ctx)) { - | Some(parent_type) => - Schema.lookup_field(parent_type, field_name) - |> Option.map(f => - ( - Field(field_name, Schema.type_name(parent_type)), - f.fm_arguments, - ) - ) - | None => None - } - ); - }; - - let exit_field = (known_args, _, _) => known_args := None; -}; diff --git a/src/base/rule_no_invalid_default_values.re b/src/base/rule_no_invalid_default_values.re deleted file mode 100644 index e93bd0f0..00000000 --- a/src/base/rule_no_invalid_default_values.re +++ /dev/null @@ -1,153 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Graphql_ast; - open Source_pos; - open Type_utils.Generic; - - include AbstractVisitor; - - type t = { - variable_types: Hashtbl.t(string, tree), - mutable arg_type: option((spanning(string), tree)), - }; - let make_self = () => {variable_types: Hashtbl.create(0), arg_type: None}; - - let enter_operation_definition = (self, ctx, def) => { - let () = Hashtbl.clear(self.variable_types); - switch (def.item.o_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, {vd_type: {item: type_}})) => - Hashtbl.add( - self.variable_types, - name.item, - type_ |> from_graphql_ast_tr(~schema=ctx.schema), - ), - item, - ) - }; - }; - - let enter_fragment_definition = (self, ctx, def) => { - let () = Hashtbl.clear(self.variable_types); - switch (def.item.fg_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, {vd_type: {item: type_}})) => - Hashtbl.add( - self.variable_types, - name.item, - type_ |> from_graphql_ast_tr(~schema=ctx.schema), - ), - item, - ) - }; - }; - - let enter_argument = - ( - self, - ctx, - (name: spanning(string), arg_type: option(Schema.type_ref), _value), - ) => { - self.arg_type = - arg_type - |> Option.map(from_schema_tr(~schema=ctx.schema)) - |> Option.map(tr => (name, tr)); - }; - - let check_apply = - ( - ctx, - tr1: tree, - tr2: tree, - arg_name: spanning(string), - name: spanning(string), - ) => - switch (can_apply(tr1, tr2)) { - | Ok => () - | Unequal => - Traversal_utils.Context.push_error( - ctx, - name.span, - generate_error( - MismatchedTypes(tr1 |> string_of_tree, tr2 |> string_of_tree), - ), - ) - | RequiredMismatch => - Traversal_utils.Context.push_error( - ctx, - name.span, - generate_error(MismatchedRequiredVar(arg_name.item, name.item)), - ) - }; - - let enter_variable_value = (self, ctx, name) => { - switch ( - self.arg_type, - try(Some((name, Hashtbl.find(self.variable_types, name.item)))) { - | Not_found => None - }, - ) { - | (None, _) => () - | (Some((arg_name, NonNull(_))), None) => - // TODO: This could be redundant now, check if rule_all_required_arguments.re is still necessary (or if it covers more cases like Fragments, etc.) - Traversal_utils.Context.push_error( - ctx, - name.span, - generate_error(RequiredVariableMissing(arg_name.item, name.item)), - ) - | (Some((_, T(_))), None) - | (Some((_, List(_))), None) => () - | (Some((arg_name, arg_type)), Some((_v_name, value_type))) => - check_apply(ctx, arg_type, value_type, arg_name, name) - }; - }; - - let check_pre_value = (~reset=false, generic, self, ctx, value) => { - switch (self.arg_type) { - | Some((arg_name, arg_type)) => - check_apply( - ctx, - arg_type, - NonNull(T(generic)), - arg_name, - Source_pos.replace(value, ""), - ) - | None => () - }; - if (reset) { - self.arg_type = None; - }; - }; - - let enter_int_value = check_pre_value(Int); - let enter_float_value = check_pre_value(Float); - let enter_string_value = check_pre_value(String); - let enter_bool_value = check_pre_value(Boolean); - let enter_object_value = check_pre_value(~reset=true, InputObject); - // TODO: For Enum, check enum fields from schema - let enter_enum_value = check_pre_value(~reset=true, Enum); - let enter_list_value = (self, ctx, value) => { - switch (self.arg_type) { - | Some((_, NonNull(List(_)))) - | Some((_, List(_))) - | Some((_, NonNull(T(EmptyList)))) - | Some((_, T(EmptyList))) - | None => () - | Some((_name, arg_type)) => - Traversal_utils.Context.push_error( - ctx, - value.span, - generate_error(MismatchedTypes(arg_type |> string_of_tree, "List")), - ) - }; - // We are done, as the above functions also apply to list object fields - self.arg_type = None; - }; - let exit_argument = (self, _, _) => { - self.arg_type = None; - }; -}; diff --git a/src/base/rule_no_invalid_input_object_values.re b/src/base/rule_no_invalid_input_object_values.re deleted file mode 100644 index a27d6208..00000000 --- a/src/base/rule_no_invalid_input_object_values.re +++ /dev/null @@ -1,169 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Graphql_ast; - open Source_pos; - open Type_utils.Generic; - - include AbstractVisitor; - - type t = {variable_types: Hashtbl.t(string, tree)}; - let make_self = () => {variable_types: Hashtbl.create(0)}; - - let enter_operation_definition = (self, ctx, def) => { - let () = Hashtbl.clear(self.variable_types); - switch (def.item.o_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, {vd_type: {item: type_}})) => - Hashtbl.add( - self.variable_types, - name.item, - type_ |> from_graphql_ast_tr(~schema=ctx.schema), - ), - item, - ) - }; - }; - - let enter_fragment_definition = (self, ctx, def: spanning(fragment)) => { - let () = Hashtbl.clear(self.variable_types); - switch (def.item.fg_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, {vd_type: {item: type_}})) => - Hashtbl.add( - self.variable_types, - name.item, - type_ |> from_graphql_ast_tr(~schema=ctx.schema), - ), - item, - ) - }; - }; - - let rec parse_input_object = - ( - self, - ctx, - top_pos: spanning(string), - type_: Schema.type_ref, - value: spanning(input_value), - ) => { - switch ( - type_ |> Schema.innermost_name |> Schema.lookup_type(ctx.schema), - value.item, - ) { - | ( - Some(InputObject(obj_meta)), - Iv_list([{item: Iv_object(value), _}, ..._]), - ) - // | ( - // Some(InputObject(obj_meta)), - // Iv_list([{item: Iv_object(value), _}, ..._]), - // ) - | (Some(InputObject(obj_meta)), Iv_object(value)) => - obj_meta.iom_input_fields - |> List.iter(({Schema.am_arg_type, am_name}) => { - let value_field = - value - |> List.find_opt(((name, _value)) => {name.item == am_name}); - - switch (value_field) { - | Some(value_field) => - parse_input_object( - self, - ctx, - fst(value_field), - am_arg_type, - snd(value_field), - ) - | None => () - }; - - switch ( - am_arg_type |> from_schema_tr(~schema=ctx.schema), - value_field - |> Option.map(((name, value)) => - ( - switch (value.item) { - | Iv_variable(val_name) => - Source_pos.replace(name, val_name) - | _ => name - }, - Source_pos.replace( - value, - value.item - |> from_graphql_ast_iv( - ~arguments=self.variable_types, - ~schema=ctx.schema, - ), - ), - ) - ), - ) { - | (NonNull(_), None) => - Traversal_utils.Context.push_error( - ctx, - top_pos.span, - generate_error(RequiredFieldMissing(top_pos.item, am_name)), - ) - | (T(_), None) - | (List(_), None) => () - | (key_type, Some((name, value))) => - switch (can_apply(key_type, value.item)) { - | Ok => () - | Unequal => - Traversal_utils.Context.push_error( - ctx, - value.span, - generate_error( - MismatchedTypes( - key_type |> string_of_tree, - value.item |> string_of_tree, - ), - ), - ) - | RequiredMismatch => - Traversal_utils.Context.push_error( - ctx, - name.span, - generate_error(MismatchedRequiredVar(am_name, name.item)), - ) - } - }; - }) - | _ => () - }; - }; - - let enter_argument = - ( - self, - ctx, - ( - name: spanning(string), - arg_type: option(Schema.type_ref), - value: spanning(input_value), - ), - ) => { - switch (arg_type |> Option.map(from_schema_tr(~schema=ctx.schema))) { - | Some(T(InputObject)) - | Some(NonNull(T(InputObject))) - | Some(List(T(InputObject))) - | Some(NonNull(List(T(InputObject)))) => - parse_input_object( - self, - ctx, - name, - arg_type - |> Option.unsafe_unwrap( - ~reason="Can't fidn argument name: " ++ name.item, - ), - value, - ) - | _ => () - }; - }; -}; diff --git a/src/base/rule_no_undefined_variables.re b/src/base/rule_no_undefined_variables.re deleted file mode 100644 index 21050dca..00000000 --- a/src/base/rule_no_undefined_variables.re +++ /dev/null @@ -1,57 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Source_pos; - open Graphql_ast; - - include AbstractVisitor; - - type opts = {mutable active: bool}; - type t = (opts, Hashtbl.t(string, span)); - - let make_self = () => ({active: false}, Hashtbl.create(0)); - - let enter_operation_definition = ((opts, self), _, def) => { - opts.active = true; - let () = Hashtbl.clear(self); - switch (def.item.o_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, _)) => Hashtbl.add(self, name.item, name.span), - item, - ) - }; - }; - - let exit_operation_definition = ((opts, _), _, _) => { - opts.active = false; - }; - - let enter_fragment_definition = ((opts, self), _, def) => { - opts.active = true; - let () = Hashtbl.clear(self); - switch (def.item.fg_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, _)) => Hashtbl.add(self, name.item, name.span), - item, - ) - }; - }; - - let exit_fragment_definition = ((opts, _), _, _) => { - opts.active = false; - }; - - let enter_variable_value = ((opts, self), ctx, def) => - if (opts.active && !Hashtbl.mem(self, def.item)) { - let message = - Printf.sprintf( - "Variable \"%s\" not found in operation. Make sure it's defined!", - def.item, - ); - - Context.push_error(ctx, def.span, message); - }; -}; diff --git a/src/base/rule_no_unused_variables.re b/src/base/rule_no_unused_variables.re deleted file mode 100644 index 65dad61a..00000000 --- a/src/base/rule_no_unused_variables.re +++ /dev/null @@ -1,73 +0,0 @@ -module Visitor: Traversal_utils.VisitorSig = { - open Traversal_utils; - open Source_pos; - open Graphql_ast; - - include AbstractVisitor; - - type t = Hashtbl.t(string, span); - - let make_self = () => Hashtbl.create(0); - - let enter_fragment_definition = (self, _, def) => { - let () = Hashtbl.clear(self); - switch (def.item.fg_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, _)) => Hashtbl.add(self, name.item, name.span), - item, - ) - }; - }; - - let exit_fragment_definition = (self, ctx, def) => - Hashtbl.iter( - (v, span) => { - let message = - Printf.sprintf( - "Variable \"$%s\" is never used in fragment \"%s\"", - v, - def.item.fg_name.item, - ); - - Context.push_error(ctx, span, message); - }, - self, - ); - - let enter_operation_definition = (self, _, def) => { - let () = Hashtbl.clear(self); - switch (def.item.o_variable_definitions) { - | None => () - | Some({item, _}) => - List.iter( - ((name, _)) => Hashtbl.add(self, name.item, name.span), - item, - ) - }; - }; - - let exit_operation_definition = (self, ctx, def) => - Hashtbl.iter( - (v, span) => - if (v.[0] != '_') { - let message = - switch (def.item.o_name) { - | None => Printf.sprintf("Variable \"$%s\" is never used.", v) - | Some(name) => - Printf.sprintf( - "Variable \"$%s\" is never used in operation \"%s\"", - v, - name.item, - ) - }; - - Context.push_error(ctx, span, message); - }, - self, - ); - - let enter_variable_value = (self, _, name) => - Hashtbl.remove(self, name.item); -}; diff --git a/src/base/schema.re b/src/base/schema.re deleted file mode 100644 index dca82917..00000000 --- a/src/base/schema.re +++ /dev/null @@ -1,239 +0,0 @@ -type type_ref = - | Named(string) - | NonNull(type_ref) - | List(type_ref); - -type argument_meta = { - am_name: string, - am_description: option(string), - am_arg_type: type_ref, - am_default_value: option(string), -}; - -type field_meta = { - fm_name: string, - fm_description: option(string), - fm_arguments: list(argument_meta), - fm_field_type: type_ref, - fm_deprecation_reason: option(string), -}; - -type scalar_meta = { - sm_name: string, - sm_description: option(string), -}; - -type object_meta = { - om_name: string, - om_description: option(string), - om_fields: list(field_meta), - om_interfaces: list(string), -}; - -type enum_value_meta = { - evm_name: string, - evm_description: option(string), - evm_deprecation_reason: option(string), -}; - -type enum_meta = { - em_name: string, - em_description: option(string), - em_values: list(enum_value_meta), -}; - -type interface_meta = { - im_name: string, - im_description: option(string), - im_fields: list(field_meta), -}; - -type union_meta = { - um_name: string, - um_description: option(string), - um_of_types: list(string), -}; - -type input_object_meta = { - iom_name: string, - iom_description: option(string), - iom_input_fields: list(argument_meta), -}; - -type type_meta = - | Scalar(scalar_meta) - | Object(object_meta) - | Enum(enum_meta) - | Interface(interface_meta) - | Union(union_meta) - | InputObject(input_object_meta); - -type schema_meta = { - sm_query_type: string, - sm_mutation_type: option(string), - sm_subscription_type: option(string), -}; - -type directive_location = - | Dl_query - | Dl_mutation - | Dl_subscription - | Dl_field - | Dl_fragment_definition - | Dl_fragment_spread - | Dl_inline_fragment - | Dl_unknown; - -type directive_meta = { - // It would be great to add this to the schema, - // but when the schema changes, there will be a breaking change - // so the filename of the schema cache need to change as well, - // to avoid a crash - // dm_description: option(string), - dm_name: string, - dm_locations: list(directive_location), - dm_arguments: list(argument_meta), -}; - -type t = { - meta: schema_meta, - type_map: Hashtbl.t(string, type_meta), - directive_map: Hashtbl.t(string, directive_meta), -}; - -let query_type = s => Hashtbl.find(s.type_map, s.meta.sm_query_type); -let mutation_type = s => - switch (s.meta.sm_mutation_type) { - | Some(n) => Some(Hashtbl.find(s.type_map, n)) - | None => None - }; -let subscription_type = s => - switch (s.meta.sm_subscription_type) { - | Some(n) => Some(Hashtbl.find(s.type_map, n)) - | None => None - }; - -exception Invalid_type(string); -exception Inconsistent_schema(string); - -let lookup_implementations = (schema, im) => { - let all_objects_implementing_interface = (_, value, acc) => - switch (value) { - | Object({om_interfaces, _}) as o - when List.exists(n => n == im.im_name, om_interfaces) => [ - o, - ...acc, - ] - | _ => acc - }; - - Hashtbl.fold(all_objects_implementing_interface, schema.type_map, []); -}; - -let lookup_field = (ty, name) => { - let find_field = fs => - switch (List.find_all(f => f.fm_name == name, fs)) { - | [] => None - | [x] => Some(x) - | _ => raise @@ Inconsistent_schema("Multiple fields named " ++ name) - }; - - switch (ty) { - | Object({om_fields, _}) => find_field(om_fields) - | Interface({im_fields, _}) => find_field(im_fields) - | Scalar({sm_name, _}) => - raise @@ Invalid_type("Type " ++ sm_name ++ " doesn't have any fields") - | Enum({em_name, _}) => - raise @@ Invalid_type("Type " ++ em_name ++ " doesn't have any fields") - | Union({um_name, _}) => - raise @@ Invalid_type("Type " ++ um_name ++ " doesn't have any fields") - | InputObject({iom_name, _}) => - raise @@ Invalid_type("Type " ++ iom_name ++ " doesn't have any fields") - }; -}; - -let lookup_input_field = (ty, name) => { - let find_field = fs => - switch (List.find_all(am => am.am_name == name, fs)) { - | [] => None - | [x] => Some(x) - | _ => - raise @@ Inconsistent_schema("Multiple input fields named " ++ name) - }; - - switch (ty) { - | Object({om_name: name, _}) - | Interface({im_name: name, _}) - | Scalar({sm_name: name, _}) - | Enum({em_name: name, _}) - | Union({um_name: name, _}) => - raise @@ Invalid_type("Type " ++ name ++ " doesn't have any input fields") - | InputObject({iom_input_fields, _}) => find_field(iom_input_fields) - }; -}; - -let type_name = ty => - switch (ty) { - | Scalar({sm_name, _}) => sm_name - | Object({om_name, _}) => om_name - | Enum({em_name, _}) => em_name - | Interface({im_name, _}) => im_name - | Union({um_name, _}) => um_name - | InputObject({iom_name, _}) => iom_name - }; - -let is_type_default = ty => - switch (ty |> type_name) { - | "ID" - | "String" - | "Int" - | "Float" - | "Boolean" => true - | _ => false - }; - -let lookup_type = (schema, name) => - switch (Hashtbl.find_all(schema.type_map, name)) { - | [] => None - | [x] => Some(x) - | _ => raise @@ Inconsistent_schema("Multiple types named " ++ name) - }; - -let lookup_directive = (schema, name) => - switch (Hashtbl.find_all(schema.directive_map, name)) { - | [] => None - | [x] => Some(x) - | _ => raise @@ Inconsistent_schema("Multiple directives named " ++ name) - }; - -let all_enums = schema => - Hashtbl.fold( - (_, v, acc) => - switch (v) { - | Enum(e) => [e, ...acc] - | _ => acc - }, - schema.type_map, - [], - ); - -let extract_name_from_type_meta = - fun - | Scalar({sm_name: x, _}) - | Object({om_name: x, _}) - | Enum({em_name: x, _}) - | Interface({im_name: x, _}) - | Union({um_name: x, _}) - | InputObject({iom_name: x, _}) => x; - -let compare_type_meta = (x, y) => - String.compare( - extract_name_from_type_meta(x), - extract_name_from_type_meta(y), - ); - -let rec innermost_name = - fun - | Named(name) => name - | NonNull(inner) - | List(inner) => innermost_name(inner); diff --git a/src/base/schema_printer.re b/src/base/schema_printer.re deleted file mode 100644 index 0627fc17..00000000 --- a/src/base/schema_printer.re +++ /dev/null @@ -1,90 +0,0 @@ -open Schema; - -let rec print_type_ref = (type_ref: type_ref) => { - switch (type_ref) { - | Schema.Named(n) => n - | List(t) => "[" ++ print_type_ref(t) ++ "]" - | NonNull(t) => print_type_ref(t) ++ "!" - }; -}; - -let print_field = ({fm_name, fm_field_type}: field_meta) => { - fm_name ++ ": " ++ (fm_field_type |> print_type_ref); -}; - -let print_input_field = ({am_name, am_arg_type}: argument_meta) => { - am_name ++ ": " ++ (am_arg_type |> print_type_ref); -}; - -let print_object = ({om_fields, om_name}: object_meta) => { - ( - om_fields - |> List.fold_left( - (p, {fm_name} as field: Schema.field_meta) => { - fm_name != "__typename" ? p ++ "\n " ++ print_field(field) : p - }, - om_name ++ " {", - ) - ) - ++ "\n}"; -}; - -let print_input_object = ({iom_input_fields, iom_name}: input_object_meta) => { - ( - iom_input_fields - |> List.fold_left( - (p, input_field: Schema.argument_meta) => - p ++ "\n " ++ print_input_field(input_field), - iom_name ++ " {", - ) - ) - ++ "\n}"; -}; - -let print_enum = ({em_name, em_values}: enum_meta) => { - em_name - ++ " {\n" - ++ ( - em_values - |> List.fold_left( - (p, {evm_name, evm_deprecation_reason}) => { - p - ++ " " - ++ evm_name - ++ ( - switch (evm_deprecation_reason) { - | None => "" - | Some(_) => " (DEPRECATED)" - } - ) - ++ "\n" - }, - "", - ) - ) - ++ "}"; -}; - -let print_scalar = ({sm_name}: scalar_meta) => sm_name; - -let print_type = (name: string, schema: t) => { - Schema.lookup_type(schema, name) - |> Option.flat_map( - fun - | Object(obj_meta) => Some(print_object(obj_meta)) - | Scalar(scalar_meta) => Some(print_scalar(scalar_meta)) - | InputObject(input_obj_meta) => - Some(print_input_object(input_obj_meta)) - | Enum(enum_meta) => Some(print_enum(enum_meta)) - | Interface(_) - | Union(_) => None, - ); -}; - -let rec print_type_from_ref = (type_ref: type_ref, schema: t) => { - switch (type_ref) { - | Schema.Named(n) => print_type(n, schema) |> Option.get_or_else("N/A") - | List(t) => "[" ++ print_type_from_ref(t, schema) ++ "]" - | NonNull(t) => print_type_from_ref(t, schema) ++ "!" - }; -}; diff --git a/src/base/source_pos.re b/src/base/source_pos.re deleted file mode 100644 index 61a05835..00000000 --- a/src/base/source_pos.re +++ /dev/null @@ -1,58 +0,0 @@ -type source_position = { - index: int, - line: int, - col: int, -}; - -type span = (source_position, source_position); -type spanning('a) = { - item: 'a, - span, -}; - -let origin = {index: 0, line: 0, col: 0}; -let nopos = {index: (-1), line: (-1), col: (-1)}; -let nospan = (nopos, nopos); - -let advance_line = ({index, line, col: _}) => { - index: index + 1, - line: line + 1, - col: 0, -}; - -let advance_col = ({index, line, col}) => { - index: index + 1, - line, - col: col + 1, -}; - -let zero_width = (pos, item) => {span: (pos, pos), item}; - -let single_width = (pos, item) => {span: (pos, advance_col(pos)), item}; - -let start_end = (startPos, endPos, item) => { - span: (startPos, endPos), - item, -}; - -let replace = (span, item) => {span: span.span, item}; - -let map = (f, span) => {span: span.span, item: f(span.item)}; - -let start_pos = span => fst(span.span); -let end_pos = span => snd(span.span); - -type ast_position = - Ppxlib.position = { - pos_fname: string, - pos_lnum: int, - pos_bol: int, - pos_cnum: int, - }; - -type ast_location = - Ppxlib.location = { - loc_start: ast_position, - loc_end: ast_position, - loc_ghost: bool, - }; diff --git a/src/base/traversal_utils.re b/src/base/traversal_utils.re deleted file mode 100644 index 2181012e..00000000 --- a/src/base/traversal_utils.re +++ /dev/null @@ -1,509 +0,0 @@ -open Graphql_ast; -open Source_pos; - -type ctx = { - map_loc: ((source_position, source_position)) => Result_structure.loc, - fragments: Hashtbl.t(string, Graphql_ast.fragment), - schema: Schema.t, - errors: ref(list((Result_structure.loc, string))), - warnings: ref(list((Result_structure.loc, string))), - type_stack: list(option(Schema.type_meta)), - type_literal_stack: list(option(Schema.type_ref)), - input_type_stack: list(option(Schema.type_meta)), - input_type_literal_stack: list(option(Schema.type_ref)), - parent_type_stack: list(option(Schema.type_meta)), -}; - -module type VisitorSig = { - type t; - - let make_self: unit => t; - - let enter_document: (t, ctx, document) => unit; - let exit_document: (t, ctx, document) => unit; - - let enter_operation_definition: (t, ctx, spanning(operation)) => unit; - let exit_operation_definition: (t, ctx, spanning(operation)) => unit; - - let enter_fragment_definition: (t, ctx, spanning(fragment)) => unit; - let exit_fragment_definition: (t, ctx, spanning(fragment)) => unit; - - let enter_variable_definition: - (t, ctx, (spanning(string), variable_definition)) => unit; - let exit_variable_definition: - (t, ctx, (spanning(string), variable_definition)) => unit; - - let enter_directive: (t, ctx, spanning(directive)) => unit; - let exit_directive: (t, ctx, spanning(directive)) => unit; - - let enter_argument: - ( - t, - ctx, - (spanning(string), option(Schema.type_ref), spanning(input_value)) - ) => - unit; - let exit_argument: - (t, ctx, (spanning(string), spanning(input_value))) => unit; - - let enter_selection_set: (t, ctx, spanning(list(selection))) => unit; - let exit_selection_set: (t, ctx, spanning(list(selection))) => unit; - - let enter_field: (t, ctx, spanning(field)) => unit; - let exit_field: (t, ctx, spanning(field)) => unit; - - let enter_fragment_spread: (t, ctx, spanning(fragment_spread)) => unit; - let exit_fragment_spread: (t, ctx, spanning(fragment_spread)) => unit; - - let enter_inline_fragment: (t, ctx, spanning(inline_fragment)) => unit; - let exit_inline_fragment: (t, ctx, spanning(inline_fragment)) => unit; - - let enter_null_value: (t, ctx, spanning(unit)) => unit; - let exit_null_value: (t, ctx, spanning(unit)) => unit; - - let enter_int_value: (t, ctx, spanning(int)) => unit; - let exit_int_value: (t, ctx, spanning(int)) => unit; - - let enter_float_value: (t, ctx, spanning(float)) => unit; - let exit_float_value: (t, ctx, spanning(float)) => unit; - - let enter_string_value: (t, ctx, spanning(string)) => unit; - let exit_string_value: (t, ctx, spanning(string)) => unit; - - let enter_bool_value: (t, ctx, spanning(bool)) => unit; - let exit_bool_value: (t, ctx, spanning(bool)) => unit; - - let enter_enum_value: (t, ctx, spanning(string)) => unit; - let exit_enum_value: (t, ctx, spanning(string)) => unit; - - let enter_variable_value: (t, ctx, spanning(string)) => unit; - let exit_variable_value: (t, ctx, spanning(string)) => unit; - - let enter_list_value: - (t, ctx, spanning(list(spanning(input_value)))) => unit; - let exit_list_value: - (t, ctx, spanning(list(spanning(input_value)))) => unit; - - let enter_object_value: - (t, ctx, spanning(list((spanning(string), spanning(input_value))))) => - unit; - let exit_object_value: - (t, ctx, spanning(list((spanning(string), spanning(input_value))))) => - unit; - - let enter_object_field: - (t, ctx, (spanning(string), spanning(input_value))) => unit; - let exit_object_field: - (t, ctx, (spanning(string), spanning(input_value))) => unit; -}; - -module AbstractVisitor = { - let enter_document = (_self, _ctx, _) => (); - let exit_document = (_self, _ctx, _) => (); - - let enter_operation_definition = (_self, _ctx, _) => (); - let exit_operation_definition = (_self, _ctx, _) => (); - - let enter_fragment_definition = (_self, _ctx, _) => (); - let exit_fragment_definition = (_self, _ctx, _) => (); - - let enter_variable_definition = (_self, _ctx, _) => (); - let exit_variable_definition = (_self, _ctx, _) => (); - - let enter_directive = (_self, _ctx, _) => (); - let exit_directive = (_self, _ctx, _) => (); - - let enter_argument = (_self, _ctx, _) => (); - let exit_argument = (_self, _ctx, _) => (); - - let enter_selection_set = (_self, _ctx, _) => (); - let exit_selection_set = (_self, _ctx, _) => (); - - let enter_field = (_self, _ctx, _) => (); - let exit_field = (_self, _ctx, _) => (); - - let enter_fragment_spread = (_self, _ctx, _) => (); - let exit_fragment_spread = (_self, _ctx, _) => (); - - let enter_inline_fragment = (_self, _ctx, _) => (); - let exit_inline_fragment = (_self, _ctx, _) => (); - - let enter_null_value = (_self, _ctx, _) => (); - let exit_null_value = (_self, _ctx, _) => (); - - let enter_int_value = (_self, _ctx, _) => (); - let exit_int_value = (_self, _ctx, _) => (); - - let enter_float_value = (_self, _ctx, _) => (); - let exit_float_value = (_self, _ctx, _) => (); - - let enter_string_value = (_self, _ctx, _) => (); - let exit_string_value = (_self, _ctx, _) => (); - - let enter_bool_value = (_self, _ctx, _) => (); - let exit_bool_value = (_self, _ctx, _) => (); - - let enter_enum_value = (_self, _ctx, _) => (); - let exit_enum_value = (_self, _ctx, _) => (); - - let enter_variable_value = (_self, _ctx, _) => (); - let exit_variable_value = (_self, _ctx, _) => (); - - let enter_list_value = (_self, _ctx, _) => (); - let exit_list_value = (_self, _ctx, _) => (); - - let enter_object_value = (_self, _ctx, _) => (); - let exit_object_value = (_self, _ctx, _) => (); - - let enter_object_field = (_self, _ctx, _) => (); - let exit_object_field = (_self, _ctx, _) => (); -}; - -module Context = { - let push_type = (ctx, type_ref) => { - ...ctx, - type_stack: [ - Option.flat_map( - type_ref => - Schema.lookup_type(ctx.schema, Schema.innermost_name(type_ref)), - type_ref, - ), - ...ctx.type_stack, - ], - type_literal_stack: [type_ref, ...ctx.type_literal_stack], - }; - let push_input_type = (ctx, type_ref) => { - ...ctx, - input_type_stack: [ - Option.flat_map( - type_ref => - Schema.lookup_type(ctx.schema, Schema.innermost_name(type_ref)), - type_ref, - ), - ...ctx.input_type_stack, - ], - input_type_literal_stack: [type_ref, ...ctx.input_type_literal_stack], - }; - let push_parent_type = ctx => { - let top = - switch (ctx.type_stack) { - | [t, ..._] => t - | [] => None - }; - {...ctx, parent_type_stack: [top, ...ctx.parent_type_stack]}; - }; - let parent_type = ctx => - switch (ctx.parent_type_stack) { - | [t, ..._] => t - | [] => None - }; - let current_input_type_literal = ctx => - switch (ctx.input_type_literal_stack) { - | [t, ..._] => t - | [] => None - }; - let push_error = (ctx, loc, msg) => - ctx.errors := [(ctx.map_loc(loc), msg), ...ctx.errors^]; - let push_warning = (ctx, loc, msg) => - ctx.warnings := [(ctx.map_loc(loc), msg), ...ctx.warnings^]; -}; - -let rec as_schema_type_ref = - fun - | Tr_named({item, _}) => Schema.Named(item) - | Tr_list({item, _}) => Schema.List(as_schema_type_ref(item)) - | Tr_non_null_named({item, _}) => Schema.NonNull(Schema.Named(item)) - | Tr_non_null_list({item, _}) => - Schema.NonNull(Schema.List(as_schema_type_ref(item))); - -module Visitor = (V: VisitorSig) => { - let enter_input_value = (self, ctx, value) => - switch (value.item) { - | Iv_null => V.enter_null_value(self, ctx, Source_pos.replace(value, ())) - | Iv_int(i) => V.enter_int_value(self, ctx, Source_pos.replace(value, i)) - | Iv_float(f) => - V.enter_float_value(self, ctx, Source_pos.replace(value, f)) - | Iv_string(s) => - V.enter_string_value(self, ctx, Source_pos.replace(value, s)) - | Iv_boolean(b) => - V.enter_bool_value(self, ctx, Source_pos.replace(value, b)) - | Iv_enum(e) => - V.enter_enum_value(self, ctx, Source_pos.replace(value, e)) - | Iv_variable(v) => - V.enter_variable_value(self, ctx, Source_pos.replace(value, v)) - | Iv_list(l) => - V.enter_list_value(self, ctx, Source_pos.replace(value, l)) - | Iv_object(o) => - V.enter_object_value(self, ctx, Source_pos.replace(value, o)) - }; - - let exit_input_value = (self, ctx, value) => - switch (value.item) { - | Iv_null => V.exit_null_value(self, ctx, Source_pos.replace(value, ())) - | Iv_int(i) => V.exit_int_value(self, ctx, Source_pos.replace(value, i)) - | Iv_float(f) => - V.exit_float_value(self, ctx, Source_pos.replace(value, f)) - | Iv_string(s) => - V.exit_string_value(self, ctx, Source_pos.replace(value, s)) - | Iv_boolean(b) => - V.exit_bool_value(self, ctx, Source_pos.replace(value, b)) - | Iv_enum(e) => - V.exit_enum_value(self, ctx, Source_pos.replace(value, e)) - | Iv_variable(v) => - V.exit_variable_value(self, ctx, Source_pos.replace(value, v)) - | Iv_list(l) => - V.exit_list_value(self, ctx, Source_pos.replace(value, l)) - | Iv_object(o) => - V.exit_object_value(self, ctx, Source_pos.replace(value, o)) - }; - - let rec visit_input_value = - (self, ctx, arg_type: option(Schema.type_ref), value) => { - let () = enter_input_value(self, ctx, value); - let () = - switch ( - arg_type - |> Option.map(Schema.innermost_name) - |> Option.flat_map(Schema.lookup_type(ctx.schema)), - value.item, - ) { - | (Some(Scalar(_) as ty), _) - when ty |> Schema.is_type_default === false => - () - | (_, Iv_object(fields)) => - List.iter( - ((key, value)) => { - let inner_type = - Context.current_input_type_literal(ctx) - |> Option.flat_map( - fun - | Schema.Named(name) - | Schema.NonNull(Schema.Named(name)) => - Schema.lookup_type(ctx.schema, name) - | _ => None, - ) - |> Option.flat_map(t => - try(Schema.lookup_input_field(t, key.item)) { - | Schema.Invalid_type(msg) => - Context.push_error(ctx, key.span, msg); - None; - | other => raise(other) - } - ) - |> Option.map(am => am.Schema.am_arg_type); - let ctx = Context.push_input_type(ctx, inner_type); - let () = V.enter_object_field(self, ctx, (key, value)); - let () = visit_input_value(self, ctx, inner_type, value); - V.exit_object_field(self, ctx, (key, value)); - }, - fields, - ) - | (_, Iv_list(items)) => - let inner_type = - Context.current_input_type_literal(ctx) - |> Option.flat_map( - fun - | Schema.List(inner) - | Schema.NonNull(Schema.List(inner)) => Some(inner) - | _ => None, - ); - let ctx = Context.push_input_type(ctx, inner_type); - List.iter(visit_input_value(self, ctx, inner_type), items); - | _ => () - }; - exit_input_value(self, ctx, value); - }; - - let rec visit_inline_fragment = (self, ctx, inline_fragment) => { - let ctx = - switch (inline_fragment.item.if_type_condition) { - | None => ctx - | Some({item, _}) => - Context.push_type(ctx, Some(Schema.NonNull(Schema.Named(item)))) - }; - - let () = V.enter_inline_fragment(self, ctx, inline_fragment); - let () = visit_directives(self, ctx, inline_fragment.item.if_directives); - let () = - visit_selection_set(self, ctx, inline_fragment.item.if_selection_set); - V.exit_inline_fragment(self, ctx, inline_fragment); - } - and visit_fragment_spread = (self, ctx, fragment_spread) => { - let () = V.enter_fragment_spread(self, ctx, fragment_spread); - let () = visit_directives(self, ctx, fragment_spread.item.fs_directives); - V.exit_fragment_spread(self, ctx, fragment_spread); - } - and visit_field = (self, ctx, field) => { - let meta_field = - Context.parent_type(ctx) - |> Option.flat_map(t => Schema.lookup_field(t, field.item.fd_name.item)); - let field_type = Option.map(fm => fm.Schema.fm_field_type, meta_field); - let field_args = Option.map(fm => fm.Schema.fm_arguments, meta_field); - let ctx = Context.push_type(ctx, field_type); - let () = V.enter_field(self, ctx, field); - let () = visit_arguments(self, ctx, field_args, field.item.fd_arguments); - let () = visit_directives(self, ctx, field.item.fd_directives); - let () = - switch (field.item.fd_selection_set) { - | None => () - | Some(selection_set) => visit_selection_set(self, ctx, selection_set) - }; - V.exit_field(self, ctx, field); - } - and visit_selection = (self, ctx) => - fun - | Field(field) => visit_field(self, ctx, field) - | FragmentSpread(fragment_spread) => - visit_fragment_spread(self, ctx, fragment_spread) - | InlineFragment(inline_fragment) => - visit_inline_fragment(self, ctx, inline_fragment) - and visit_selection_set = (self, ctx, selection_set) => { - let ctx = Context.push_parent_type(ctx); - let () = V.enter_selection_set(self, ctx, selection_set); - let () = List.iter(visit_selection(self, ctx), selection_set.item); - V.exit_selection_set(self, ctx, selection_set); - } - and visit_arguments = (self, ctx, meta_args) => - fun - | None => () - | Some({item, _}) => - List.iter( - ((name, value)) => { - let arg_type = - meta_args - |> Option.flat_map(meta_args => - switch ( - List.find(am => am.Schema.am_name == name.item, meta_args) - ) { - | am => Some(am) - | exception Not_found => None - } - ) - |> Option.map(am => am.Schema.am_arg_type); - let ctx = Context.push_input_type(ctx, arg_type); - let () = V.enter_argument(self, ctx, (name, arg_type, value)); - let () = visit_input_value(self, ctx, arg_type, value); - V.exit_argument(self, ctx, (name, value)); - }, - item, - ) - and visit_directives = (self, ctx) => - List.iter(directive => { - let meta_args = - Schema.lookup_directive(ctx.schema, directive.item.d_name.item) - |> Option.map(d => d.Schema.dm_arguments); - let () = V.enter_directive(self, ctx, directive); - let () = - visit_arguments(self, ctx, meta_args, directive.item.d_arguments); - V.exit_directive(self, ctx, directive); - }); - - let visit_variable_definitions = (self, ctx) => - fun - | None => () - | Some({item, _}) => - List.iter( - ((name, def)) => { - let ctx = - Context.push_input_type( - ctx, - Some(as_schema_type_ref(def.vd_type.item)), - ); - let () = V.enter_variable_definition(self, ctx, (name, def)); - let () = - switch (def.vd_default_value) { - | None => () - | Some(value) => - visit_input_value( - self, - ctx, - Some(def.vd_type.item |> Type_utils.to_schema_type_ref), - value, - ) - }; - V.exit_variable_definition(self, ctx, (name, def)); - }, - item, - ); - - let visit_operation_definition = (self, ctx, operation) => { - let () = - visit_variable_definitions(self, ctx, operation.o_variable_definitions); - let () = visit_directives(self, ctx, operation.o_directives); - visit_selection_set(self, ctx, operation.o_selection_set); - }; - - let visit_fragment_definition = (self, ctx, fragment) => { - let () = visit_directives(self, ctx, fragment.fg_directives); - visit_selection_set(self, ctx, fragment.fg_selection_set); - }; - - let visit_definition = (self, ctx, def) => { - let def_type = - Schema.NonNull( - Schema.Named( - switch (def) { - | Operation({item: {o_type: Query, _}, _}) => - Schema.query_type(ctx.schema) |> Schema.type_name - | Operation({item: {o_type: Mutation, _}, _}) => - Schema.mutation_type(ctx.schema) - |> Option.unsafe_unwrap(~reason="Can't find mutation type") - |> Schema.type_name - | Operation({item: {o_type: Subscription, _}, _}) => - Schema.subscription_type(ctx.schema) - |> Option.unsafe_unwrap(~reason="Can't find subscription type") - |> Schema.type_name - | Fragment({item: {fg_type_condition: {item, _}, _}, _}) => item - }, - ), - ); - - let ctx = Context.push_type(ctx, Some(def_type)); - switch (def) { - | Operation(operation) => - let () = V.enter_operation_definition(self, ctx, operation); - let () = visit_operation_definition(self, ctx, operation.item); - V.exit_operation_definition(self, ctx, operation); - | Fragment(fragment) => - let () = V.enter_fragment_definition(self, ctx, fragment); - let () = visit_fragment_definition(self, ctx, fragment.item); - V.exit_fragment_definition(self, ctx, fragment); - }; - }; - - let visit_document = (ctx, doc) => { - let self = V.make_self(); - let () = V.enter_document(self, ctx, doc); - let () = List.iter(visit_definition(self, ctx), doc); - let () = V.exit_document(self, ctx, doc); - self; - }; -}; - -let find_fragments = doc => { - open Graphql_ast; - open Source_pos; - let lookup = Hashtbl.create(1); - let () = - List.iter( - fun - | Fragment(fragment) => - Hashtbl.add(lookup, fragment.item.fg_name.item, fragment.item) - | _ => (), - doc, - ); - lookup; -}; - -let make_context = (config, document) => { - map_loc: config.Generator_utils.map_loc, - fragments: find_fragments(document), - schema: config.Generator_utils.schema, - errors: ref([]), - warnings: ref([]), - type_stack: [], - type_literal_stack: [], - input_type_stack: [], - input_type_literal_stack: [], - parent_type_stack: [], -}; diff --git a/src/base/type_utils.re b/src/base/type_utils.re deleted file mode 100644 index 259236af..00000000 --- a/src/base/type_utils.re +++ /dev/null @@ -1,217 +0,0 @@ -open Graphql_ast; -open Source_pos; -open Schema; - -type native_type_ref = - | Ntr_named(string) - | Ntr_nullable(native_type_ref) - | Ntr_list(native_type_ref); - -let rec to_native_type_ref = tr => - switch (tr) { - | NonNull(Named(n)) => Ntr_named(n) - | NonNull(List(l)) => Ntr_list(to_native_type_ref(l)) - | NonNull(i) => to_native_type_ref(i) - | List(l) => Ntr_nullable(Ntr_list(to_native_type_ref(l))) - | Named(n) => Ntr_nullable(Ntr_named(n)) - }; - -let rec to_schema_type_ref = tr => - switch (tr) { - | Tr_list(l) => List(to_schema_type_ref(l.item)) - | Tr_named(n) => Named(n.item) - | Tr_non_null_list(l) => NonNull(List(to_schema_type_ref(l.item))) - | Tr_non_null_named(n) => NonNull(Named(n.item)) - }; - -let is_nullable = - fun - | Ntr_named(_) - | Ntr_list(_) => false - | Ntr_nullable(_) => true; - -module Generic = { - type t = - | ID - | String - | Int - | Float - | Boolean - | Null - | CustomScalar - | Object - | InputObject - | Enum - | Interface - | Union - | EmptyList; - - type tree = - | T(t) - | NonNull(tree) - | List(tree); - - let string_of_t = - fun - | ID => "ID" - | String => "String" - | Int => "Int" - | Float => "Float" - | Boolean => "Boolean" - | Object => "Object" - | InputObject => "InputObject" - | Enum => "Enum" - | Interface => "Interface" - | Union => "Union" - | Null => "Null" - | CustomScalar => "CustomScalar" - | EmptyList => "EmptyList"; - - let rec string_of_tree = - fun - | T(t) => t |> string_of_t - | NonNull(List(t)) => "[" ++ string_of_tree(t) ++ "]!" - | NonNull(t) => string_of_tree(t) ++ "!" - | List(t) => "[" ++ string_of_tree(t) ++ "]"; - - let eq = (t1: t, t2: t) => - switch (t1, t2) { - | (ID, String) - | (String, ID) - | (Object, InputObject) - | (InputObject, Object) => true - | (t1, t2) when t1 === t2 => true - | _ => false - }; - let eq_tree = (t1: tree, t2: tree) => - t1 |> string_of_tree === (t2 |> string_of_tree); - - type apply_result = - | Ok - | Unequal - | RequiredMismatch; - let rec can_apply = (to_: tree, from: tree) => { - switch (to_, from) { - // Disable checks for custom scalars - | (T(CustomScalar), T(_)) => Ok - | (T(CustomScalar), NonNull(_)) => Ok - // Needs recursive check - | (NonNull(t1), NonNull(t2)) - | (List(t1), List(t2)) - | (List(t1), NonNull(List(t2))) => can_apply(t1, t2) - // Normal type equality - | (T(t1), T(t2)) - | (T(t1), NonNull(T(t2))) => eq(t1, t2) ? Ok : Unequal - // Default value "EmptyList" is acceptable for list types - | (List(_), T(EmptyList)) - | (List(_), NonNull(T(EmptyList))) - | (NonNull(List(_)), T(EmptyList)) => Ok - // Left side is required, right side is not - | (NonNull(_), T(_)) - | (NonNull(_), List(_)) => RequiredMismatch - | _ => Unequal - }; - }; - - let from_schema_tm = (ty: Schema.type_meta) => - switch (ty) { - | Scalar({sm_name: "ID"}) => ID - | Scalar({sm_name: "String"}) => String - | Scalar({sm_name: "Int"}) => Int - | Scalar({sm_name: "Float"}) => Float - | Scalar({sm_name: "Boolean"}) => Boolean - | Scalar(_) => CustomScalar - | Object(_) => Object - | InputObject(_) => InputObject - | Enum(_) => Enum - | Interface(_) => Interface - | Union(_) => Union - }; - let rec from_schema_tr = (~schema: Schema.t, tr: Schema.type_ref) => { - switch (tr) { - | Named(name) => - T( - name - |> Schema.lookup_type(schema) - |> Option.map(from_schema_tm) - |> Option.get_or_else(Null), - ) - | NonNull(tr) => NonNull(tr |> from_schema_tr(~schema)) - | List(tr) => List(tr |> from_schema_tr(~schema)) - }; - }; - - let rec from_graphql_ast_tr = (~schema: Schema.t, tr: Graphql_ast.type_ref) => { - switch (tr) { - | Tr_named(name) => - T( - name.item - |> Schema.lookup_type(schema) - |> Option.map(from_schema_tm) - |> Option.get_or_else(Null), - ) - | Tr_non_null_named(name) => - NonNull(Tr_named(name) |> from_graphql_ast_tr(~schema)) - | Tr_non_null_list(name) => - NonNull(Tr_list(name) |> from_graphql_ast_tr(~schema)) - | Tr_list(t) => List(t.item |> from_graphql_ast_tr(~schema)) - }; - }; - - let rec from_graphql_ast_iv = - ( - ~arguments: Hashtbl.t(string, tree)=Hashtbl.create(0), - ~schema: Schema.t, - iv: Graphql_ast.input_value, - ) => - switch (iv) { - | Iv_null => NonNull(T(Null)) - | Iv_int(_) => NonNull(T(Int)) - | Iv_float(_) => NonNull(T(Float)) - | Iv_string(_) => NonNull(T(String)) - | Iv_boolean(_) => NonNull(T(Boolean)) - | Iv_enum(_) => NonNull(T(Enum)) - | Iv_variable(variable_name) => - try(Hashtbl.find(arguments, variable_name)) { - | Not_found => T(Null) - } - | Iv_list([inner, ..._]) => - NonNull(List(inner.item |> from_graphql_ast_iv(~arguments, ~schema))) - | Iv_list([]) => NonNull(T(EmptyList)) - | Iv_object(_) => NonNull(T(InputObject)) - }; - - type error = - | MismatchedTypes(string, string) - | MismatchedRequiredVar(string, string) - | RequiredFieldMissing(string, string) - | RequiredVariableMissing(string, string); - let generate_error = (error: error) => { - switch (error) { - | MismatchedTypes(expected, received) => - Printf.sprintf( - "Invalid argument. Expected \"%s\" but received \"%s\".", - expected, - received, - ) - | MismatchedRequiredVar(arg_name, val_name) => - Printf.sprintf( - "Invalid argument. Trying to apply the nullable variable \"$%s\" to the required argument \"%s\".", - val_name, - arg_name, - ) - | RequiredFieldMissing(arg_name, key_name) => - Printf.sprintf( - "Invalid argument. The field \"%s\" on argument \"%s\" is missing.", - key_name, - arg_name, - ) - | RequiredVariableMissing(arg_name, variable_name) => - Printf.sprintf( - "Invalid argument. The variable \"$%s\" on argument \"%s\" is missing.", - variable_name, - arg_name, - ) - }; - }; -}; diff --git a/src/base/validations.re b/src/base/validations.re deleted file mode 100644 index 645ff5b9..00000000 --- a/src/base/validations.re +++ /dev/null @@ -1,51 +0,0 @@ -open Traversal_utils; - -module AllRulesImpl = - Multi_visitor.Visitor( - Rule_no_invalid_default_values.Visitor, - ( - Multi_visitor.Visitor( - Rule_no_unused_variables.Visitor, - ( - Multi_visitor.Visitor( - Rule_no_undefined_variables.Visitor, - ( - Multi_visitor.Visitor( - Rule_no_invalid_input_object_values.Visitor, - ( - Multi_visitor.Visitor( - Rule_all_required_arguments.Visitor, - ( - Multi_visitor.Visitor( - Rule_known_argument_names.Visitor, - ( - Multi_visitor.Visitor( - Rule_deprecated_fields.Visitor, - Multi_visitor.NullVisitor, - ) - ), - ) - ), - ) - ), - ) - ), - ) - ), - ) - ), - ); - -module AllRules = Visitor(AllRulesImpl); - -let run_validators = (config, document) => { - let ctx = make_context(config, document); - let _ = AllRules.visit_document(ctx, document); - ( - switch (ctx.errors^) { - | [] => None - | errs => Some(errs) - }, - ctx.warnings^, - ); -}; diff --git a/src/bin/Bin.ml b/src/bin/Bin.ml new file mode 100644 index 00000000..d46eb9da --- /dev/null +++ b/src/bin/Bin.ml @@ -0,0 +1,4 @@ +Graphql_compiler.Ppx_config.update_config (fun current -> + { current with native = false }) + +let () = Ppxlib.Driver.run_as_ppx_rewriter () diff --git a/src/bucklescript_bin/dune b/src/bin/dune similarity index 100% rename from src/bucklescript_bin/dune rename to src/bin/dune diff --git a/src/bucklescript/bucklescript_config.re b/src/bucklescript/bucklescript_config.re deleted file mode 100644 index 9e8fadb1..00000000 --- a/src/bucklescript/bucklescript_config.re +++ /dev/null @@ -1,349 +0,0 @@ -open Graphql_ppx_base; - -module Paths = { - let bsconfig = "bsconfig.json"; - let bsbProjectRoot = ref(""); - let projectRoot = ref(""); - - let rec findProjectRoot = (~dir) => - if (Sys.file_exists(Filename.concat(dir, bsconfig))) { - dir; - } else { - let parent = dir |> Filename.dirname; - if (parent == dir) { - if (!Ppx_config.native()) { - prerr_endline( - "Error: cannot find project root containing " ++ bsconfig ++ ".", - ); - assert(false); - } else { - dir; - }; - } else { - findProjectRoot(~dir=parent); - }; - }; - - let setProjectRoot = () => { - projectRoot := findProjectRoot(~dir=Sys.getcwd()); - bsbProjectRoot := - ( - switch (Sys.getenv_opt("BSB_PROJECT_ROOT")) { - | None => projectRoot^ - | Some(s) => s - } - ); - }; - - let concat = Filename.concat; - - let getBsConfigFile = () => { - let bsconfig = concat(projectRoot^, bsconfig); - bsconfig |> Sys.file_exists ? Some(bsconfig) : None; - }; -}; - -exception Config_error(string); - -let defaultConfig = - Ppx_config.{ - verbose_logging: false, - output_mode: Ppx_config.String, - verbose_error_handling: - switch (Sys.getenv("NODE_ENV")) { - | "production" => false - | _ => true - | exception Not_found => true - }, - apollo_mode: false, - schema_file: "graphql_schema.json", - root_directory: Sys.getcwd(), - raise_error_with_loc: (loc, message) => { - let loc = Output_bucklescript_utils.conv_loc(loc); - raise(Location.Error(Location.error(~loc, message))); - }, - template_tag: None, - template_tag_location: None, - template_tag_import: None, - template_tag_return_type: None, - template_tag_is_function: None, - custom_fields: Hashtbl.create(0), - future_added_value: true, - extend_query: None, - extend_query_no_required_variables: None, - extend_mutation: None, - extend_mutation_no_required_variables: None, - extend_subscription: None, - extend_subscription_no_required_variables: None, - extend_fragment: None, - fragment_in_query: Include, - native: true, - }; - -module JsonHelper = { - open Yojson.Basic.Util; - let mapBool = (option, update, json) => - try(update(json |> (json => json |> member(option) |> to_bool))) { - | Yojson.Basic.Util.Type_error(_) => () - | other => raise(other) - }; - let mapString = (option, update, json) => - try(update(json |> (json => json |> member(option) |> to_string))) { - | Yojson.Basic.Util.Type_error(_) => () - | other => raise(other) - }; -}; - -let read_custom_fields = json => { - open Yojson.Basic.Util; - let custom_fields = Ppx_config.custom_fields() |> Hashtbl.copy; - - let custom_fields_result_depr = - try(json |> member("custom-fields") |> to_assoc) { - | Yojson.Basic.Util.Type_error(_) => [] - | other => raise(other) - }; - let custom_fields_result = - try(json |> member("customFields") |> to_assoc) { - | Yojson.Basic.Util.Type_error(_) => [] - | other => raise(other) - }; - - List.append(custom_fields_result_depr, custom_fields_result) - |> List.map(((key, value)) => { - let value = - try(Some(value |> to_string)) { - | Yojson.Basic.Util.Type_error(_) => None - | other => raise(other) - }; - - (key, value); - }) - |> List.iter(((key, value)) => { - switch (value) { - | Some(value) => Hashtbl.add(custom_fields, key, value) - | None => () - } - }); - - Ppx_config.update_config(current => {...current, custom_fields}); - - (); -}; - -let read_config = () => { - Ppx_config.set_config(defaultConfig); - - Paths.setProjectRoot(); - open Yojson.Basic.Util; - - let parseConfig = (json: Yojson.Basic.t) => { - let ppxConfig = json |> member("graphql"); - - let handleVerboseLogging = verbose_logging => { - Ppx_config.update_config(current => {...current, verbose_logging}); - }; - let handleFutureAddedValue = future_added_value => { - Ppx_config.update_config(current => {...current, future_added_value}); - }; - let handleOmitFutureAddedValue = omit_future_added_value => { - Ppx_config.update_config(current => - {...current, future_added_value: !omit_future_added_value} - ); - }; - let handleApolloMode = apollo_mode => { - Ppx_config.update_config(current => {...current, apollo_mode}); - }; - - let handleSchema = schema_file => { - Ppx_config.update_config(current => {...current, schema_file}); - }; - let handleAstOut = ast_out => { - Ppx_config.update_config(current => - { - ...current, - output_mode: - switch (ast_out) { - | "apollo" => Ppx_config.Apollo_AST - | "string" => Ppx_config.String - | other => - raise( - Config_error( - "Error in graphql configuration: ast-out \"" - ++ other - ++ "\" is not supported. Choose either apollo or string.", - ), - ) - }, - } - ); - }; - let handleFragmentInQuery = mode => { - switch (mode) { - | "include" => - Ppx_config.update_config(current => - {...current, fragment_in_query: Include} - ) - | "exclude" => - Ppx_config.update_config(current => - {...current, fragment_in_query: Exclude} - ) - | other => - raise( - Config_error( - "Error in graphql-ppx configuration: fragment-in-query\"" - ++ other - ++ "\" is not supported. Choose either 'include' or 'exclude'.", - ), - ) - }; - }; - - let handleExtendQuery = extend_query => { - Ppx_config.update_config(current => - {...current, extend_query: Some(extend_query)} - ); - }; - - let handleExtendQueryNoRequiredVariables = extend_query => { - Ppx_config.update_config(current => - {...current, extend_query_no_required_variables: Some(extend_query)} - ); - }; - let handleExtendMutation = extend_mutation => { - Ppx_config.update_config(current => - {...current, extend_mutation: Some(extend_mutation)} - ); - }; - let handleExtendMutationNoRequiredVariables = extend_mutation => { - Ppx_config.update_config(current => - { - ...current, - extend_mutation_no_required_variables: Some(extend_mutation), - } - ); - }; - let handleExtendSubscription = extend_subscription => { - Ppx_config.update_config(current => - {...current, extend_subscription: Some(extend_subscription)} - ); - }; - let handleExtendSubscriptionNoRequiredVariables = extend_subscription => { - Ppx_config.update_config(current => - { - ...current, - extend_subscription_no_required_variables: - Some(extend_subscription), - } - ); - }; - let handleExtendFragment = extend_fragment => { - Ppx_config.update_config(current => - {...current, extend_fragment: Some(extend_fragment)} - ); - }; - let handleTemplateTag = template_tag => { - Ppx_config.update_config(current => - {...current, template_tag: Some(template_tag)} - ); - }; - - let handleTemplateTagImport = template_tag_import => { - Ppx_config.update_config(current => - {...current, template_tag_import: Some(template_tag_import)} - ); - }; - let handleTemplateTagLocation = template_tag_location => { - Ppx_config.update_config(current => - {...current, template_tag_location: Some(template_tag_location)} - ); - }; - let handleTemplateTagReturnType = template_tag_return_type => { - Ppx_config.update_config(current => - { - ...current, - template_tag_return_type: Some(template_tag_return_type), - } - ); - }; - let handleTemplateTagIsFunction = template_tag_is_function => { - Ppx_config.update_config(current => - { - ...current, - template_tag_is_function: Some(template_tag_is_function), - } - ); - }; - - let configBool = (key, value) => - ppxConfig |> JsonHelper.mapBool(key, value); - let configString = (key, value) => - ppxConfig |> JsonHelper.mapString(key, value); - - configBool("verbose", handleVerboseLogging); - configBool("future-added-value", handleFutureAddedValue); - configBool("futureAddedValue", handleFutureAddedValue); - configBool("omitFutureAddedValue", handleOmitFutureAddedValue); - configBool("apollo-mode", handleApolloMode); - configBool("apolloMode", handleApolloMode); - configString("schema", handleSchema); - configString("ast-out", handleAstOut); - configString("astOut", handleAstOut); - configString("fragment-in-query", handleFragmentInQuery); - configString("fragmentInQuery", handleFragmentInQuery); - configString("extend-query", handleExtendQuery); - configString("extendQuery", handleExtendQuery); - configString( - "extend-query-no-required-variables", - handleExtendQueryNoRequiredVariables, - ); - configString( - "extendQueryNoRequiredVariables", - handleExtendQueryNoRequiredVariables, - ); - configString("extend-mutation", handleExtendMutation); - configString("extendMutation", handleExtendMutation); - configString( - "extend-mutation-no-required-variables", - handleExtendMutationNoRequiredVariables, - ); - configString( - "extendMutationNoRequiredVariables", - handleExtendMutationNoRequiredVariables, - ); - - configString("extend-subscription", handleExtendSubscription); - configString("extendSubscription", handleExtendSubscription); - configString( - "extend-subscription-no-required-variables", - handleExtendSubscriptionNoRequiredVariables, - ); - configString( - "extendSubscriptionNoRequiredVariables", - handleExtendSubscriptionNoRequiredVariables, - ); - configString("extend-fragment", handleExtendFragment); - configString("extendFragment", handleExtendFragment); - configString("template-tag", handleTemplateTag); - configString("templateTag", handleTemplateTag); - configString("template-tag-import", handleTemplateTagImport); - configString("templateTagImport", handleTemplateTagImport); - configString("template-tag-location", handleTemplateTagLocation); - configString("templateTagLocation", handleTemplateTagLocation); - configString("template-tag-return-type", handleTemplateTagReturnType); - configString("templateTagReturnType", handleTemplateTagReturnType); - configBool("template-tag-is-function", handleTemplateTagIsFunction); - configBool("templateTagIsFunction", handleTemplateTagIsFunction); - - read_custom_fields(ppxConfig); - }; - - switch (Paths.getBsConfigFile()) { - | Some(bsConfigFile) => - try(bsConfigFile |> Yojson.Basic.from_file |> parseConfig) { - | Config_error(_) as e => raise(e) - | _ => () - } - | None => () - }; -}; diff --git a/src/bucklescript/graphql_ppx.re b/src/bucklescript/graphql_ppx.re deleted file mode 100644 index f49f9d80..00000000 --- a/src/bucklescript/graphql_ppx.re +++ /dev/null @@ -1,1412 +0,0 @@ -open Graphql_ppx_base; -open Source_pos; -open Output_bucklescript_utils; -open Ppxlib; - -// not available in all supported versions of OCaml so inlining here -let filter_map = f => { - let rec aux = accu => - fun - | [] => List.rev(accu) - | [x, ...l] => - switch (f(x)) { - | None => aux(accu, l) - | Some(v) => aux([v, ...accu], l) - }; - - aux([]); -}; - -let add_loc = (delimLength, base, span) => { - let (_, _, col) = Ocaml_common.Location.get_pos_info(base.loc_start); - let pos_bol_start = - base.loc_start.pos_bol - + col - + delimLength - + fst(span).index - - fst(span).col; - let pos_bol_end = - base.loc_start.pos_bol - + col - + delimLength - + snd(span).index - - snd(span).col; - let start = pos_bol_start + fst(span).col; - let end_ = pos_bol_end + snd(span).col; - { - loc_start: { - pos_fname: base.loc_start.pos_fname, - pos_lnum: base.loc_start.pos_lnum + fst(span).line, - pos_bol: pos_bol_start, - pos_cnum: start, - }, - loc_end: { - pos_fname: base.loc_start.pos_fname, - pos_lnum: base.loc_start.pos_lnum + snd(span).line, - pos_bol: pos_bol_end, - pos_cnum: end_, - }, - loc_ghost: false, - }; -}; - -let fmt_lex_err = err => - Graphql_lexer.( - switch (err) { - | Unknown_character(ch) => Printf.sprintf("Unknown character %c", ch) - | Unexpected_character(ch) => - Printf.sprintf("Unexpected character %c", ch) - | Unterminated_string => Printf.sprintf("Unterminated string literal") - | Unknown_character_in_string(ch) => - Printf.sprintf("Unknown character in string literal: %c", ch) - | Unknown_escape_sequence(s) => - Printf.sprintf("Unknown escape sequence in string literal: %s", s) - | Unexpected_end_of_file => Printf.sprintf("Unexpected end of query") - | Invalid_number => Printf.sprintf("Invalid number") - } - ); - -let fmt_parse_err = err => - Graphql_parser.( - switch (err) { - | Unexpected_token(t) => - Printf.sprintf("Unexpected token %s", Graphql_lexer.string_of_token(t)) - | Unexpected_end_of_file => "Unexpected end of query" - | Lexer_error(err) => fmt_lex_err(err) - } - ); - -let make_error_expr = (loc, message) => { - let error = Ocaml_common.Location.error(~loc, message); - let ext = Ocaml_common.Ast_mapper.extension_of_error(error); - let extension = Ocaml_common.Ast_helper.Exp.extension(~loc, ext); - - To_ppxlib.copy_expression(extension); -}; - -let extract_schema_from_config = config_fields => { - open Asttypes; - open Parsetree; - - let maybe_schema_field = - try( - Some( - List.find( - config_field => - switch (config_field) { - | ( - {txt: Longident.Lident("schema"), _}, - {pexp_desc: Pexp_constant(Pconst_string(_, _, _)), _}, - ) => - true - | _ => false - }, - config_fields, - ), - ) - ) { - | _ => None - }; - - switch (maybe_schema_field) { - | Some(( - _, - {pexp_desc: Pexp_constant(Pconst_string(schema_name, _, _)), _}, - )) => - Some(schema_name) - | _ => None - }; -}; - -let extract_template_tag_from_config = config_fields => { - open Asttypes; - open Parsetree; - - let maybe_template_tag_field = - try( - Some( - List.find( - config_field => - switch (config_field) { - | ( - {txt: Longident.Lident("templateTag"), _}, - {pexp_desc: Pexp_constant(Pconst_string(_, _, _)), _}, - ) - | ( - {txt: Longident.Lident("templateTag"), _}, - {pexp_desc: Pexp_ident({txt: _}), _}, - ) => - true - | _ => false - }, - config_fields, - ), - ) - ) { - | _ => None - }; - - switch (maybe_template_tag_field) { - | Some(( - _, - {pexp_desc: Pexp_constant(Pconst_string(template_tag, _, _))}, - )) => - Some(template_tag) - | Some((_, {pexp_desc: Pexp_ident({txt: lident})})) => - Some( - Ocaml_common.Longident.flatten(lident) - |> List.fold_left( - (acc, elem) => - if (acc == "") { - elem; - } else { - acc ++ "." ++ elem; - }, - "", - ), - ) - | _ => None - }; -}; - -let extract_bool_from_config = (name, config_fields) => { - open Asttypes; - open Parsetree; - - let maybe_field_value = - try( - Some( - List.find( - config_field => - switch (config_field) { - | ( - {txt: Longident.Lident(matched_name), _}, - { - pexp_desc: - Pexp_construct({txt: Longident.Lident(_value)}, _), - _, - }, - ) - when matched_name == name => - true - | _ => false - }, - config_fields, - ), - ) - ) { - | _ => None - }; - - switch (maybe_field_value) { - | Some(( - _, - {pexp_desc: Pexp_construct({txt: Longident.Lident(value)}, _), _}, - )) => - switch (value) { - | "true" => Some(true) - | "false" => Some(false) - | _ => None - } - | _ => None - }; -}; - -let extract_string_from_config = (name, config_fields) => { - open Asttypes; - open Parsetree; - - let maybe_string_field = - try( - Some( - List.find( - config_field => - switch (config_field) { - | ( - {txt: Longident.Lident(matched_name), _}, - {pexp_desc: Pexp_constant(Pconst_string(_, _, _)), _}, - ) - when matched_name == name => - true - | _ => false - }, - config_fields, - ), - ) - ) { - | _ => None - }; - - switch (maybe_string_field) { - | Some((_, {pexp_desc: Pexp_constant(Pconst_string(value, _, _)), _})) => - Some(value) - | _ => None - }; -}; - -let extract_template_tag_location_from_config = - extract_string_from_config("templateTagLocation"); -let extract_template_tag_import_from_config = - extract_string_from_config("templateTagImport"); -let extract_template_tag_return_type_from_config = - extract_string_from_config("templateTagReturnType"); -let extract_extend_from_config = extract_string_from_config("extend"); - -let extract_fragment_in_query_from_config = config_fields => { - Ppx_config.( - switch (extract_string_from_config("fragmentInQuery", config_fields)) { - | Some("include") => Some(Include) - | Some("exclude") => Some(Exclude) - | _ => None - } - ); -}; - -let extract_records_from_config = extract_bool_from_config("records"); -let extract_objects_from_config = extract_bool_from_config("objects"); -let extract_inline_from_config = extract_bool_from_config("inline"); -let extract_apollo_mode_from_config = extract_bool_from_config("apolloMode"); -let extract_future_added_value_from_config = - extract_bool_from_config("futureAddedValue"); -let extract_tagged_template_config = - extract_bool_from_config("taggedTemplate"); - -type query_config = Result_decoder.query_config; - -let get_query_config_from_trailing_record = fields => - Result_decoder.( - { - { - schema: extract_schema_from_config(fields), - records: extract_records_from_config(fields), - objects: extract_objects_from_config(fields), - inline: extract_inline_from_config(fields), - template_tag: extract_template_tag_from_config(fields), - template_tag_import: extract_template_tag_import_from_config(fields), - template_tag_location: - extract_template_tag_location_from_config(fields), - template_tag_return_type: - extract_template_tag_return_type_from_config(fields), - tagged_template: extract_tagged_template_config(fields), - future_added_value: extract_future_added_value_from_config(fields), - extend: extract_extend_from_config(fields), - fragment_in_query: extract_fragment_in_query_from_config(fields), - apollo_mode: extract_apollo_mode_from_config(fields), - // do not support these new options in the trailing record - template_tag_is_function: None, - }; - } - ); - -let empty_query_config = - Result_decoder.{ - schema: None, - records: None, - objects: None, - inline: None, - tagged_template: None, - template_tag: None, - template_tag_location: None, - template_tag_import: None, - template_tag_return_type: None, - template_tag_is_function: None, - future_added_value: None, - extend: None, - fragment_in_query: None, - apollo_mode: None, - }; - -let get_with_default = (value, default_value) => { - switch (value) { - | Some(value) => Some(value) - | None => default_value - }; -}; - -let run_validations = (config, definition) => { - switch (Validations.run_validators(config, [definition])) { - | (Some(errs), _) => - Some( - errs - |> List.rev - |> List.map(((loc, msg)) => { - let loc = conv_loc(loc); - %stri - [%e make_error_expr(loc, msg)]; - }), - ) - | (None, warnings) => - warnings - |> List.iter(((loc, message)) => { - let loc = conv_loc(loc); - Ocaml_common.Location.print_warning( - loc, - Ocaml_common.Location.formatter_for_warnings^, - Ocaml_common.Warnings.Preprocessor(message), - ); - }); - None; - }; -}; - -let rewrite_definition_interface = - (~query_config: query_config, ~loc, ~delim, ~query, ~module_name, ()) => { - let lexer = Graphql_lexer.make(query); - let delimLength = - switch (delim) { - | Some(s) => 2 + String.length(s) - | None => 1 - }; - - switch (Graphql_lexer.consume(lexer)) { - | Result.Error(e) => - Location.raise_errorf( - ~loc=add_loc(delimLength, loc, e.span), - "%s", - fmt_lex_err(e.item), - ) - - | Result.Ok(tokens) => - let parser = Graphql_parser.make(tokens); - switch (Graphql_parser_document.parse_document(parser)) { - | Result.Error(e) => - Location.raise_errorf( - ~loc=add_loc(delimLength, loc, e.span), - "%s", - fmt_parse_err(e.item), - ) - - | Result.Ok(document) => - let document_with_config = - Result_decoder.generate_config( - ~map_loc=add_loc(delimLength, loc), - ~delimiter=delim, - ~initial_query_config=query_config, - document, - ); - - document_with_config - |> Result_decoder.unify_document_schema - |> Output_bucklescript_module.generate_module_interfaces(module_name); - }; - }; -}; - -let rewrite_definition = - ( - ~query_config: query_config, - ~loc, - ~delim, - ~query, - ~module_name, - ~module_type, - (), - ) => { - let lexer = Graphql_lexer.make(query); - let delimLength = - switch (delim) { - | Some(s) => 2 + String.length(s) - | None => 1 - }; - - switch (Graphql_lexer.consume(lexer)) { - | Result.Error(e) => - Location.raise_errorf( - ~loc=add_loc(delimLength, loc, e.span), - "%s", - fmt_lex_err(e.item), - ) - | Result.Ok(tokens) => - let parser = Graphql_parser.make(tokens); - switch (Graphql_parser_document.parse_document(parser)) { - | Result.Error(e) => - Location.raise_errorf( - ~loc=add_loc(delimLength, loc, e.span), - "%s", - fmt_parse_err(e.item), - ) - | Result.Ok(document) => - let document_with_config = - Result_decoder.generate_config( - ~map_loc=add_loc(delimLength, loc), - ~delimiter=delim, - ~initial_query_config=query_config, - document, - ); - - let errors = - document_with_config - |> List.fold_left( - (acc, (definition, config)) => { - switch (run_validations(config, definition)) { - | Some(error) => [error, ...acc] - | None => acc - } - }, - [], - ) - |> List.rev; - - switch (errors) { - | [] => - try( - document_with_config - |> Result_decoder.unify_document_schema - |> Output_bucklescript_module.generate_modules( - module_name, - module_type, - ) - ) { - | Output_bucklescript_module.Cant_find_fragment_type_with_loc( - location, - fragment_type, - ) => [ - [%stri - [%e - make_error_expr( - Output_bucklescript_utils.conv_loc(location), - "Can't find fragment type: " ++ fragment_type, - ) - ] - ], - ] - } - | errors => errors |> List.concat - }; - }; - }; -}; - -Bucklescript_config.read_config(); - -let get_module_bindings = structure => { - structure - |> filter_map( - fun - | {Parsetree.pstr_desc: Pstr_module(module_binding)} => - Some(module_binding) - | _ => None, - ); -}; - -let get_module_declarations = signature => { - signature - |> filter_map( - fun - | {Parsetree.psig_desc: Psig_module(module_declaration)} => - Some(module_declaration) - | _ => None, - ); -}; - -class mapper = { - as self; - inherit class Ast_traverse.map as super; - pub! signature = sign => { - sign - |> List.fold_left( - (acc, item) => - switch (item) { - | { - psig_desc: - Psig_module({ - pmd_name: {txt: module_name}, - pmd_type: { - pmty_desc: - Pmty_extension(({txt: "graphql", loc}, pstr)), - }, - }), - } => - switch (pstr) { - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant(Pconst_string(query, _, delim)), - _, - }, - _, - ), - _, - }, - ]) => - List.append( - rewrite_definition_interface( - ~query_config=empty_query_config, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name, - (), - ) - |> List.rev, - acc, - ) - | _ => - Location.raise_errorf( - ~loc, - "[%%graphql] accepts a string, e.g. [%%graphql {| { query |}]", - ) - } - | {psig_desc: Psig_recmodule(module_declarations)} as pstr => [ - { - ...pstr, - psig_desc: - Psig_recmodule( - module_declarations - |> List.fold_left( - acc => - fun - | { - pmd_name: {txt: name}, - pmd_type: { - pmty_desc: - Pmty_extension(( - {txt: "graphql", loc}, - pstr, - )), - }, - } - | { - pmd_name: {txt: name}, - pmd_type: { - pmty_desc: - Pmty_extension(( - {txt: "gql", loc}, - pstr, - )), - }, - } => { - switch (pstr) { - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant( - Pconst_string( - query, - _, - delim, - ), - ), - _, - }, - _, - ), - _, - }, - ]) => - List.append( - get_module_declarations( - rewrite_definition_interface( - ~query_config=empty_query_config, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name=name, - (), - ), - ) - |> List.rev, - acc, - ) - | _ => - Location.raise_errorf( - ~loc, - "[%%graphql] accepts a string, e.g. [%%graphql {| { query |}]", - ) - }; - } - | other => [other, ...acc], - [], - ) - |> List.rev, - ), - }, - ...acc, - ] - | other => [super#signature_item(other), ...acc] - }, - [], - ) - |> List.rev; - }; - pub! structure = struc => { - struc - |> List.fold_left( - acc => - fun - | { - pstr_desc: - Pstr_module({ - pmb_name: {txt: _}, - pmb_expr: { - pmod_desc: - Pmod_extension(({txt: "graphql", loc}, pstr)), - }, - }), - } as item - | { - pstr_desc: - Pstr_module({ - pmb_name: {txt: _}, - pmb_expr: { - pmod_desc: Pmod_extension(({txt: "gql", loc}, pstr)), - }, - }), - } as item - | { - pstr_desc: - Pstr_module({ - pmb_name: {txt: _}, - pmb_expr: { - pmod_desc: - Pmod_constraint( - { - pmod_desc: - Pmod_extension(({txt: "graphql", loc}, pstr)), - _, - }, - _, - ), - }, - }), - } as item - | { - pstr_desc: - Pstr_module({ - pmb_name: {txt: _}, - pmb_expr: { - pmod_desc: - Pmod_constraint( - { - pmod_desc: - Pmod_extension(({txt: "gql", loc}, pstr)), - _, - }, - _, - ), - }, - }), - } as item - | { - pstr_desc: - Pstr_eval( - { - pexp_desc: Pexp_extension(({txt: "graphql", loc}, pstr)), - }, - _, - ), - } as item - | { - pstr_desc: - Pstr_eval( - {pexp_desc: Pexp_extension(({txt: "gql", loc}, pstr))}, - _, - ), - } as item - | { - pstr_desc: - Pstr_include({ - pincl_mod: { - pmod_desc: - Pmod_extension(({txt: "graphql", loc}, pstr)), - }, - }), - } as item - | { - pstr_desc: - Pstr_include({ - pincl_mod: { - pmod_desc: Pmod_extension(({txt: "gql", loc}, pstr)), - }, - }), - } as item - | { - pstr_desc: - Pstr_value( - _, - [ - { - pvb_pat: {ppat_desc: _}, - pvb_expr: { - pexp_desc: - Pexp_extension(({txt: "graphql", loc}, pstr)), - }, - }, - ], - ), - } as item - | { - pstr_desc: - Pstr_value( - _, - [ - { - pvb_pat: {ppat_desc: _}, - pvb_expr: { - pexp_desc: - Pexp_extension(({txt: "gql", loc}, pstr)), - }, - }, - ], - ), - } as item => { - let inline = - switch (item) { - | {pstr_desc: Pstr_include(_)} => Some(true) - | _ => None - }; - - let module_name = - switch (item) { - | {pstr_desc: Pstr_module({pmb_name: {txt: name}})} => name - | _ => None - }; - - let module_type = - switch (item) { - // when we specificly constrain a module with a graphql - // extension point. This is not a practical use-case, - // - // module Bla: [%graphql {| ... |} = { ... } - // - // I'll leave it here, but might remove it later... - | { - pstr_desc: - Pstr_module({ - pmb_expr: { - pmod_desc: - Pmod_constraint( - _, - { - pmty_loc, - pmty_attributes, - pmty_desc: - Pmty_extension(( - {txt: "graphql", _}, - PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant( - Pconst_string( - query, - _, - delim, - ), - ), - _, - }, - _, - ), - _, - }, - ]), - )), - }, - ), - }, - _, - }), - } - | { - pstr_desc: - Pstr_module({ - pmb_expr: { - pmod_desc: - Pmod_constraint( - _, - { - pmty_loc, - pmty_attributes, - pmty_desc: - Pmty_extension(( - {txt: "gql", _}, - PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant( - Pconst_string( - query, - _, - delim, - ), - ), - _, - }, - _, - ), - _, - }, - ]), - )), - }, - ), - }, - _, - }), - } => - Some({ - pmty_loc, - pmty_attributes, - pmty_desc: - Pmty_signature( - rewrite_definition_interface( - ~query_config=empty_query_config, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name=None, - (), - ), - ), - }) - | { - pstr_desc: - Pstr_module({ - pmb_expr: { - pmod_desc: Pmod_constraint(_, module_type), - }, - _, - }), - } => - Some(module_type) - | _ => None - }; - switch (pstr) { - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant(Pconst_string(query, _, delim)), - _, - }, - _, - ), - _, - }, - { - pstr_desc: - Pstr_eval( - {pexp_desc: Pexp_record(fields, None), _}, - _, - ), - _, - }, - ]) => - let query_config = - get_query_config_from_trailing_record(fields); - List.append( - rewrite_definition( - ~query_config={ - ...query_config, - inline: - switch (inline) { - | None => query_config.inline - | Some(inline) => Some(inline) - }, - }, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name, - ~module_type, - (), - ) - |> List.rev, - acc, - ); - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant(Pconst_string(query, _, delim)), - _, - }, - _, - ), - _, - }, - ]) => - List.append( - rewrite_definition( - ~query_config={...empty_query_config, inline}, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name, - ~module_type, - (), - ) - |> List.rev, - acc, - ) - | _ => - Location.raise_errorf( - ~loc, - "[%%graphql] accepts a string, e.g. [%%graphql {| { query |}]", - ) - }; - } - | {pstr_desc: Pstr_recmodule(module_bindings)} as pstr => [ - { - ...pstr, - pstr_desc: - Pstr_recmodule( - module_bindings - |> List.fold_left( - acc => - fun - | { - pmb_name: {txt: name}, - pmb_expr: - { - pmod_desc: - Pmod_constraint( - { - pmod_desc: - Pmod_extension(( - {txt: "graphql", loc}, - pstr, - )), - _, - }, - _, - ), - } as module_expr, - } - | { - pmb_name: {txt: name}, - pmb_expr: - { - pmod_desc: - Pmod_constraint( - { - pmod_desc: - Pmod_extension(( - {txt: "gql", loc}, - pstr, - )), - _, - }, - _, - ), - } as module_expr, - } - | { - pmb_name: {txt: name}, - pmb_expr: - { - pmod_desc: - Pmod_extension(( - {txt: "graphql", loc}, - pstr, - )), - } as module_expr, - } - | { - pmb_name: {txt: name}, - pmb_expr: - { - pmod_desc: - Pmod_extension(( - {txt: "gql", loc}, - pstr, - )), - } as module_expr, - } => { - let module_name = name; - let module_type = - switch (module_expr) { - | { - pmod_desc: - Pmod_constraint( - _, - { - pmty_desc: - Pmty_signature(signature), - pmty_loc, - pmty_attributes, - }, - ), - } => - Some({ - pmty_desc: - Pmty_signature( - self#signature(signature), - ), - pmty_loc, - pmty_attributes, - }) - | { - pmod_desc: - Pmod_constraint(_, module_type), - } => - Some(module_type) - | _ => None - }; - switch (pstr) { - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant( - Pconst_string( - query, - _, - delim, - ), - ), - _, - }, - _, - ), - _, - }, - { - pstr_desc: - Pstr_eval( - { - pexp_desc: - Pexp_record(fields, None), - _, - }, - _, - ), - _, - }, - ]) => - List.append( - get_module_bindings( - rewrite_definition( - ~query_config= - get_query_config_from_trailing_record( - fields, - ), - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name, - ~module_type, - (), - ), - ) - |> List.rev, - acc, - ) - | PStr([ - { - pstr_desc: - Pstr_eval( - { - pexp_loc: loc, - pexp_desc: - Pexp_constant( - Pconst_string( - query, - _, - delim, - ), - ), - _, - }, - _, - ), - _, - }, - ]) => - List.append( - get_module_bindings( - rewrite_definition( - ~query_config=empty_query_config, - ~loc=conv_loc_from_ast(loc), - ~delim, - ~query, - ~module_name, - ~module_type, - (), - ), - ) - |> List.rev, - acc, - ) - | _ => - Location.raise_errorf( - ~loc, - "[%%graphql] accepts a string, e.g. [%%graphql {| { query |}]", - ) - }; - } - | other => [other, ...acc], - [], - ) - |> List.rev, - ), - }, - ...acc, - ] - - | other => [super#structure_item(other), ...acc], - [], - ) - |> List.rev; - }; -}; - -let structure_mapper = s => (new mapper)#structure(s); -let signature_mapper = s => (new mapper)#signature(s); - -let argKey = ref(""); -let args = [ - ( - "-custom-field", - Arg.Tuple([ - Arg.String(key => {argKey := key}), - Arg.String( - moduleKey => { - Hashtbl.add(Ppx_config.custom_fields(), argKey^, moduleKey) - }, - ), - ]), - "Adds a global custom field decoder/serializer (format: -custom-field ScalarType Module)", - ), - ( - "-verbose", - Arg.Unit( - () => - Ppx_config.update_config(current => - {...current, verbose_logging: true} - ), - ), - "Defines if logging should be verbose or not", - ), - ( - "-apollo-mode", - Arg.Unit( - () => - Ppx_config.update_config(current => {...current, apollo_mode: true}), - ), - "Automatically add __typename everywhere (necessary for apollo)", - ), - ( - "-schema", - Arg.String( - schema_file => - Ppx_config.update_config(current => {...current, schema_file}), - ), - "", - ), - ( - "-ast-out", - Arg.Bool( - ast_out => - Ppx_config.update_config(current => - { - ...current, - output_mode: ast_out ? Ppx_config.Apollo_AST : Ppx_config.String, - } - ), - ), - "Defines if output string or AST", - ), - ( - "-future-added-value", - Arg.Bool( - future_added_value => - Ppx_config.update_config(current => {...current, future_added_value}), - ), - "Omits the `FutureAddedValue variant for enums if set to false", - ), - ( - "-verbose-errors", - Arg.Unit( - () => - Ppx_config.update_config(current => - {...current, verbose_error_handling: true} - ), - ), - "Verbose error handling. If not defined NODE_ENV will be used", - ), - ( - "-template-tag", - Arg.String( - template_tag => - Ppx_config.update_config(current => - {...current, template_tag: Some(template_tag)} - ), - ), - "Template tag to use", - ), - ( - "-template-tag-import", - Arg.String( - template_tag_import => - Ppx_config.update_config(current => - {...current, template_tag_import: Some(template_tag_import)} - ), - ), - "the import to use for the template tag (default is \"default\")", - ), - ( - "-template-tag-location", - Arg.String( - template_tag_location => - Ppx_config.update_config(current => - {...current, template_tag_location: Some(template_tag_location)} - ), - ), - "the import location for the template tag", - ), - ( - "-template-tag-return-type", - Arg.String( - template_tag_return_type => - Ppx_config.update_config(current => - { - ...current, - template_tag_return_type: Some(template_tag_return_type), - } - ), - ), - "the import location for the template tag", - ), - ( - "-fragment-in-query", - Arg.String( - fun - | "exclude" => - Ppx_config.update_config(current => - {...current, fragment_in_query: Exclude} - ) - | _ => - Ppx_config.update_config(current => - {...current, fragment_in_query: Include} - ), - ), - "Include the full fragment in the query (either 'include' or 'exclude')", - ), - ( - "-extend-query", - Arg.String( - extend_query => - Ppx_config.update_config(current => - {...current, extend_query: Some(extend_query)} - ), - ), - "extend queries with the following functor", - ), - ( - "-extend-query-no-required-variables", - Arg.String( - extend_query_no_required_variables => - Ppx_config.update_config(current => - { - ...current, - extend_query_no_required_variables: - Some(extend_query_no_required_variables), - } - ), - ), - "extend queries having no required variables with the following functor", - ), - ( - "-extend-mutation", - Arg.String( - extend_mutation => - Ppx_config.update_config(current => - {...current, extend_mutation: Some(extend_mutation)} - ), - ), - "extend mutations with the following functor", - ), - ( - "-extend-mutation-no-required-variables", - Arg.String( - extend_mutation_no_required_variables => - Ppx_config.update_config(current => - { - ...current, - extend_mutation_no_required_variables: - Some(extend_mutation_no_required_variables), - } - ), - ), - "extend mutations having no required variables with the following functor", - ), - ( - "-extend-subscription", - Arg.String( - extend_subscription => - Ppx_config.update_config(current => - {...current, extend_subscription: Some(extend_subscription)} - ), - ), - "extend subscriptions with the following functor", - ), - ( - "-extend-subscription-no-required-variables", - Arg.String( - extend_subscription_no_required_variables => - Ppx_config.update_config(current => - { - ...current, - extend_subscription_no_required_variables: - Some(extend_subscription_no_required_variables), - } - ), - ), - "extend subscriptions having no required variables with the following functor", - ), - ( - "-extend-fragment", - Arg.String( - extend_fragment => - Ppx_config.update_config(current => - {...current, extend_fragment: Some(extend_fragment)} - ), - ), - "extend fragments with the following functor", - ), - ( - "-native", - Arg.Unit( - () => Ppx_config.update_config(current => {...current, native: true}), - ), - "native mode (non-ReScript)", - ), -]; - -let () = { - List.iter( - ((k, spec, doc)) => Ppxlib.Driver.add_arg(k, spec, ~doc), - args, - ); - Ppxlib.Driver.register_transformation( - ~preprocess_impl=structure_mapper, - ~preprocess_intf=signature_mapper, - "graphql", - ); -}; diff --git a/src/bucklescript/output_bucklescript_module.re b/src/bucklescript/output_bucklescript_module.re deleted file mode 100644 index c7e4f611..00000000 --- a/src/bucklescript/output_bucklescript_module.re +++ /dev/null @@ -1,1425 +0,0 @@ -open Graphql_ppx_base; -open Result_structure; -open Generator_utils; -open Extract_type_definitions; -open Output_bucklescript_utils; -open Ppxlib; -open Ast_helper; - -exception Cant_find_fragment_type_with_loc(Source_pos.ast_location, string); - -type operation_type = Graphql_ast.operation_type; -type operation_options = {has_required_variables: bool}; - -type definition = - | Fragment - | Operation(operation_type, operation_options); - -module StringSet = Set.Make(String); -module VariableFinderImpl = { - type t = ref(StringSet.t); - let make_self = _ => ref(StringSet.empty); - - include Traversal_utils.AbstractVisitor; - - let enter_variable_value = (self, _, v) => - self := StringSet.add(v.Source_pos.item, self^); - - let from_self = (self: t): StringSet.t => self^; -}; - -let constraint_on_type = (exp, type_name) => { - Exp.constraint_( - exp, - base_type_name( - switch (type_name) { - | None => "string" - | Some(type_name) => type_name - }, - ), - ); -}; - -module VariableFinder = Traversal_utils.Visitor(VariableFinderImpl); - -let find_variables = (config, document) => { - let ctx = Traversal_utils.make_context(config, document); - VariableFinderImpl.from_self(VariableFinder.visit_document(ctx, document)); -}; - -let pretty_print = (query: string): string => { - let indent = ref(1); - let str = - query - |> String.split_on_char('\n') - |> List.map(l => String.trim(l)) - |> List.filter(l => l != "") - |> List.map(line => { - let prevIndent = indent^; - String.iter( - fun - | '{' => indent := indent^ + 1 - | '}' => indent := indent^ - 1 - | _ => (), - line, - ); - - let currIndent = prevIndent < indent^ ? prevIndent : indent^; - let currIndent = currIndent < 1 ? 1 : currIndent; - let line = String.make(currIndent * 2, ' ') ++ line; - line; - }) - |> String.concat("\n"); - str ++ "\n"; -}; - -let compress_parts = (parts: array(Graphql_printer.t)) => { - Graphql_printer.( - parts - |> Array.to_list - |> List.fold_left( - (acc, curr) => { - switch (acc, curr) { - | ([String(s1), ...rest], String(s2)) => [ - String(s1 ++ s2), - ...rest, - ] - | (acc, curr) => [curr, ...acc] - } - }, - [], - ) - |> List.rev - |> Array.of_list - ); -}; - -let make_fragment_query = f => { - Exp.ident({ - Location.txt: Longident.parse(f ++ ".query"), - loc: Location.none, - }); -}; - -let emit_printed_template_query = (parts: array(Graphql_printer.t), config) => { - open Graphql_printer; - - let fragment_query_refs = - switch (config.fragment_in_query) { - | Include => - parts - |> Array.fold_left( - acc => - fun - | String(_) => acc - | FragmentNameRef(_) => acc - | FragmentQueryRef(f) => [f, ...acc], - [], - ) - |> List.rev - | Exclude => [] - }; - - let query = - Array.fold_left( - acc => - fun - | String(s) => acc ++ s - | FragmentNameRef(f) => { - acc ++ f; - } - | FragmentQueryRef(_) => acc, - "", - parts, - ); - let fragment_names = - fragment_query_refs - |> List.mapi((i, _frag) => "frag_" ++ string_of_int(i)); - let fragments = fragment_names |> List.map(name => {"${" ++ name ++ "}\n"}); - - [query, ...fragments] |> List.fold_left((acc, el) => acc ++ el, ""); -}; - -let emit_printed_query = (parts, config) => { - open Graphql_printer; - let make_string = s => { - Exp.constant(Parsetree.Pconst_string(s, Location.none, None)); - }; - let join = (part1, part2) => { - Ast_helper.( - Exp.apply( - Exp.ident({Location.txt: Longident.parse("^"), loc: Location.none}), - [(Nolabel, part1), (Nolabel, part2)], - ) - ); - }; - - let query = - Array.fold_left( - acc => - fun - | String(s) => acc ++ s - | FragmentNameRef(f) => acc ++ f - | FragmentQueryRef(_) => acc, - "", - parts, - ); - - let fragment_query_refs = - switch (config.fragment_in_query) { - | Include => - parts - |> Array.fold_left( - acc => - fun - | String(_) => acc - | FragmentNameRef(_) => acc - | FragmentQueryRef(f) => [make_fragment_query(f), ...acc], - [], - ) - |> List.rev - | Exclude => [] - }; - - fragment_query_refs - |> List.fold_left((acc, el) => join(acc, el), make_string(query)); -}; - -let rec list_literal = - fun - | [] => - Exp.construct({txt: Longident.Lident("[]"), loc: Location.none}, None) - | [value, ...values] => { - Ast_helper.( - Exp.construct( - {txt: Longident.Lident("::"), loc: Location.none}, - Some(Exp.tuple([value, list_literal(values)])), - ) - ); - }; - -let loc = Location.none; -let rec emit_json = config => - fun - | `Assoc(vs) => { - let pairs = - Ast_helper.( - Exp.array( - vs - |> List.map(((key, value)) => - Exp.tuple([ - Exp.constant(Pconst_string(key, Location.none, None)), - emit_json(config, value), - ]) - ), - ) - ); - %expr - Js.Json.object_(Js.Dict.fromArray([%e pairs])); - } - | `List(ls) => { - let values = Ast_helper.Exp.array(List.map(emit_json(config), ls)); - %expr - Js.Json.array([%e values]); - } - | `Bool(true) => [%expr Js.Json.boolean(true)] - | `Bool(false) => [%expr Js.Json.boolean(false)] - | `Null => [%expr Obj.magic(Js.Undefined.empty)] - | `String(s) => [%expr - Js.Json.string( - [%e Ast_helper.Exp.constant(Pconst_string(s, Location.none, None))], - ) - ] - | `Int(i) => [%expr - Js.Json.number( - [%e Ast_helper.Exp.constant(Pconst_float(string_of_int(i), None))], - ) - ] - | `StringExpr(parts) => [%expr - Js.Json.string([%e emit_printed_query(parts, config)]) - ]; - -let wrap_template_tag = (~import=?, ~location=?, ~template_tag=?, source) => { - switch (import, location, template_tag) { - | (None, Some(location), _) - | (Some("default"), Some(location), _) => - "require(\"" ++ location ++ "\")" ++ "`\n" ++ source ++ "`" - | (Some(import), Some(location), _) => - "require(\"" ++ location ++ "\")." ++ import ++ "`\n" ++ source ++ "`" - | (_, _, Some(template_tag)) => template_tag ++ "`\n" ++ source ++ "`" - | _ => source - }; -}; - -let wrap_structure_raw = contents => { - Str.extension(( - {txt: "raw", loc: Location.none}, - PStr([ - { - pstr_desc: - Pstr_eval( - Exp.constant( - Parsetree.Pconst_string(contents, Location.none, None), - ), - [], - ), - pstr_loc: Location.none, - }, - ]), - )); -}; - -let wrap_raw = contents => { - Exp.extension(( - {txt: "raw", loc: Location.none}, - PStr([ - { - pstr_desc: - Pstr_eval( - Exp.constant( - Parsetree.Pconst_string(contents, Location.none, None), - ), - [], - ), - pstr_loc: Location.none, - }, - ]), - )); -}; - -let make_printed_query = (config, document) => { - let source = Graphql_printer.print_document(config.schema, document); - switch (Ppx_config.output_mode()) { - | Ppx_config.Apollo_AST => - Ast_serializer_apollo.serialize_document(source, document) - |> emit_json(config) - - | Ppx_config.String => - switch (config.template_tag_is_function, config.template_tag) { - | (Some(true), (_, location, _)) when location != None => - let source_list = source |> Array.to_list; - Exp.apply( - Exp.ident({ - Location.txt: Longident.Lident("graphql"), - loc: Location.none, - }), - [ - ( - Nolabel, - Exp.array([ - emit_printed_query( - source_list - |> List.filter( - fun - | Graphql_printer.FragmentQueryRef(_) => false - | _ => true, - ) - |> Array.of_list, - config, - ), - ...source_list - |> filter_map( - fun - | Graphql_printer.FragmentQueryRef(_) => - Some([%expr ""]) - | _ => None, - ), - ]), - ), - ...source_list - |> filter_map( - fun - | Graphql_printer.FragmentQueryRef(x) => - Some((Nolabel, make_fragment_query(x))) - | _ => None, - ), - ], - ); - | (_, (template_tag, location, import)) - when template_tag != None || location != None => - open Graphql_printer; - // the only way to emit a template literal for now, using the bs.raw - // extension - let fragments = - source - |> Array.fold_left( - acc => - fun - | String(_) => acc - | FragmentNameRef(_) => acc - | FragmentQueryRef(f) => [f, ...acc], - [], - ) - |> List.rev; - - let template_tag = - wrap_template_tag( - ~template_tag?, - ~location?, - ~import?, - pretty_print(emit_printed_template_query(source, config)), - ); - - constraint_on_type( - switch (config.fragment_in_query, fragments) { - | (Exclude, _) - | (_, []) => wrap_raw(template_tag) - | (Include, fragments) => - let fragment_names = - fragments |> List.mapi((i, _frag) => "frag_" ++ string_of_int(i)); - let frag_fun = - "(" - ++ ( - List.tl(fragment_names) - |> List.fold_left( - (acc, el) => acc ++ ", " ++ el, - List.hd(fragment_names), - ) - ) - ++ ") => "; - Exp.apply( - wrap_raw(frag_fun ++ template_tag), - fragments |> List.map(f => (Nolabel, make_fragment_query(f))), - ); - }, - config.template_tag_return_type, - ); - - | _ => emit_printed_query(source, config) - } - }; -}; - -let signature_module = (name, signature) => { - { - psig_loc: Location.none, - psig_desc: - Psig_module({ - pmd_loc: Location.none, - pmd_name: { - txt: Some(Generator_utils.capitalize_ascii(name)), - loc: Location.none, - }, - pmd_type: Mty.signature(signature), - pmd_attributes: [], - }), - }; -}; - -let wrap_module = (~loc as _, ~module_type=?, name: string, contents) => { - let loc = Location.none; - { - pstr_desc: - Pstr_module({ - pmb_name: { - txt: Some(Generator_utils.capitalize_ascii(name)), - loc, - }, - pmb_expr: { - switch (module_type) { - | Some(module_type) => { - pmod_desc: - Pmod_constraint(Mod.structure(contents), module_type), - pmod_loc: loc, - pmod_attributes: [], - } - | None => Mod.structure(contents) - }; - }, - - pmb_attributes: [], - pmb_loc: loc, - }), - pstr_loc: loc, - }; -}; - -let get_functor = (config, definition) => - switch (config.extend) { - | Some(funct) => Some(funct) - | None => - switch (definition) { - | Fragment => Ppx_config.extend_fragment() - | Operation(Query, {has_required_variables: false}) => - switch (Ppx_config.extend_query_no_required_variables()) { - | Some(extension) => Some(extension) - | None => Ppx_config.extend_query() - } - | Operation(Query, _) => Ppx_config.extend_query() - | Operation(Mutation, {has_required_variables: false}) => - switch (Ppx_config.extend_mutation_no_required_variables()) { - | Some(extension) => Some(extension) - | None => Ppx_config.extend_mutation() - } - | Operation(Mutation, _) => Ppx_config.extend_mutation() - | Operation(Subscription, {has_required_variables: false}) => - switch (Ppx_config.extend_subscription_no_required_variables()) { - | Some(extension) => Some(extension) - | None => Ppx_config.extend_subscription() - } - | Operation(Subscription, _) => Ppx_config.extend_subscription() - } - }; - -let wrap_query_module = - (~loc as module_loc, ~module_type, definition, name, contents, config) => { - let loc = Location.none; - let module_name = - switch (name) { - | Some(name) => name ++ "_inner" - | None => "Inner" - }; - - let funct = get_functor(config, definition); - - let signature = - switch (module_type) { - | {pmty_desc: Pmty_signature(signature)} => signature - | _ => [] - }; - - let inner_module = - wrap_module(~module_type, ~loc=Location.none, module_name, contents); - - let (contents, module_type) = - switch (funct) { - | Some(funct) => - let contents = [ - inner_module, - Str.include_( - Incl.mk(Mod.ident({txt: Longident.parse(module_name), loc})), - ), - Str.include_( - Incl.mk( - Mod.apply( - Mod.ident({txt: Longident.parse(funct), loc}), - Mod.ident({txt: Longident.parse(module_name), loc}), - ), - ), - ), - ]; - - let signature = - List.concat([ - [signature_module(module_name, signature)], - [ - Sig.include_( - Incl.mk( - Mty.typeof_( - Mod.mk( - Pmod_structure([ - Str.include_( - Incl.mk( - Mod.ident({ - txt: Longident.parse(module_name), - loc, - }), - ), - ), - ]), - ), - ), - ), - ), - ], - [ - Sig.include_( - Incl.mk( - Mty.typeof_( - Mod.mk( - Pmod_structure([ - Str.include_( - Incl.mk( - Mod.apply( - Mod.ident({txt: Longident.parse(funct), loc}), - Mod.ident({ - txt: Longident.parse(module_name), - loc, - }), - ), - ), - ), - ]), - ), - ), - ), - ), - ], - ]); - - (contents, Mty.mk(~loc=module_loc, Pmty_signature(signature))); - | None => (contents, module_type) - }; - - switch (funct, name) { - | (Some(_), Some(name)) => [ - wrap_module(~module_type, ~loc=module_loc, name, contents), - ] - | (Some(_), None) => contents - | (None, Some(name)) => [ - wrap_module(~module_type, ~loc=module_loc, name, contents), - ] - | (None, None) => contents - }; -}; - -let wrap_query_module_signature = (~signature, definition, name, config) => { - let loc = Location.none; - let module_name = - switch (name) { - | Some(name) => name ++ "_inner" - | None => "Inner" - }; - - let funct = get_functor(config, definition); - - let signature = - switch (funct) { - | Some(funct) => - List.concat([ - [signature_module(module_name, signature)], - signature, - [ - Sig.include_( - Incl.mk( - Mty.typeof_( - Mod.mk( - Pmod_structure([ - Str.include_( - Incl.mk( - Mod.apply( - Mod.ident({txt: Longident.parse(funct), loc}), - Mod.ident({ - txt: Longident.parse(module_name), - loc, - }), - ), - ), - ), - ]), - ), - ), - ), - ), - ], - ]) - | None => signature - }; - - switch (funct, name) { - | (Some(_), Some(name)) => [signature_module(name, signature)] - | (Some(_), None) => signature - | (None, Some(name)) => [signature_module(name, signature)] - | (None, None) => signature - }; -}; - -let generate_operation_signature = (config, variable_defs, res_structure) => { - let raw_types = - config.native - ? [[%sigi: type t]] - : Output_bucklescript_types.generate_type_signature_items( - config, - res_structure, - true, - None, - None, - ); - let types = - Output_bucklescript_types.generate_type_signature_items( - config, - res_structure, - false, - None, - None, - ); - let raw_arg_types = - Output_bucklescript_types.generate_arg_type_signature_items( - true, - config, - variable_defs, - ); - let arg_types = - Output_bucklescript_types.generate_arg_type_signature_items( - false, - config, - variable_defs, - ); - let extracted_args = extract_args(config, variable_defs); - let serialize_variable_signatures = - Output_bucklescript_serializer.generate_serialize_variable_signatures( - extracted_args, - ); - let variable_constructor_signatures = - Output_bucklescript_serializer.generate_variable_constructor_signatures( - extracted_args, - ); - let has_required_variables = has_required_variables(extracted_args); - - [ - [[%sigi: [@ocaml.warning "-32-30"]]], - [signature_module("Raw", List.append(raw_types, raw_arg_types))], - types, - arg_types, - [ - [%sigi: - /** The GraphQL query */ - let query: [%t - base_type_name( - switch (config.template_tag, config.template_tag_return_type) { - | ((Some(_), _, _), Some(return_type)) - | ((_, Some(_), _), Some(return_type)) => return_type - | _ => "string" - }, - ) - ] - ], - ], - [ - [%sigi: - /** Parse the JSON-compatible GraphQL data to ReasonML data types */ - let parse: Raw.t => t - ], - [%sigi: - /** Serialize the ReasonML GraphQL data that was parsed using the parse -function back to the original JSON compatible data */ - let serialize: t => Raw.t - ], - ], - serialize_variable_signatures, - switch (variable_constructor_signatures) { - | [] => [[%sigi: let makeVariables: unit => t_variables]] - | signatures => signatures - }, - has_required_variables - ? [] : [[%sigi: let makeDefaultVariables: unit => t_variables]], - config.native - ? [ - [%sigi: - external unsafe_fromJson: Yojson.Basic.t => Raw.t = "%identity" - ], - [%sigi: external toJson: Raw.t => Yojson.Basic.t = "%identity"], - [%sigi: - external variablesToJson: Raw.t_variables => Yojson.Basic.t = - "%identity" - ], - ] - : [ - [%sigi: external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"], - [%sigi: external toJson: Raw.t => Js.Json.t = "%identity"], - [%sigi: - external variablesToJson: Raw.t_variables => Js.Json.t = "%identity" - ], - ], - ] - |> List.concat; -}; - -let rec create_arity_fn = (arity, typ) => { - switch (arity) { - | 0 => typ - | arity => Typ.arrow(Nolabel, typ, create_arity_fn(arity - 1, typ)) - }; -}; - -let graphql_external = (config: output_config, document) => { - switch (config) { - | { - template_tag: (import, Some(location), _), - template_tag_return_type, - template_tag_is_function: Some(true), - } => - let return_type = - switch (template_tag_return_type) { - | None => "string" - | Some(return_type) => return_type - }; - let import = - switch (import) { - | None => "default" - | Some(import) => import - }; - - let arity = - Graphql_printer.print_document(config.schema, document) - |> Array.fold_left( - (arity, el) => - switch (el) { - | Graphql_printer.FragmentQueryRef(_) => arity + 1 - | _ => arity - }, - 0, - ); - - [ - Ast_helper.( - Str.primitive( - Val.mk( - ~attrs=[ - Ast_helper.Attr.mk( - {txt: "bs.module", loc: Location.none}, - PStr([Str.eval(const_str_expr(location))]), - ), - ], - ~prim=[import], - {txt: "graphql", loc: Location.none}, - Typ.arrow( - Nolabel, - [%type: array(string)], - create_arity_fn(arity, base_type_name(return_type)), - ), - ), - ) - ), - ]; - | _ => [] - }; -}; - -let generate_operation_implementation = - (config, variable_defs, _has_error, operation, res_structure) => { - let parse_fn = - Output_bucklescript_parser.generate_parser( - config, - [], - Graphql_ast.Operation(operation), - res_structure, - ); - let serialize_fn = - Output_bucklescript_serializer.generate_serializer( - config, - [], - Graphql_ast.Operation(operation), - None, - res_structure, - ); - let types = - Output_bucklescript_types.generate_type_structure_items( - config, - res_structure, - false, - None, - None, - ); - let raw_types = - config.native - ? [[%stri type t = Yojson.Basic.t]] - : Output_bucklescript_types.generate_type_structure_items( - config, - res_structure, - true, - None, - None, - ); - let arg_types = - Output_bucklescript_types.generate_arg_type_structure_items( - false, - config, - variable_defs, - ); - let raw_arg_types = - Output_bucklescript_types.generate_arg_type_structure_items( - true, - config, - variable_defs, - ); - let extracted_args = extract_args(config, variable_defs); - let serialize_variable_functions = - Output_bucklescript_serializer.generate_serialize_variables( - extracted_args, - ); - let variable_constructors = - Output_bucklescript_serializer.generate_variable_constructors( - extracted_args, - ); - let has_required_variables = has_required_variables(extracted_args); - - let document = [Graphql_ast.Operation(operation)]; - let contents = { - let printed_query = make_printed_query(config, document); - - List.concat([ - List.concat([ - [[%stri [@ocaml.warning "-32-30"]]], - [ - wrap_module( - ~loc=Location.none, - "Raw", - List.append(raw_types, raw_arg_types), - ), - ], - types, - arg_types, - graphql_external(config, document), - [ - [%stri let query = [%e printed_query]], - [%stri let parse: Raw.t => t = value => [%e parse_fn]], - [%stri let serialize: t => Raw.t = value => [%e serialize_fn]], - ], - [serialize_variable_functions], - switch (variable_constructors) { - | None => [[%stri let makeVariables = () => ()]] - | Some(c) => [c] - }, - has_required_variables - ? [] : [[%stri let makeDefaultVariables = () => makeVariables()]], - config.native - ? [ - [%stri - external unsafe_fromJson: Yojson.Basic.t => Raw.t = "%identity" - ], - [%stri external toJson: Raw.t => Yojson.Basic.t = "%identity"], - [%stri - external variablesToJson: Raw.t_variables => Yojson.Basic.t = - "%identity" - ], - ] - : [ - [%stri external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"], - [%stri external toJson: Raw.t => Js.Json.t = "%identity"], - [%stri - external variablesToJson: Raw.t_variables => Js.Json.t = - "%identity" - ], - ], - ]), - ]); - }; - - let name = - switch (operation) { - | {item: {o_name: Some({item: name})}} => Some(name) - | _ => None - }; - ( - Operation( - operation.item.o_type, - {has_required_variables: has_required_variables}, - ), - name, - contents, - operation.span |> config.map_loc |> conv_loc, - ); -}; - -let generate_fragment_signature = - ( - config, - name, - variable_definitions, - _has_error, - fragment: Source_pos.spanning(Graphql_ast.fragment), - type_name, - res_structure, - ) => { - let types = - Output_bucklescript_types.generate_type_signature_items( - config, - res_structure, - false, - type_name, - Some(( - fragment.item.fg_type_condition.item, - fragment.item.fg_name.span, - )), - ); - - let raw_types = - config.native - ? [[%sigi: type t]] - : Output_bucklescript_types.generate_type_signature_items( - config, - res_structure, - true, - None, - Some(( - fragment.item.fg_type_condition.item, - fragment.item.fg_name.span, - )), - ); - - let rec make_labeled_fun_sig = final_type => - fun - | [] => final_type - | [ - ({Source_pos.item: name}, {Graphql_ast.vd_type: {item: type_ref}}), - ...tl, - ] => { - Typ.arrow( - Labelled(name), - Typ.variant( - [ - { - prf_desc: - Rtag( - { - txt: - Output_bucklescript_parser.generate_poly_type_ref_name( - type_ref, - ), - loc: Location.none, - }, - true, - [], - ), - prf_loc: Location.none, - prf_attributes: [], - }, - ], - Closed, - None, - ), - make_labeled_fun_sig(final_type, tl), - ); - }; - - let verify_parse = - make_labeled_fun_sig( - Typ.arrow( - Labelled("fragmentName"), - Typ.variant( - [ - { - prf_desc: Rtag({txt: name, loc: Location.none}, true, []), - prf_loc: Location.none, - prf_attributes: [], - }, - ], - Closed, - None, - ), - Typ.arrow(Nolabel, base_type_name("Raw.t"), base_type_name("t")), - ), - switch (variable_definitions) { - | Some({Source_pos.item: variable_definitions}) => variable_definitions - | None => [] - }, - ); - - let verify_name = - Typ.arrow( - Nolabel, - Typ.variant( - [ - { - prf_desc: Rtag({txt: name, loc: Location.none}, true, []), - prf_loc: Location.none, - prf_attributes: [], - }, - ], - Closed, - None, - ), - base_type_name("unit"), - ); - let type_name = base_type_name(Option.get_or_else("t", type_name)); - - [ - [[%sigi: [@ocaml.warning "-32-30"]]], - [signature_module("Raw", raw_types)], - types, - [ - [%sigi: - /** the GraphQL fragment */ - let query: [%t - base_type_name( - switch (config.template_tag, config.template_tag_return_type) { - | ((Some(_), _, _), Some(return_type)) - | ((_, Some(_), _), Some(return_type)) => return_type - | _ => "string" - }, - ) - ] - ], - [%sigi: - /** Parse the raw JSON-compatible GraphQL data into ReasonML data types */ - let parse: Raw.t => [%t type_name] - ], - [%sigi: - /** Serialize the ReasonML GraphQL data that was parsed using the parse -function back to the original JSON-compatible data */ - let serialize: [%t type_name] => Raw.t - ], - [%sigi: let verifyArgsAndParse: [%t verify_parse]], - [%sigi: let verifyName: [%t verify_name]], - ], - config.native - ? [ - [%sigi: - external unsafe_fromJson: Yojson.Basic.t => Raw.t = "%identity" - ], - [%sigi: external toJson: Raw.t => Yojson.Basic.t = "%identity"], - ] - : [ - [%sigi: external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"], - [%sigi: external toJson: Raw.t => Js.Json.t = "%identity"], - ], - ] - |> List.concat; -}; -let generate_fragment_implementation = - ( - config, - name, - variable_definitions: - option(Source_pos.spanning(Graphql_ast.variable_definitions)), - _has_error, - fragment, - type_name, - res_structure, - ) => { - let parse_fn = - Output_bucklescript_parser.generate_parser( - config, - [], - Graphql_ast.Fragment(fragment), - res_structure, - ); - let serialize_fn = - Output_bucklescript_serializer.generate_serializer( - config, - [], - Graphql_ast.Fragment(fragment), - None, - res_structure, - ); - let types = - Output_bucklescript_types.generate_type_structure_items( - config, - res_structure, - false, - type_name, - Some(( - fragment.item.fg_type_condition.item, - fragment.item.fg_name.span, - )), - ); - let raw_types = - config.native - ? [[%stri type t = Yojson.Basic.t]] - : Output_bucklescript_types.generate_type_structure_items( - config, - res_structure, - true, - None, - Some(( - fragment.item.fg_type_condition.item, - fragment.item.fg_name.span, - )), - ); - - let rec make_labeled_fun = body => - fun - | [] => body - | [ - ({Source_pos.item: name}, {Graphql_ast.vd_type: {item: type_ref}}), - ...tl, - ] => { - Ast_helper.( - Exp.fun_( - Labelled(name), - None, - Pat.constraint_( - Pat.var({txt: "_" ++ name, loc: Location.none}), - Typ.variant( - [ - { - prf_desc: - Rtag( - { - txt: - Output_bucklescript_parser.generate_poly_type_ref_name( - type_ref, - ), - loc: Location.none, - }, - true, - [], - ), - prf_loc: Location.none, - prf_attributes: [], - }, - ], - Closed, - None, - ), - ), - make_labeled_fun(body, tl), - ) - ); - }; - - let document = [Graphql_ast.Fragment(fragment)]; - let printed_query = make_printed_query(config, document); - let verify_parse = - make_labeled_fun( - Exp.fun_( - Labelled("fragmentName"), - None, - Pat.constraint_( - Pat.var({txt: "_" ++ name, loc: Location.none}), - Typ.variant( - [ - { - prf_desc: Rtag({txt: name, loc: Location.none}, true, []), - prf_loc: Location.none, - prf_attributes: [], - }, - ], - Closed, - None, - ), - ), - [%expr (value: Raw.t) => parse(value)], - ), - switch (variable_definitions) { - | Some({Source_pos.item: variable_definitions}) => variable_definitions - | None => [] - }, - ); - let verifyName = - Ast_helper.( - Exp.function_([ - Exp.case( - Pat.variant(name, None), - Exp.construct( - {txt: Longident.Lident("()"), loc: Location.none}, - None, - ), - ), - ]) - ); - - let type_name = base_type_name(Option.get_or_else("t", type_name)); - let contents = - [ - [[%stri [@ocaml.warning "-32-30"]]], - [wrap_module(~loc=Location.none, "Raw", raw_types)], - types, - graphql_external(config, document), - [ - [%stri let query = [%e printed_query]], - [%stri let parse: Raw.t => [%t type_name] = value => [%e parse_fn]], - [%stri - let serialize: [%t type_name] => Raw.t = value => [%e serialize_fn] - ], - ], - [ - [%stri let verifyArgsAndParse = [%e verify_parse]], - [%stri let verifyName = [%e verifyName]], - ], - config.native - ? [ - [%stri - external unsafe_fromJson: Yojson.Basic.t => Raw.t = "%identity" - ], - [%stri external toJson: Raw.t => Yojson.Basic.t = "%identity"], - ] - : [ - [%stri external unsafe_fromJson: Js.Json.t => Raw.t = "%identity"], - [%stri external toJson: Raw.t => Js.Json.t = "%identity"], - ], - ] - |> List.concat; - - ( - Fragment, - Some(Generator_utils.capitalize_ascii(name)), - contents, - fragment.span |> config.map_loc |> conv_loc, - ); -}; - -let generate_definition = config => - fun - | Def_operation({ - variable_definitions: vdefs, - has_error, - operation, - inner: structure, - }) => ( - generate_operation_implementation( - config, - vdefs, - has_error, - operation, - structure, - ), - generate_operation_signature(config, vdefs, structure), - ) - | Def_fragment({ - name, - variable_definitions, - has_error, - fragment, - type_name, - inner: structure, - }) => - try(( - generate_fragment_implementation( - config, - name, - variable_definitions, - has_error, - fragment, - type_name, - structure, - ), - generate_fragment_signature( - config, - name, - variable_definitions, - has_error, - fragment, - type_name, - structure, - ), - )) { - | Graphql_printer.Cant_find_fragment_type( - fragment_type: Source_pos.spanning(string), - ) => - raise( - Cant_find_fragment_type_with_loc( - config.map_loc(fragment_type.span), - fragment_type.item, - ), - ) - }; - -let generate_modules = (module_name, module_type, operations) => { - switch (operations) { - | [] => [] - | [(operation, config)] => - switch (generate_definition(config, operation)) { - | ((definition, Some(name), contents, loc), signature) => - let module_type = - switch (module_type) { - | Some(module_type) => module_type - | None => Mty.mk(Pmty_signature(signature)) - }; - - wrap_query_module( - ~loc, - ~module_type, - definition, - switch (config.inline, module_name) { - | (true, _) => None - | (_, Some(name)) => Some(name) - | (_, None) => Some(name) - }, - contents, - config, - ); - | ((definition, None, contents, loc), signature) => - let module_type = - switch (module_type) { - | Some(module_type) => module_type - | None => Mty.mk(Pmty_signature(signature)) - }; - wrap_query_module( - ~loc, - ~module_type, - definition, - module_name, - contents, - config, - ); - } - | operations => - let contents = - operations - |> List.map(((operation, config)) => - (generate_definition(config, operation), config) - ) - |> List.mapi( - (i, (((definition, name, contents, loc), signature), config)) => { - let module_type = - switch (module_type) { - | Some(module_type) => module_type - | None => Mty.mk(Pmty_signature(signature)) - }; - switch (name) { - | Some(name) => - wrap_query_module( - ~loc, - ~module_type, - definition, - Some(name), - contents, - config, - ) - - | None => - wrap_query_module( - ~loc, - ~module_type, - definition, - Some("Untitled" ++ string_of_int(i)), - contents, - config, - ) - }; - }) - |> List.concat; - - switch (module_name) { - | Some(module_name) => [ - wrap_module(~loc=Location.none, module_name, contents), - ] - | None => contents - }; - }; -}; - -let generate_module_interfaces = (module_name, operations) => { - switch (operations) { - | [] => [] - | [(operation, config)] => - switch (generate_definition(config, operation)) { - | ((definition, Some(name), _contents, _loc), signature) => - wrap_query_module_signature( - ~signature, - definition, - switch (config.inline, module_name) { - | (true, _) => None - | (_, Some(name)) => Some(name) - | (_, None) => Some(name) - }, - config, - ) - | ((definition, None, _contents, _loc), signature) => - wrap_query_module_signature(~signature, definition, module_name, config) - } - | operations => - let contents = - operations - |> List.map(((operation, config)) => - (generate_definition(config, operation), config) - ) - |> List.mapi((i, (((definition, name, _, _), signature), config)) => { - switch (name) { - | Some(name) => - wrap_query_module_signature( - ~signature, - definition, - Some(name), - config, - ) - - | None => - wrap_query_module_signature( - ~signature, - definition, - Some("Untitled" ++ string_of_int(i)), - config, - ) - } - }) - |> List.concat; - - switch (module_name) { - | Some(module_name) => [signature_module(module_name, contents)] - | None => contents - }; - }; -}; diff --git a/src/bucklescript/output_bucklescript_parser.re b/src/bucklescript/output_bucklescript_parser.re deleted file mode 100644 index a7648aa6..00000000 --- a/src/bucklescript/output_bucklescript_parser.re +++ /dev/null @@ -1,851 +0,0 @@ -open Graphql_ppx_base; -open Result_structure; -open Schema; - -open Ppxlib; - -open Generator_utils; -open Output_bucklescript_utils; -open Output_bucklescript_types; -open Extract_type_definitions; - -// Cheap way of preventing location override from types module -// Might refactor this later -let conv_loc = _ => Location.none; - -let record_to_object = (loc, record) => { - Ast_helper.( - Exp.extension(( - {txt: "bs.obj", loc: conv_loc(loc)}, - PStr([[%stri [%e record]]]), - )) - ); -}; - -let raw_opaque_object = (interface_fragments, fields) => { - let has_fragments = - fields - |> List.exists( - fun - | Fr_fragment_spread(_) => true - | _ => false, - ); - switch (has_fragments, interface_fragments) { - | (true, _) => true - | (_, Some((_, []))) => false - | (_, Some((_, _))) => true - | _ => false - }; -}; - -let rec generate_poly_type_ref_name = (type_ref: Graphql_ast.type_ref) => { - switch (type_ref) { - | Tr_named({item: name}) => name - | Tr_list({item: type_ref}) => - "ListOf_" ++ generate_poly_type_ref_name(type_ref) - | Tr_non_null_named({item: name}) => "NonNull_" ++ name - | Tr_non_null_list({item: type_ref}) => - "NonNullListOf_" ++ generate_poly_type_ref_name(type_ref) - }; -}; - -let get_variable_definitions = (definition: Graphql_ast.definition) => { - switch (definition) { - | Fragment({item: {fg_variable_definitions: Some({item: definitions})}}) - | Operation({item: {o_variable_definitions: Some({item: definitions})}}) => - Graphql_ast.( - definitions - |> List.fold_left( - ( - acc, - ( - {Source_pos.item: name, span}, - {vd_type: {item: type_ref, span: type_span}}, - ), - ) => - [ - (name, generate_poly_type_ref_name(type_ref), span, type_span), - ...acc, - ], - [], - ) - ) - | _ => [] - }; -}; - -let make_error_raiser = message => - if (Ppx_config.native()) { - if (Ppx_config.verbose_error_handling()) { - %expr - raise(Failure("graphql-ppx: " ++ [%e message])); - } else { - %expr - raise(Failure("Unexpected GraphQL query response")); - }; - } else if (Ppx_config.verbose_error_handling()) { - %expr - Js.Exn.raiseError("graphql-ppx: " ++ [%e message]); - } else { - %expr - Js.Exn.raiseError("Unexpected GraphQL query response"); - }; - -let raw_value = loc => [@metaloc loc] [%expr value]; - -let generate_poly_enum_decoder = (loc, enum_meta, omit_future_value) => { - let enum_match_arms = - Ast_helper.( - enum_meta.em_values - |> List.map(({evm_name, _}) => - Exp.case( - const_str_pat(evm_name), - Exp.variant(to_valid_ident(evm_name), None), - ) - ) - ); - - let fallback_arm = - omit_future_value - ? Ast_helper.( - Exp.case( - Pat.any(), - Exp.apply( - Exp.ident(mknoloc(Longident.parse("raise"))), - [ - ( - Nolabel, - Exp.construct( - mknoloc(Longident.parse("Not_found")), - None, - ), - ), - ], - ), - ) - ) - : Ast_helper.( - Exp.case( - Pat.var({loc: conv_loc(loc), txt: "other"}), - Exp.variant( - "FutureAddedValue", - Some( - Exp.ident({ - Location.txt: Longident.parse("other"), - loc: conv_loc(loc), - }), - ), - ), - ) - ); - - let match_expr = - Ast_helper.( - Exp.match( - Ppx_config.native() - ? [@metaloc conv_loc(loc)] - [%expr value |> Yojson.Basic.Util.to_string] - : [@metaloc conv_loc(loc)] [%expr (Obj.magic(value): string)], - List.concat([enum_match_arms, [fallback_arm]]), - ) - ); - - %expr - [%e match_expr]; -}; - -let generate_fragment_parse_fun = (config, loc, name, arguments, definition) => { - open Ast_helper; - let ident = - Ast_helper.Exp.ident({ - loc: loc |> Output_bucklescript_utils.conv_loc, - txt: Longident.parse(name ++ ".verifyArgsAndParse"), - }); - let variable_defs = get_variable_definitions(definition); - let labeled_args = - variable_defs - |> List.filter(((name, _, _, _)) => - arguments |> List.exists(arg => arg == name) - ) - |> List.map(((arg_name, type_, _span, type_span)) => - ( - Labelled(arg_name), - Exp.variant( - ~loc= - config.map_loc(type_span) |> Output_bucklescript_utils.conv_loc, - type_, - None, - ), - ) - ); - - Ast_helper.Exp.apply( - ~loc=loc |> Output_bucklescript_utils.conv_loc, - ident, - List.append( - labeled_args, - [ - ( - Labelled("fragmentName"), - Exp.variant( - /// this is the location that happens in the error - ~loc=loc |> Output_bucklescript_utils.conv_loc, - name, - None, - ), - ), - ( - Nolabel, - config.native - ? Ast_helper.Exp.apply( - Ast_helper.Exp.ident({ - loc: Location.none, - txt: Longident.parse(name ++ ".unsafe_fromJson"), - }), - [(Nolabel, ident_from_string("value"))], - ) - : ident_from_string(~loc, "value"), - ), - ], - ), - ); -}; - -let generate_solo_fragment_spread_decoder = - (config, loc, name, arguments, definition) => { - generate_fragment_parse_fun(config, loc, name, arguments, definition); -}; - -let generate_error = (loc, message) => { - let loc = conv_loc(loc); - let error = Ocaml_common.Location.error(~loc, message); - let ext = Ocaml_common.Ast_mapper.extension_of_error(error); - let extension = Ocaml_common.Ast_helper.Exp.extension(~loc, ext); - let%expr _value = value; - %e - To_ppxlib.copy_expression(extension); -}; - -let rec generate_nullable_decoder = (config, loc, inner, path, definition) => - config.native - ? [@metaloc loc] - ( - switch%expr (value) { - | `Null => None - | value => - Some([%e generate_parser(config, path, definition, inner)]) - } - ) - : [@metaloc loc] - ( - switch%expr (Js.toOption(value)) { - | Some(value) => - Some([%e generate_parser(config, path, definition, inner)]) - | None => None - } - ) -and generate_array_decoder = (config, loc, inner, path, definition) => - config.native - ? [@metaloc loc] - ( - switch%expr (value) { - | `List(json_list) => - List.map( - value => { - %e - generate_parser(config, path, definition, inner) - }, - json_list, - ) - |> Array.of_list - | _ => [||] - } - ) - : [@metaloc loc] - [%expr - value - |> Js.Array.map(value => { - %e - generate_parser(config, path, definition, inner) - }) - ] -and generate_custom_decoder = (config, loc, ident, inner, path, definition) => - [@metaloc loc] - { - %expr - [%e ident_from_string(ident ++ ".parse")]( - [%e generate_parser(config, path, definition, inner)], - ); - } -and generate_object_decoder = - ( - ~config, - ~loc, - ~name as _name, - ~path, - ~definition, - ~existing_record, - ~interface_fragments, - fields, - ) => { - // whether we can use inline values, this compiles to better javascript - // but we can't use this if we are constructing objects instead of records - let do_obj_constructor_base = () => { - open Ast_helper; - let opaque = raw_opaque_object(interface_fragments, fields); - let object_type = base_type_name("Raw." ++ generate_type_name(path)); - - let get_value = - fun - | Fr_named_field({name: key, type_: inner}) => - config.native - ? [@metaloc conv_loc(loc)] - { - let%expr value = - Yojson.Basic.Util.member([%e const_str_expr(key)], value); - - %e - generate_parser(config, [key, ...path], definition, inner); - } - : [@metaloc conv_loc(loc)] - { - let%expr value = - switch%e (opaque) { - | true => - %expr - Obj.magic( - Js.Dict.unsafeGet( - Obj.magic(value), - [%e const_str_expr(key)], - ), - ) - - | false => - Ast_helper.Exp.field( - Exp.constraint_(ident_from_string("value"), object_type), - { - loc: Location.none, - Location.txt: Longident.parse(to_valid_ident(key)), - }, - ) - }; - - %e - generate_parser(config, [key, ...path], definition, inner); - } - - | Fr_fragment_spread({loc, name, arguments}) => - Ppx_config.native() - ? generate_fragment_parse_fun( - config, - loc, - name, - arguments, - definition, - ) - : { - let our_loc = loc; - let loc = conv_loc(loc); - [@metaloc loc] - { - let%expr value: [%t base_type_name(~loc, name ++ ".Raw.t")] = - Obj.magic(value); - %e - generate_fragment_parse_fun( - config, - our_loc, - name, - arguments, - definition, - ); - }; - }; - - let get_record_contents_inline = - fun - | Fr_fragment_spread({key}) as field - | Fr_named_field({name: key}) as field => ( - {txt: Longident.parse(to_valid_ident(key)), loc: conv_loc(loc)}, - get_value(field), - ); - - let record_fields = List.map(get_record_contents_inline, fields); - - let record_fields = - switch (interface_fragments) { - | None - | Some((_, [])) => record_fields - | Some((interface_name, fragments)) => [ - ( - {txt: Longident.Lident("fragment"), loc: Location.none}, - generate_poly_variant_interface_decoder( - config, - conv_loc(loc), - interface_name, - fragments, - [interface_name, ...path], - definition, - ), - ), - ...record_fields, - ] - }; - - Exp.record(record_fields, None); - }; - - [@metaloc loc] - Ast_helper.( - Exp.constraint_( - do_obj_constructor_base(), - base_type_name( - switch (existing_record) { - | None => generate_type_name(path) - | Some(type_name) => type_name - }, - ), - ) - ); -} -and generate_poly_variant_selection_set_decoder = - (config, loc, name, fields, path, definition) => { - let rec generator_loop = - fun - | [({item: field}: Result_structure.name, inner), ...next] => { - let field_name = Compat.capitalize_ascii(field); - let variant_decoder = - Ast_helper.( - Exp.variant( - field_name, - Some( - generate_parser(config, [field, ...path], definition, inner), - ), - ) - ); - config.native - ? [@metaloc loc] - { - let%expr temp = - Yojson.Basic.Util.member([%e const_str_expr(field)], value); - - switch (temp) { - | `Null => - %e - generator_loop(next) - | _ => - let value = temp; - %e - variant_decoder; - }; - } - : [@metaloc loc] - { - let%expr temp = - Js.Dict.unsafeGet( - Obj.magic(value), - [%e const_str_expr(field)], - ); - - switch (Js.Json.decodeNull(temp)) { - | None => - let value = temp; - %e - variant_decoder; - | Some(_) => - %e - generator_loop(next) - }; - }; - } - | [] => - make_error_raiser( - [%expr - "All fields on variant selection set on type " - ++ [%e const_str_expr(name)] - ++ " were null" - ], - ); - - config.native - ? [@metaloc loc] - ( - switch%expr (value) { - | `Null => - %e - make_error_raiser( - [%expr - "Expected type " - ++ [%e const_str_expr(name)] - ++ " to be an object" - ], - ) - | value => - %e - generator_loop(fields) - } - ) - : [@metaloc loc] - ( - switch%expr (Js.Json.decodeObject(Obj.magic(value): Js.Json.t)) { - | None => - %e - make_error_raiser( - [%expr - "Expected type " - ++ [%e const_str_expr(name)] - ++ " to be an object" - ], - ) - | Some(value) => - %e - generator_loop(fields) - } - ); -} -and generate_poly_variant_interface_decoder = - (config, loc, _name, fragments, path, definition) => { - let fallback_case = { - open Ast_helper; - let name_pattern = Pat.any(); - - Exp.variant("UnspecifiedFragment", Some([%expr typename])) - |> Exp.case(name_pattern); - }; - - let fragment_cases = - List.map( - ((type_name, inner)) => { - open Ast_helper; - let name_pattern = const_str_pat(type_name); - - Exp.variant( - type_name, - Some( - config.native - ? generate_parser( - config, - [type_name, ...path], - definition, - inner, - ) - : { - let%expr value: [%t - base_type_name( - "Raw." ++ generate_type_name([type_name, ...path]), - ) - ] = - Obj.magic(value); - %e - generate_parser( - config, - [type_name, ...path], - definition, - inner, - ); - }, - ), - ) - |> Exp.case(name_pattern); - }, - fragments, - ); - let fallback_case = fallback_case; - let typename_matcher = - Ast_helper.( - Exp.match( - [%expr typename], - List.concat([fragment_cases, [fallback_case]]), - ) - ); - - config.native - ? [@metaloc loc] - { - let%expr typename: string = - value - |> Yojson.Basic.Util.member("__typename") - |> Yojson.Basic.Util.to_string; - ( - [%e typename_matcher]: [%t base_type_name(generate_type_name(path))] - ); - } - : [@metaloc loc] - { - let%expr typename: string = - Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); - ( - [%e typename_matcher]: [%t base_type_name(generate_type_name(path))] - ); - }; -} -and generate_poly_variant_union_decoder = - ( - config, - loc, - _name, - fragments, - _exhaustive_flag, - omit_future_value, - path, - definition, - ) => { - let fragment_cases = - fragments - |> List.map((({item: type_name}: Result_structure.name, inner)) => { - Ast_helper.( - Exp.case( - const_str_pat(type_name), - Exp.variant( - type_name, - Some( - config.native - ? generate_parser( - config, - [type_name, ...path], - definition, - inner, - ) - : { - let%expr value: [%t - switch (inner) { - | Res_solo_fragment_spread({name}) => - base_type_name(name ++ ".Raw.t") - | _ => - base_type_name( - "Raw." ++ generate_type_name([type_name, ...path]), - ) - } - ] = - Obj.magic(value); - %e - generate_parser( - config, - [type_name, ...path], - definition, - inner, - ); - }, - ), - ), - ) - ) - }); - let fallback_case = - omit_future_value - ? Ast_helper.( - Exp.case( - Pat.any(), - Exp.apply( - Exp.ident(mknoloc(Longident.parse("raise"))), - [ - ( - Nolabel, - Exp.construct( - mknoloc(Longident.parse("Not_found")), - None, - ), - ), - ], - ), - ) - ) - : Ppx_config.native() - ? Ast_helper.( - Exp.case( - Pat.any(), - Exp.variant( - "FutureAddedValue", - Some( - [%expr - [%e - Exp.ident({ - Location.txt: Longident.parse("value"), - loc: Location.none, - }) - ] - ], - ), - ), - ) - ) - : Ast_helper.( - Exp.case( - Pat.any(), - Exp.variant( - "FutureAddedValue", - Some( - [%expr - ( - Obj.magic( - [%e - Exp.ident({ - Location.txt: Longident.parse("value"), - loc: Location.none, - }) - ], - ): Js.Json.t - ) - ], - ), - ), - ) - ); - - let typename_matcher = - Ast_helper.( - Exp.match( - [%expr typename], - List.concat([fragment_cases, [fallback_case]]), - ) - ); - - config.native - ? [@metaloc loc] - { - let%expr typename: string = - value - |> Yojson.Basic.Util.member("__typename") - |> Yojson.Basic.Util.to_string; - ( - [%e typename_matcher]: [%t base_type_name(generate_type_name(path))] - ); - } - : [@metaloc loc] - { - let%expr typename: string = - Obj.magic(Js.Dict.unsafeGet(Obj.magic(value), "__typename")); - ( - [%e typename_matcher]: [%t base_type_name(generate_type_name(path))] - ); - }; -} -and generate_parser = (config, path: list(string), definition) => - fun - | Res_nullable({loc, inner}) => - generate_nullable_decoder(config, conv_loc(loc), inner, path, definition) - | Res_array({loc, inner}) => - generate_array_decoder(config, conv_loc(loc), inner, path, definition) - | Res_id({loc}) => { - let loc = conv_loc(loc); - config.native - ? [@metaloc loc] [%expr Yojson.Basic.Util.to_string(value)] - : [@metaloc loc] [%expr value]; - } - | Res_string({loc}) => { - let loc = conv_loc(loc); - config.native - ? [@metaloc loc] [%expr Yojson.Basic.Util.to_string(value)] - : [@metaloc loc] [%expr value]; - } - | Res_int({loc}) => { - let loc = conv_loc(loc); - config.native - ? [@metaloc loc] [%expr Yojson.Basic.Util.to_int(value)] - : [@metaloc loc] [%expr value]; - } - | Res_float({loc}) => { - let loc = conv_loc(loc); - config.native - ? [@metaloc loc] [%expr Yojson.Basic.Util.to_float(value)] - : [@metaloc loc] [%expr value]; - } - | Res_boolean({loc}) => { - let loc = conv_loc(loc); - config.native - ? [@metaloc loc] [%expr Yojson.Basic.Util.to_bool(value)] - : [@metaloc loc] [%expr value]; - } - | Res_raw_scalar({loc}) => { - let loc = conv_loc(loc); - [@metaloc loc] [%expr value]; - } - | Res_poly_enum({loc, enum_meta, omit_future_value}) => - generate_poly_enum_decoder(conv_loc(loc), enum_meta, omit_future_value) - | Res_custom_decoder({loc, ident, inner}) => - generate_custom_decoder( - config, - conv_loc(loc), - ident, - inner, - path, - definition, - ) - | Res_record({ - loc, - name, - fields, - type_name: existing_record, - interface_fragments, - }) => - generate_object_decoder( - ~config, - ~loc=conv_loc(loc), - ~name, - ~path, - ~definition, - ~existing_record, - ~interface_fragments, - fields, - ) - | Res_object({ - loc, - name, - fields, - type_name: existing_record, - interface_fragments, - }) => - generate_object_decoder( - ~config, - ~loc=conv_loc(loc), - ~name, - ~path, - ~definition, - ~existing_record, - ~interface_fragments, - fields, - ) - | Res_poly_variant_union({ - loc, - name, - fragments, - exhaustive, - omit_future_value, - }) => - generate_poly_variant_union_decoder( - config, - conv_loc(loc), - name, - fragments, - exhaustive, - omit_future_value, - path, - definition, - ) - | Res_poly_variant_selection_set({loc, name, fragments: fields}) => - generate_poly_variant_selection_set_decoder( - config, - conv_loc(loc), - name, - fields, - path, - definition, - ) - - | Res_poly_variant_interface({loc, name, fragments}) => - generate_poly_variant_interface_decoder( - config, - conv_loc(loc), - name, - fragments, - [name, ...path], - definition, - ) - | Res_solo_fragment_spread({loc, name, arguments}) => - generate_solo_fragment_spread_decoder( - config, - loc, - name, - arguments, - definition, - ) - | Res_error({loc, message}) => generate_error(loc, message); diff --git a/src/bucklescript/output_bucklescript_serializer.re b/src/bucklescript/output_bucklescript_serializer.re deleted file mode 100644 index d360e38e..00000000 --- a/src/bucklescript/output_bucklescript_serializer.re +++ /dev/null @@ -1,1250 +0,0 @@ -open Graphql_ppx_base; -open Source_pos; -open Schema; -open Ppxlib; - -// open Generator_utils; -open Output_bucklescript_utils; -open Extract_type_definitions; -open Result_structure; -open Output_bucklescript_types; - -// Cheap way of preventing location override from types module -// Might refactor this later -let conv_loc = _ => Location.none; - -let raw_value = loc => [@metaloc loc] [%expr value]; - -let raw_opaque_object = (interface_fragments, fields) => { - let has_fragments = - fields - |> List.exists( - fun - | Fr_fragment_spread(_) => true - | _ => false, - ); - switch (has_fragments, interface_fragments) { - | (true, _) => true - | (_, Some((_, []))) => false - | (_, Some((_, _))) => true - | _ => false - }; -}; -let rec list_literal = - fun - | [] => - Ast_helper.Exp.construct( - {txt: Longident.Lident("[]"), loc: Location.none}, - None, - ) - | [value, ...values] => { - Ast_helper.( - Exp.construct( - {txt: Longident.Lident("::"), loc: Location.none}, - Some(Exp.tuple([value, list_literal(values)])), - ) - ); - }; -/* - * This serializes a variable type to an option type with a JSON value - * the reason that it generates an option type is that we don't want the values - * to become Js.Json.null, that would mean actually setting a value to null in - * the GraphQL spec. - * - * What we want however is to remove these values from the generated JSON - * object. To be able to achieve that we wrap it in an option, so that we know - * which values to remove. - * - * In the future we'd like to support a flag so that: - * Some(Some(val)) => actual value - * None => not present in JSON object - * Some(None) => Null - */ -let rec serialize_type = - fun - | Type(Scalar({sm_name: "ID"})) - | Type(Scalar({sm_name: "String"})) => - Ppx_config.native() ? [%expr (a => `String(a))] : [%expr (a => a)] - | Type(Scalar({sm_name: "Int"})) => - Ppx_config.native() ? [%expr (a => `Int(a))] : [%expr (a => a)] - | Type(Scalar({sm_name: "Float"})) => - Ppx_config.native() ? [%expr (a => `Float(a))] : [%expr (a => a)] - | Type(Scalar({sm_name: "Boolean"})) => - Ppx_config.native() ? [%expr (a => `Bool(a))] : [%expr (a => a)] - | Type(Scalar({sm_name: _})) => [%expr (a => a)] - | Type(InputObject({iom_name})) => [%expr - (a => [%e ident_from_string("serializeInputObject" ++ iom_name)](a)) - ] - | Type(Enum({em_values})) => { - let case_exp = - Ast_helper.( - Exp.match( - ident_from_string("a"), - em_values - |> List.map(value => { - Exp.case( - Pat.variant(value.evm_name, None), - Ppx_config.native() - ? [%expr - `String( - [%e - Ast_helper.Exp.constant( - Parsetree.Pconst_string( - value.evm_name, - Location.none, - None, - ), - ) - ], - ) - ] - : Ast_helper.Exp.constant( - Parsetree.Pconst_string( - value.evm_name, - Location.none, - None, - ), - ), - ) - }), - ) - ); - %expr - (a => [%e case_exp]); - } - | Nullable(inner) => - Ppx_config.native() - ? [%expr - ( - a => - switch (a) { - // to be fixed (actually we need to drop the value here) - | None => `Null - | Some(b) => [%e serialize_type(inner)](b) - } - ) - ] - : [%expr - ( - a => - switch (a) { - | None => Js.Nullable.undefined - | Some(b) => Js.Nullable.return([%e serialize_type(inner)](b)) - } - ) - ] - - // in this case if there are null values in the list actually convert them to - // JSON nulls - | List(inner) => - Ppx_config.native() - ? [%expr - ( - a => - `List( - Array.map(b => {[%e serialize_type(inner)](b)}, a) - |> Array.to_list, - ) - ) - ] - : [%expr (a => Js.Array.map(b => {[%e serialize_type(inner)](b)}, a))] - | Type(Object(_)) => [%expr (v => None)] - | Type(Union(_)) => [%expr (v => None)] - | Type(Interface(_)) => [%expr (v => None)] - | TypeNotFound(_) => [%expr (v => None)]; - -let record_to_object = (loc, record) => { - Ast_helper.( - Exp.extension(( - {txt: "bs.obj", loc: conv_loc(loc)}, - PStr([[%stri [%e record]]]), - )) - ); -}; - -let serialize_fun = (fields, type_name) => { - let arg = "inp"; - open Ast_helper; - let object_ = - Ppx_config.native() - ? { - let assoc_fields = - List.map( - (InputField({name, type_})) => { - %expr - ( - [%e const_str_expr(name)], - [%e serialize_type(type_)]( - [%e - Exp.field( - Exp.constraint_( - ident_from_string(arg), - base_type_name(type_name), - ), - { - loc: Location.none, - Location.txt: Longident.parse(to_valid_ident(name)), - }, - ) - ], - ), - ) - }, - fields, - ); - %expr - `Assoc([%e list_literal(assoc_fields)]); - } - : Exp.record( - fields - |> List.map((InputField({name, type_, loc})) => { - let loc = conv_loc(loc); - ( - {txt: Longident.parse(to_valid_ident(name)), loc}, - [%expr - [%e serialize_type(type_)]( - [%e - Exp.field( - Exp.constraint_( - ident_from_string(arg), - base_type_name(type_name), - ), - { - loc: Location.none, - Location.txt: - Longident.parse(to_valid_ident(name)), - }, - ) - ], - ) - ], - ); - }), - None, - ); - Ast_helper.( - Exp.fun_( - Nolabel, - None, - Pat.var(~loc=Location.none, {txt: arg, loc: Location.none}), - object_, - ) - ); -}; - -let is_recursive = input_objects => { - List.length(input_objects) > 1; -}; - -let filter_map = f => { - let rec aux = accu => - fun - | [] => List.rev(accu) - | [x, ...l] => - switch (f(x)) { - | None => aux(accu, l) - | Some(v) => aux([v, ...accu], l) - }; - - aux([]); -}; - -let generate_serialize_variable_signatures = - (arg_type_defs: list(arg_type_def)) => - switch (arg_type_defs) { - | [NoVariables] => [%sig: let serializeVariables: unit => Raw.t_variables] - | arg_type_defs => - Ast_helper.( - arg_type_defs - |> filter_map( - fun - | InputObject({name, loc}) => Some((name, loc)) - | NoVariables => None, - ) - |> List.map(((name, loc)) => { - let type_name = - switch (name) { - | None => "t_variables" - | Some(input_object_name) => "t_variables_" ++ input_object_name - }; - Sig.value( - Val.mk( - { - loc: conv_loc(loc), - txt: - switch (name) { - | None => "serializeVariables" - | Some(input_object_name) => - "serializeInputObject" ++ input_object_name - }, - }, - Typ.arrow( - ~loc=conv_loc(loc), - Nolabel, - base_type_name(type_name), - base_type_name("Raw." ++ type_name), - ), - ), - ); - }) - ) - }; -let generate_serialize_variables = (arg_type_defs: list(arg_type_def)) => - switch (arg_type_defs) { - | [NoVariables] => - Ppx_config.native() - ? [%stri let serializeVariables = () => `Null] - : [%stri let serializeVariables = () => ()] - | arg_type_defs => - Ast_helper.( - Str.value( - is_recursive(arg_type_defs) ? Recursive : Nonrecursive, - arg_type_defs - |> filter_map( - fun - | InputObject({name, fields, loc}) => Some((name, fields, loc)) - | NoVariables => None, - ) - |> List.map(((name, fields, loc)) => { - let type_name = - switch (name) { - | None => "t_variables" - | Some(input_object_name) => - "t_variables_" ++ input_object_name - }; - [@metaloc conv_loc(loc)] - Vb.mk( - Pat.constraint_( - ~loc=conv_loc(loc), - Pat.var({ - loc: conv_loc(loc), - txt: - switch (name) { - | None => "serializeVariables" - | Some(input_object_name) => - "serializeInputObject" ++ input_object_name - }, - }), - Typ.arrow( - ~loc=conv_loc(loc), - Nolabel, - base_type_name(type_name), - base_type_name("Raw." ++ type_name), - ), - ), - serialize_fun(fields, type_name), - ); - }), - ) - ) - }; - -/* - * Generate constructors for variables and for input types. - * If there are lots of optional variables this will generate a function with - * optional arguments, so you do not have to specify all variables if most are - * None. - * - * This also helps if you don't want the build to break if a optional variable - * is added. - */ -let generate_variable_constructors = (arg_type_defs: list(arg_type_def)) => { - switch (arg_type_defs) { - | [NoVariables] => None - | _ => - Some( - Ast_helper.( - Str.value( - Nonrecursive, - arg_type_defs - |> filter_map( - fun - | InputObject({name, fields, loc}) => - Some((name, fields, loc)) - | NoVariables => None, - ) - |> List.map(((name, fields, loc)) => { - let loc = conv_loc(loc); - let rec make_labeled_fun = body => - fun - | [] => [@metaloc loc] [%expr (() => [%e body])] - | [InputField({name, loc, type_}), ...tl] => { - let name_loc = loc |> conv_loc; - Ast_helper.( - Exp.fun_( - ~loc=name_loc, - switch (type_) { - | List(_) - | Type(_) => Labelled(to_valid_ident(name)) - | _ => Optional(to_valid_ident(name)) - }, - None, - Pat.var( - ~loc=name_loc, - {txt: to_valid_ident(name), loc: name_loc}, - ), - make_labeled_fun(body, tl), - ) - ); - }; - - let object_ = - // Ppx_config.native() - // ? { - // let assoc_fields = - // List.map( - // (InputField({name})) => { - // %expr - // ( - // [%e const_str_expr(name)], - // [%e ident_from_string(to_valid_ident(name))], - // ) - // }, - // fields, - // ); - // %expr - // `Assoc([%e list_literal(assoc_fields)]); - // } - Ast_helper.( - Exp.record( - ~loc=loc |> conv_loc, - fields - |> List.map((InputField({name, loc})) => - ( - { - Location.txt: - Longident.parse(to_valid_ident(name)), - loc: conv_loc(loc), - }, - ident_from_string(to_valid_ident(name)), - ) - ), - None, - ) - ); - - let body = - Ast_helper.( - Exp.constraint_( - ~loc=conv_loc(loc), - object_, - base_type_name( - switch (name) { - | None => "t_variables" - | Some(input_type_name) => - "t_variables_" ++ input_type_name - }, - ), - ) - ); - - switch (name) { - | None => - let make_variables_body = make_labeled_fun(body, fields); - [(name, loc, make_variables_body)]; - | Some(_) => [(name, loc, make_labeled_fun(body, fields))] - }; - }) - |> List.concat - |> List.map(((name, loc, expr)) => { - [@metaloc conv_loc(loc)] - Vb.mk( - Pat.var({ - loc: conv_loc(loc), - txt: - switch (name) { - | None => "makeVariables" - | Some("make") => "make" - | Some(input_object_name) => - "makeInputObject" ++ input_object_name - }, - }), - expr, - ) - }), - ) - ), - ) - }; -}; - -let generate_variable_constructor_signatures = - (arg_type_defs: list(arg_type_def)) => { - switch (arg_type_defs) { - | [NoVariables] => [] - | _ => - Ast_helper.( - arg_type_defs - |> filter_map( - fun - | InputObject({name, fields, loc}) => Some((name, fields, loc)) - | NoVariables => None, - ) - |> List.map(((name, fields, loc)) => { - let rec make_labeled_fun = final_type => ( - fun - | [] => final_type - | [InputField({name, loc, type_}), ...tl] => { - Typ.arrow( - switch (type_) { - | List(_) - | Type(_) => Labelled(to_valid_ident(name)) - | _ => Optional(to_valid_ident(name)) - }, - generate_arg_type(~nulls=false, false, loc, type_), - make_labeled_fun(final_type, tl), - ); - } - ); - - let final_type = - Typ.arrow( - Nolabel, - base_type_name("unit"), - base_type_name( - switch (name) { - | None => "t_variables" - | Some(input_type_name) => "t_variables_" ++ input_type_name - }, - ), - ); - - (name, loc, make_labeled_fun(final_type, fields)); - }) - |> List.map(((name, loc, type_)) => { - Sig.value( - Val.mk( - { - loc: conv_loc(loc), - txt: - switch (name) { - | None => "makeVariables" - | Some("make") => "make" - | Some(input_object_name) => - "makeInputObject" ++ input_object_name - }, - }, - type_, - ), - ) - }) - ) - }; -}; - -let get_field = (key, existing_record, path) => { - %expr - [%e - Ast_helper.( - Exp.field( - Exp.constraint_( - ident_from_string("value"), - base_type_name( - switch (existing_record) { - | None => generate_type_name(path) - | Some(existing) => existing - }, - ), - ), - {loc: Location.none, txt: Longident.parse(to_valid_ident(key))}, - ) - ) - ]; -}; - -let rec generate_nullable_encoder = (config, loc, inner, path, definition) => - Ppx_config.native() - ? [@metaloc loc] - ( - switch%expr (value) { - | Some(value) => - %e - generate_serializer(config, path, definition, None, inner) - | None => `Null - } - ) - : [@metaloc loc] - ( - switch%expr (value) { - | Some(value) => - Js.Nullable.return( - [%e generate_serializer(config, path, definition, None, inner)], - ) - | None => Js.Nullable.null - } - ) -and generate_array_encoder = (config, loc, inner, path, definition) => - Ppx_config.native() - ? [@metaloc loc] - [%expr - `List( - value - |> Array.map(value => { - %e - generate_serializer(config, path, definition, None, inner) - }) - |> Array.to_list, - ) - ] - : [@metaloc loc] - [%expr - value - |> Js.Array.map(value => { - %e - generate_serializer(config, path, definition, None, inner) - }) - ] -and generate_poly_enum_encoder = (loc, enum_meta, omit_future_value) => { - open Ast_helper; - let enum_match_arms = - enum_meta.em_values - |> List.map(({evm_name, _}) => - Exp.case( - Pat.variant(evm_name, None), - Ppx_config.native() - ? [%expr `String([%e const_str_expr(evm_name)])] - : const_str_expr(evm_name), - ) - ); - - let fallback_arm = - Exp.case( - Pat.variant("FutureAddedValue", Some(Pat.var({loc, txt: "other"}))), - Ppx_config.native() - ? [%expr `String([%e ident_from_string("other")])] - : ident_from_string("other"), - ); - - let match_expr = - Exp.match( - [%expr value], - List.concat([ - enum_match_arms, - omit_future_value ? [] : [fallback_arm], - ]), - ); - - %expr - [%e match_expr]; -} -and generate_custom_encoder = (config, loc, ident, inner, path, definition) => - [@metaloc loc] - { - let%expr value = [%e ident_from_string(ident ++ ".serialize")](value); - %e - generate_serializer(config, path, definition, None, inner); - } -and generate_object_encoder = - ( - config, - loc, - _name, - fields, - path, - definition, - existing_record, - typename, - interface_fragments, - ) => { - open Ast_helper; - let is_opaque = raw_opaque_object(interface_fragments, fields); - let do_obj_constructor_base = wrap => { - switch ( - fields - |> filter_map( - fun - | Fr_fragment_spread(_) => None - | Fr_named_field({name, type_}) => Some((name, type_)), - ) - ) { - | [] => Ppx_config.native() ? [%expr `Assoc([])] : [%expr Js.Dict.empty] - | fields => - let record = - Exp.record( - { - let fields = - // if the object is part of a union, it gets passed a typename - // the typename needs to exist on the raw type, because it is used - // to parse it into a union type. So if this is supplied, and - // typename is not already explicitly in the fields, add this. - if (typename != None - && !( - fields - |> List.exists( - fun - | ("__typename", _) => true - | _ => false, - ) - )) { - [ - ("__typename", Res_string({loc: conv_loc_from_ast(loc)})), - ...fields, - ]; - } else { - fields; - }; - - fields - |> List.map(((key, _inner)) => { - let key_value = { - Location.txt: Longident.parse(to_valid_ident(key)), - loc, - }; - switch (key, typename) { - | ("__typename", Some(typename)) => ( - key_value, - const_str_expr(typename), - ) - | _ => (key_value, ident_from_string(to_valid_ident(key))) - }; - }); - }, - None, - ); - - let record = wrap ? record_to_object(loc, record) : record; - - let bindings = - fields - |> List.map(((key, inner)) => - Vb.mk( - Pat.var({txt: to_valid_ident(key), loc}), - { - // TODO: would be nice to pass the input instead of relying - // on a static identifier called `value` - let%expr value = [%e get_field(key, existing_record, path)]; - %e - generate_serializer( - config, - [key, ...path], - definition, - None, - inner, - ); - }, - ) - ) - |> List.rev; - Exp.let_(Nonrecursive, bindings, record); - }; - }; - - let do_json_encoder = () => { - switch ( - fields - |> filter_map( - fun - | Fr_fragment_spread(_) => None - | Fr_named_field({name, type_}) => Some((name, type_)), - ) - ) { - | [] => - %expr - `Assoc([]) - | fields => - let assoc_fields = - // if the object is part of a union, it gets passed a typename - // the typename needs to exist on the raw type, because it is used - // to parse it into a union type. So if this is supplied, and - // typename is not already explicitly in the fields, add this. - ( - if (typename != None - && !( - fields - |> List.exists( - fun - | ("__typename", _) => true - | _ => false, - ) - )) { - [ - ("__typename", Res_string({loc: conv_loc_from_ast(loc)})), - ...fields, - ]; - } else { - fields; - } - ) - |> List.map(((key, _inner)) => { - switch (key, typename) { - | ("__typename", Some(typename)) => - %expr - ("__typename", `String([%e const_str_expr(typename)])) - | (key, _) => - %expr - ( - [%e const_str_expr(key)], - [%e ident_from_string(to_valid_ident(key))], - ) - } - }); - - let assoc = [%expr `Assoc([%e list_literal(assoc_fields)])]; - - let bindings = - fields - |> List.map(((key, inner)) => - Vb.mk( - Pat.var({txt: to_valid_ident(key), loc}), - { - // TODO: would be nice to pass the input instead of relying - // on a static identifier called `value` - let%expr value = [%e get_field(key, existing_record, path)]; - %e - generate_serializer( - config, - [key, ...path], - definition, - None, - inner, - ); - }, - ) - ) - |> List.rev; - Exp.let_(Nonrecursive, bindings, assoc); - }; - }; - - let do_obj_constructor = () => - [@metaloc conv_loc(loc)] - { - do_obj_constructor_base(true); - }; - - let do_obj_constructor_records = () => - Ppx_config.native() - ? do_json_encoder() - : [@metaloc conv_loc(loc)] - { - Exp.constraint_( - do_obj_constructor_base(false), - base_type_name("Raw." ++ generate_type_name(path)), - ); - }; - - // the fields and fragments needs to be deeply merged, the fragments in the - // reason types are separate fields (separated out from the raw output of - // the query). - // - // The fragments are responsible for generating the raw output for themselves - // using a serialize function per fragment. However when there are regular - // fields AND (possibly multiple) fragment spreads we need to deeply merge - // them to reconcile back to the canonical json representation. - // - // The deeply merge is done using a runtime function that is supplied with - // this PPX as the `GraphQL_PPX.deep_merge` function - // - // This also brings an important gotcha: if a field is duplicated between - // fragments, and it is changed in a particular frament, it is only changed - // in the raw representation if it is merged last. Unfortunately there is not - // really anything that we can do about this. - - let merge_into_opaque = () => { - let fields = - fields - |> List.fold_left( - acc => - fun - | Fr_named_field(_) => acc - | Fr_fragment_spread({key, name}) => [ - Ppx_config.native() - ? [%expr - [%e ident_from_string(name ++ ".toJson")]( - [%e ident_from_string(name ++ ".serialize")]( - [%e get_field(key, existing_record, path)], - ), - ) - ] - : [%expr - ( - Obj.magic( - [%e ident_from_string(name ++ ".serialize")]( - [%e get_field(key, existing_record, path)], - ), - ): Js.Json.t - ) - ], - ...acc, - ], - [], - ) - |> List.rev; - let fields = - switch (interface_fragments) { - | None - | Some((_, [])) => fields - | Some((interface_name, fragments)) => [ - Ppx_config.native() - ? { - let%expr value = [%e get_field("fragment", None, path)]; - %e - generate_poly_variant_interface_encoder( - config, - loc, - interface_name, - fragments, - path, - definition, - ); - } - : { - let%expr value = [%e get_field("fragment", None, path)]; - ( - Obj.magic( - [%e - generate_poly_variant_interface_encoder( - config, - loc, - interface_name, - fragments, - path, - definition, - ) - ], - ): Js.Json.t - ); - }, - ...fields, - ] - }; - - Ppx_config.native() - // no deepmerge for native, just get the last one - ? [%expr - Array.fold_left( - (a, b) => Graphql_ppx_runtime.deepMerge(a, b), - { - %e - do_obj_constructor(); - }, - [%e fields |> Ast_helper.Exp.array], - ) - ] - : [%expr - ( - Obj.magic( - Js.Array.reduce( - GraphQL_PPX.deepMerge, - Obj.magic( - { - %e - do_obj_constructor(); - }, - ): Js.Json.t, - [%e fields |> Ast_helper.Exp.array], - ), - ): [%t - base_type_name("Raw." ++ generate_type_name(path)) - ] - ) - ]; - }; - - is_opaque ? merge_into_opaque() : do_obj_constructor_records(); -} -and generate_poly_variant_union_encoder = - ( - config, - _loc, - _name, - fragments, - _exhaustive, - omit_future_value, - path, - definition, - ) => { - open Ast_helper; - let fragment_cases = - fragments - |> List.map((({item: type_name}: Result_structure.name, inner)) => { - Ast_helper.( - Exp.case( - Pat.variant( - type_name, - Some(Pat.var({txt: "value", loc: Location.none})), - ), - Ppx_config.native() - ? generate_serializer( - config, - [type_name, ...path], - definition, - Some(type_name), - inner, - ) - : [%expr - ( - Obj.magic( - [%e - generate_serializer( - config, - [type_name, ...path], - definition, - Some(type_name), - inner, - ) - ], - ): [%t - base_type_name("Raw." ++ generate_type_name(path)) - ] - ) - ], - ) - ) - }); - - let fallback_case = - Exp.case( - Pat.variant( - "FutureAddedValue", - Some(Pat.var({txt: "value", loc: Location.none})), - ), - Ppx_config.native() - ? [%expr value] - : [%expr - ( - Obj.magic(value): [%t - base_type_name("Raw." ++ generate_type_name(path)) - ] - ) - ], - ); - - let typename_matcher = - Exp.match( - [%expr value], - List.concat([ - fragment_cases, - omit_future_value ? [] : [fallback_case], - ]), - ); - - %expr - [%e typename_matcher]; -} -and generate_poly_variant_selection_set_encoder = - (_config, _loc, _name, _fields, _path, _definition) => { - let e = - Ppx_config.native() ? [%expr `Null] : [%expr Obj.magic(Js.Json.null)]; - - let%expr _temp = value; - %e - e; -} -and generate_poly_variant_interface_encoder = - (config, _loc, name, fragments, path, definition) => { - open Ast_helper; - let fragment_cases = - fragments - |> List.map(((type_name, inner)) => { - Ast_helper.( - Exp.case( - Pat.variant( - type_name, - Some(Pat.var({txt: "value", loc: Location.none})), - ), - Ppx_config.native() - ? generate_serializer( - config, - [type_name, name, ...path], - definition, - Some(type_name), - inner, - ) - : [%expr - ( - Obj.magic( - [%e - generate_serializer( - config, - [type_name, name, ...path], - definition, - Some(type_name), - inner, - ) - ], - ): [%t - base_type_name( - "Raw." ++ generate_type_name([name, ...path]), - ) - ] - ) - ], - ) - ) - }); - - let fallback_case = - Exp.case( - Pat.variant("UnspecifiedFragment", Some(Pat.any())), - Ppx_config.native() - ? [%expr `Assoc([])] - : [%expr - ( - Obj.magic(Js.Dict.empty()): [%t - base_type_name("Raw." ++ generate_type_name([name, ...path])) - ] - ) - ], - ); - - let typename_matcher = - Exp.match( - [%expr value], - List.concat([fragment_cases, [fallback_case]]), - ); - - %expr - [%e typename_matcher]; -} - -and generate_solo_fragment_spread_encorder = - (_config, _loc, name, _arguments, _definition) => - Ppx_config.native() - ? [%expr - [%e ident_from_string(name ++ ".toJson")]( - [%e ident_from_string(name ++ ".serialize")]( - [%e ident_from_string("value")], - ), - ) - ] - : [%expr - [%e ident_from_string(name ++ ".serialize")]( - [%e ident_from_string("value")], - ) - ] - -and generate_error = (loc, message) => { - let loc = Output_bucklescript_utils.conv_loc(loc); - let ext = - Ocaml_common.Ast_mapper.extension_of_error( - Ocaml_common.Location.error(~loc, message), - ); - let extension = Ocaml_common.Ast_helper.Exp.extension(~loc, ext); - let%expr _value = value; - %e - To_ppxlib.copy_expression(extension); -} -and generate_serializer = (config, path: list(string), definition, typename) => - fun - | Res_nullable({loc, inner}) => - generate_nullable_encoder(config, conv_loc(loc), inner, path, definition) - | Res_array({loc, inner}) => - generate_array_encoder(config, conv_loc(loc), inner, path, definition) - | Res_id({loc}) => { - let loc = conv_loc(loc); - Ppx_config.native() - ? [@metaloc loc] [%expr `String(value)] : raw_value(loc); - } - | Res_string({loc}) => { - let loc = conv_loc(loc); - Ppx_config.native() - ? [@metaloc loc] [%expr `String(value)] : raw_value(loc); - } - | Res_int({loc}) => { - let loc = conv_loc(loc); - Ppx_config.native() - ? [@metaloc loc] [%expr `Int(value)] : raw_value(loc); - } - | Res_float({loc}) => { - let loc = conv_loc(loc); - Ppx_config.native() - ? [@metaloc loc] [%expr `Float(value)] : raw_value(loc); - } - | Res_boolean({loc}) => { - let loc = conv_loc(loc); - Ppx_config.native() - ? [@metaloc loc] [%expr `Bool(value)] : raw_value(loc); - } - | Res_raw_scalar({loc}) => raw_value(conv_loc(loc)) - | Res_poly_enum({loc, enum_meta, omit_future_value}) => - generate_poly_enum_encoder(conv_loc(loc), enum_meta, omit_future_value) - | Res_custom_decoder({loc, ident, inner}) => - generate_custom_encoder( - config, - conv_loc(loc), - ident, - inner, - path, - definition, - ) - | Res_record({ - loc, - name, - fields, - type_name: existing_record, - interface_fragments, - }) => - generate_object_encoder( - config, - conv_loc(loc), - name, - fields, - path, - definition, - existing_record, - typename, - interface_fragments, - ) - | Res_object({ - loc, - name, - fields, - type_name: existing_record, - interface_fragments, - }) => - generate_object_encoder( - config, - conv_loc(loc), - name, - fields, - path, - definition, - existing_record, - typename, - interface_fragments, - ) - | Res_poly_variant_union({ - loc, - name, - fragments, - exhaustive, - omit_future_value, - }) => - generate_poly_variant_union_encoder( - config, - conv_loc(loc), - name, - fragments, - exhaustive, - omit_future_value, - path, - definition, - ) - | Res_poly_variant_selection_set({loc, name, fragments: fields}) => - generate_poly_variant_selection_set_encoder( - config, - conv_loc(loc), - name, - fields, - path, - definition, - ) - | Res_poly_variant_interface({loc, name, fragments}) => - generate_poly_variant_interface_encoder( - config, - conv_loc(loc), - name, - fragments, - path, - definition, - ) - | Res_solo_fragment_spread({loc, name, arguments}) => - generate_solo_fragment_spread_encorder( - config, - conv_loc(loc), - name, - arguments, - definition, - ) - | Res_error({loc, message}) => generate_error(loc, message); diff --git a/src/bucklescript/output_bucklescript_types.re b/src/bucklescript/output_bucklescript_types.re deleted file mode 100644 index 2430143e..00000000 --- a/src/bucklescript/output_bucklescript_types.re +++ /dev/null @@ -1,1226 +0,0 @@ -open Graphql_ppx_base; -open Result_structure; -open Extract_type_definitions; -open Source_pos; -open Output_bucklescript_utils; -open Ppxlib; - -let loc = Location.none; - -// duplicate of ouput_bucklescript_decoder -let make_error_raiser = message => - if (Ppx_config.native()) { - if (Ppx_config.verbose_error_handling()) { - %expr - raise(Failure("graphql-ppx: " ++ [%e message])); - } else { - %expr - raise(Failure("Unexpected GraphQL query response")); - }; - } else if (Ppx_config.verbose_error_handling()) { - %expr - Js.Exn.raiseError("graphql-ppx: " ++ [%e message]); - } else { - %expr - Js.Exn.raiseError("Unexpected GraphQL query response"); - }; -// duplicate of ouput_bucklescript_decoder -let const_str_expr = s => - Ast_helper.(Exp.constant(Pconst_string(s, loc, None))); - -let base_type = (~inner=[], ~loc=?, name) => { - Ast_helper.Typ.constr( - { - Location.txt: Longident.parse(name), - loc: - switch (loc) { - | None => Location.none - | Some(loc) => loc - }, - }, - inner, - ); -}; - -// generate the type definition, including nullables, arrays etc. -let rec generate_type = (~atLoc=?, ~config, ~path, ~raw) => - fun - | Res_string(_) => base_type(~loc=?atLoc, "string") - | Res_nullable({inner}) => - if (raw) { - base_type( - ~inner=[generate_type(~config, ~path, ~raw, inner)], - "Js.Nullable.t", - ); - } else { - base_type( - ~loc=?atLoc, - ~inner=[generate_type(~config, ~path, ~raw, inner)], - "option", - ); - } - | Res_array({inner}) => - base_type( - ~loc=?atLoc, - ~inner=[generate_type(~config, ~path, ~raw, inner)], - "array", - ) - | Res_custom_decoder({ident: module_name, inner}) => - if (raw) { - generate_type(~config, ~path, ~raw, inner); - } else { - base_type(~loc=?atLoc, module_name ++ ".t"); - } - | Res_id(_) => base_type(~loc=?atLoc, "string") - | Res_int(_) => { - base_type(~loc=?atLoc, "int"); - } - | Res_float(_) => base_type(~loc=?atLoc, "float") - | Res_boolean(_) => base_type(~loc=?atLoc, "bool") - | Res_raw_scalar(_) => - base_type( - ~loc=?atLoc, - Ppx_config.native() ? "Yojson.Basic.t" : "Js.Json.t", - ) - | Res_object({type_name}) - | Res_record({type_name}) => - switch (type_name, raw) { - | (Some(type_name), false) => base_type(~loc=?atLoc, type_name) - | (_, _) => base_type(~loc=?atLoc, generate_type_name(path)) - } - | Res_poly_variant_selection_set(_) - | Res_poly_variant_union(_) => { - base_type(~loc=?atLoc, generate_type_name(path)); - } - | Res_poly_variant_interface({name}) => { - base_type(~loc=?atLoc, generate_type_name([name, ...path])); - } - | Res_solo_fragment_spread({loc, name: module_name, type_name}) => - if (raw) { - base_type(~loc=conv_loc(loc), module_name ++ ".Raw.t_" ++ type_name); - } else { - base_type(~loc=conv_loc(loc), module_name ++ ".t_" ++ type_name); - } - | Res_error({loc, message: error}) => - Location.raise_errorf(~loc=conv_loc(loc), "%s", error) - | Res_poly_enum(_) => base_type(~loc=?atLoc, generate_type_name(path)); - -let wrap_type_declaration = (~loc as _=?, ~manifest=?, inner, path) => { - Ast_helper.Type.mk( - ~kind=inner, - ~manifest?, - {loc: Location.none, txt: generate_type_name(path)}, - ); -}; - -let generate_opaque = (path, _loc: option(ast_location)) => { - Ast_helper.Type.mk({loc: Location.none, txt: generate_type_name(path)}); -}; - -let raw_opaque_object = (interface_fragments, fields) => { - let has_fragments = - fields - |> List.exists( - fun - | Fragment(_) => true - | _ => false, - ); - switch (has_fragments, interface_fragments) { - | (true, _) => true - | (_, Some((_, []))) => false - | (_, Some((_, _))) => true - | _ => false - }; -}; - -let already_has__typename = fields => - List.exists( - fun - | Field({path: ["__typename", ..._]}) => true - | _ => false, - fields, - ); - -let variant_interface_type = - ( - ~name as interface_name, - ~config, - ~fragments, - ~path, - ~loc: option(ast_location), - ~raw, - ) => { - let map_case_ty = ((name, res)) => { - prf_desc: - Rtag( - { - txt: name, - loc: - switch (loc) { - | Some(loc) => conv_loc(loc) - | None => Location.none - }, - }, - false, - [ - generate_type( - ~config, - ~path=[name, interface_name, ...path], - ~raw, - res, - ), - ], - ), - prf_loc: - switch (loc) { - | Some(loc) => conv_loc(loc) - | None => Location.none - }, - prf_attributes: [], - }; - - let fallback_case_ty = { - prf_desc: - Rtag( - { - txt: "UnspecifiedFragment", - loc: - switch (loc) { - | Some(loc) => conv_loc(loc) - | None => Location.none - }, - }, - false, - [base_type_name("string")], - ), - prf_loc: - switch (loc) { - | Some(loc) => conv_loc(loc) - | None => Location.none - }, - prf_attributes: [], - }; - - let fragment_case_tys = fragments |> List.map(map_case_ty); - - Ast_helper.( - Typ.variant([fallback_case_ty, ...fragment_case_tys], Closed, None) - ); -}; - -let generate_variant_interface = - ( - ~emit_locations, - ~name, - ~config, - ~fragments, - ~path, - ~loc: ast_location, - ~raw, - ) => - wrap_type_declaration( - Ptype_abstract, - ~manifest=? - raw - ? None - : Some( - variant_interface_type( - ~name, - ~config, - ~fragments, - ~path, - ~loc=emit_locations ? Some(loc) : None, - ~raw, - ), - ), - ~loc=?emit_locations ? Some(loc) : None, - [name, ...path], - ); - -/* - * for given query: - * - * { - * user { - * id - * name - * loc_key - * |<---->| - * friends: { - * id - * } - * ----------- - * With - * friends: { - * id - * } - * as the whole loc. They cannot be overlapping, so the most we can use for - * this is until the bracket - * ----------- - * } - * } - * - * the generated type is: - * - * type t = { - * user: option(t_user) - * } and - * t_user = { - * id: string - * friends: t_user_friends - * } and - * t_user_friends = { - * id: string - * } - * - * When we add locations to the types, the types are not nested, so we cannot - * add nested locations. The best way to model it is to just type the keys, and - * set the location of the query to the module - */ - -let generate_record_type = - ( - ~config, - ~obj_path, - ~raw, - ~loc: ast_location, - ~is_variant, - ~interface_fragments, - ~emit_locations, - fields, - ) => { - let record_fields = - fields - |> List.fold_left( - acc => - fun - | Fragment({key, loc_key, module_name, type_name}) => [ - Ast_helper.Type.field( - {Location.txt: key, loc: Location.none}, - Ast_helper.Typ.constr( - { - Location.txt: - Longident.parse( - module_name - ++ ".t" - ++ ( - switch (type_name) { - | None => "" - | Some(type_name) => "_" ++ type_name - } - ), - ), - // this needs to be emitted both in the implementation and - // signature. Otherwise errors or hover types are not - // correct - loc: !raw ? conv_loc(loc_key) : Location.none, - }, - [], - ), - ), - ...acc, - ] - | Field({path: [name, ...path], type_, loc_key, loc: _loc_field}) => { - let valid_name = to_valid_ident(name); - [ - Ast_helper.( - Type.field( - ~loc=?{ - emit_locations ? None : Some(conv_loc(loc_key)); - }, - ~attrs={ - name == valid_name - ? [] - : [ - Ast_helper.Attr.mk( - {txt: "bs.as", loc: Location.none}, - PStr([Str.eval(const_str_expr(name))]), - ), - ]; - }, - { - Location.txt: valid_name, - loc: - emit_locations ? Location.none : conv_loc(loc_key), - }, - generate_type( - ~atLoc=? - emit_locations ? None : Some(conv_loc(loc_key)), - ~config, - ~path=[name, ...path], - ~raw, - type_, - ), - ) - ), - ...acc, - ]; - } - | Field({path: [], loc}) => - // I don't think this should ever happen but we need to - // cover this case, perhaps we can constrain the type - Location.raise_errorf(~loc=loc |> conv_loc, "No path"), - [], - ) - |> List.rev; - - let record_fields = - // if this is a variant in the parsed type and __typename is not explicitly - // requested, still add it (because the printer is added) - if (raw && is_variant && !already_has__typename(fields)) { - [ - Ast_helper.Type.field( - {Location.txt: "__typename", loc: Location.none}, - base_type_name("string"), - ), - ...record_fields, - ]; - } else { - record_fields; - }; - let record_fields = - switch (interface_fragments) { - | Some((_, [])) - | None => record_fields - | Some((interface_name, _fragments)) => [ - Ast_helper.Type.field( - {Location.txt: "fragment", loc: Location.none}, - base_type(generate_type_name([interface_name, ...obj_path])), - ), - ...record_fields, - ] - }; - - raw && raw_opaque_object(interface_fragments, fields) - ? generate_opaque(obj_path, emit_locations ? Some(loc) : None) - : wrap_type_declaration( - Ptype_record(record_fields), - ~loc={ - emit_locations ? Some(loc) : None; - }, - obj_path, - ); -}; - -let generate_variant_selection = - (~emit_locations, config, fields, path, loc: ast_location, raw) => - if (raw) { - generate_opaque(path, emit_locations ? Some(loc) : None); - } else { - wrap_type_declaration( - Ptype_abstract, - ~manifest= - Ast_helper.( - Typ.variant( - fields - |> List.map(((name: Result_structure.name, res)) => - { - prf_desc: - Rtag( - { - txt: Compat.capitalize_ascii(name.item), - loc: Location.none, - }, - false, - [ - generate_type( - ~atLoc=? - emit_locations - ? Some( - conv_loc( - config.Generator_utils.map_loc( - name.span, - ), - ), - ) - : None, - ~config, - ~path=[name.item, ...path], - ~raw, - res, - ), - ], - ), - prf_loc: Location.none, - prf_attributes: [], - } - ), - Closed, - None, - ) - ), - ~loc=?emit_locations ? Some(loc) : None, - path, - ); - }; - -let generate_variant_union = - ( - ~emit_locations, - config, - fields: list((Result_structure.name, Result_structure.t)), - omit_future_value, - path, - loc: ast_location, - raw, - ) => - if (raw) { - generate_opaque(path, emit_locations ? Some(loc) : None); - } else { - let fallback_case_ty = - omit_future_value - ? [] - : [ - { - prf_desc: - Rtag( - { - txt: "FutureAddedValue", - loc: emit_locations ? conv_loc(loc) : Location.none, - }, - false, - [ - base_type( - Ppx_config.native() ? "Yojson.Basic.t" : "Js.Json.t", - ), - ], - ), - prf_loc: emit_locations ? conv_loc(loc) : Location.none, - prf_attributes: [], - }, - ]; - - let fragment_case_tys = - fields - |> List.map(((name, res)) => - { - prf_desc: - Rtag( - { - txt: name.item, - loc: emit_locations ? conv_loc(loc) : Location.none, - }, - false, - [ - generate_type( - ~atLoc=? - emit_locations - ? Some( - conv_loc( - config.Generator_utils.map_loc(name.span), - ), - ) - : None, - ~config, - ~path=[name.item, ...path], - ~raw, - res, - ), - ], - ), - prf_loc: emit_locations ? conv_loc(loc) : Location.none, - prf_attributes: [], - } - ); - - wrap_type_declaration( - Ptype_abstract, - ~manifest= - Ast_helper.( - Typ.variant( - List.concat([fallback_case_ty, fragment_case_tys]), - Closed, - None, - ) - ), - ~loc=?emit_locations ? Some(conv_loc(loc)) : None, - path, - ); - }; - -let generate_enum = - ( - ~emit_locations, - _config, - fields, - path, - ~loc: ast_location, - raw, - omit_future_value, - ) => - wrap_type_declaration( - Ptype_abstract, - ~manifest= - if (raw) { - base_type("string"); - } else { - [@metaloc emit_locations ? conv_loc(loc) : Location.none] - Ast_helper.( - Typ.variant( - List.append( - omit_future_value - ? [] - : [ - { - prf_desc: - Rtag( - { - txt: "FutureAddedValue", - loc: emit_locations ? conv_loc(loc) : Location.none, - }, - false, - [base_type("string")], - ), - prf_loc: emit_locations ? conv_loc(loc) : Location.none, - prf_attributes: [], - }, - ], - fields - |> List.map(field => - { - prf_desc: - Rtag( - { - txt: to_valid_ident(field), - loc: - emit_locations ? conv_loc(loc) : Location.none, - }, - true, - [], - ), - prf_loc: emit_locations ? conv_loc(loc) : Location.none, - prf_attributes: [], - } - ), - ), - Closed, - None, - ) - ); - }, - ~loc, - path, - ); - -let generate_object_type = - ( - ~emit_locations, - config, - fields, - obj_path, - raw, - loc: ast_location, - is_variant, - interface_fragments, - ) => { - let object_fields = - fields - |> List.fold_left( - acc => - fun - | Fragment({key, loc_key, module_name, type_name}) => [ - { - pof_desc: - Otag( - {txt: key, loc: Location.none}, - Ast_helper.Typ.constr( - { - Location.txt: - Longident.parse( - module_name - ++ ".t" - ++ ( - switch (type_name) { - | None => "" - | Some(type_name) => "_" ++ type_name - } - ), - ), - // this needs to be emitted both in the implementation and - // signature. Otherwise errors or hover types are not - // correct - loc: !raw ? conv_loc(loc_key) : Location.none, - }, - [], - ), - ), - pof_loc: Location.none, - pof_attributes: [], - }, - ...acc, - ] - - | Field({path: [name, ...path], loc_key, type_}) => [ - { - pof_desc: - Otag( - {txt: to_valid_ident(name), loc: Location.none}, - generate_type( - ~atLoc=? - emit_locations ? None : Some(conv_loc(loc_key)), - ~config, - ~path=[name, ...path], - ~raw, - type_, - ), - ), - pof_loc: Location.none, - pof_attributes: [], - }, - ...acc, - ] - | Field({path: [], loc}) => - // I don't think this should ever happen but we need to - // cover this case, perhaps we can constrain the type - Location.raise_errorf(~loc=loc |> conv_loc, "No path"), - [], - ) - |> List.rev; - - let object_fields = - // if this is a variant in the parsed type and __typename is not explicitly - // requested, still add it (because the printer is added) - if (raw && is_variant && !already_has__typename(fields)) { - [ - { - pof_desc: - Otag( - {txt: to_valid_ident("__typename"), loc: Location.none}, - base_type_name("string"), - ), - pof_loc: Location.none, - pof_attributes: [], - }, - ...object_fields, - ]; - } else { - object_fields; - }; - let object_fields = - switch (interface_fragments) { - | Some((_, [])) - | None => object_fields - | Some((interface_name, _fragments)) => [ - { - pof_desc: - Otag( - {txt: "fragment", loc: Location.none}, - base_type(generate_type_name([interface_name, ...obj_path])), - ), - pof_loc: Location.none, - pof_attributes: [], - }, - ...object_fields, - ] - }; - - raw && raw_opaque_object(interface_fragments, fields) - ? generate_opaque(obj_path, emit_locations ? Some(loc) : None) - : wrap_type_declaration( - ~manifest= - Ast_helper.( - Typ.constr( - {Location.txt: Longident.parse("Js.t"), loc: Location.none}, - [Ast_helper.Typ.object_(object_fields, Closed)], - ) - ), - Ptype_abstract, - ~loc=?{ - emit_locations ? Some(loc) : None; - }, - obj_path, - ); -}; - -let generate_graphql_object = - ( - ~config: Generator_utils.output_config, - ~obj_path, - ~raw, - ~emit_locations, - ~loc, - ~is_variant, - ~type_name, - ~interface_fragments, - fields, - ) => { - switch (type_name) { - | Some(type_name) => - wrap_type_declaration( - ~manifest=base_type(type_name), - Ptype_abstract, - ~loc=?{ - emit_locations ? Some(loc) : None; - }, - obj_path, - ) - | None => - generate_record_type( - ~emit_locations, - ~config, - ~obj_path, - ~raw, - ~loc, - ~is_variant, - ~interface_fragments, - fields, - ) - }; -}; - -let generate_types = - ( - ~config: Generator_utils.output_config, - ~raw, - ~emit_locations, - ~type_name, - ~fragment_name, - res, - ) => { - extract(~fragment_def=Option.is_some(fragment_name), ~path=[], ~raw, res) - |> List.map( - fun - | Object({ - fields, - path: obj_path, - loc, - variant_parent, - interface_fragments, - }) => - generate_graphql_object( - ~config, - ~obj_path, - ~raw, - ~loc, - ~emit_locations, - ~is_variant=variant_parent, - ~type_name, - ~interface_fragments, - fields, - ) - | VariantSelection({loc, path, fields}) => - generate_variant_selection( - ~emit_locations, - config, - fields, - path, - loc, - raw, - ) - | VariantUnion({loc, path, fields, omit_future_value}) => - generate_variant_union( - ~emit_locations, - config, - fields, - omit_future_value, - path, - loc, - raw, - ) - | VariantInterface({name, loc, path, fragments}) => - generate_variant_interface( - ~emit_locations, - ~name, - ~config, - ~fragments, - ~path, - ~loc, - ~raw, - ) - | Enum({loc, path, fields, omit_future_value}) => - generate_enum( - ~emit_locations, - config, - fields, - path, - ~loc, - raw, - omit_future_value, - ), - ) - |> List.rev; -}; - -let make_fragment_type = - (config, raw, type_name, fragment_name, fragment_name_loc) => { - Ast_helper.( - Type.mk( - ~manifest= - Typ.constr( - raw - ? mknoloc(Longident.Lident("t")) - : mkloc( - switch (type_name) { - | Some(type_name) => Longident.parse(type_name) - | None => Longident.Lident("t") - }, - switch (fragment_name_loc) { - | Some(fragment_name_loc) => - conv_loc(config.Generator_utils.map_loc(fragment_name_loc)) - | None => Location.none - }, - ), - [], - ), - mknoloc("t_" ++ fragment_name), - ) - ); -}; -// generate all the types necessary types that we later refer to by name. -let generate_type_structure_items = - (config, res, raw, type_name, fragment_name) => { - let str_type = types => Ast_helper.(Str.type_(Nonrecursive, types)); - let types = - generate_types( - ~config, - ~emit_locations=false, - ~raw, - ~type_name, - ~fragment_name, - res, - ) - |> List.map(type_ => Ast_helper.Str.type_(Recursive, [type_])); - - switch (fragment_name) { - | Some((fragment_name, _fragment_name_loc)) => - switch (Schema.lookup_type(config.schema, fragment_name)) { - | Some(Interface(interface_meta)) => - List.append( - types, - [ - str_type([ - make_fragment_type( - config, - raw, - type_name, - interface_meta.im_name, - None, - ), - ]), - ...Schema.lookup_implementations(config.schema, interface_meta) - |> List.filter_map((type_meta: Schema.type_meta) => - switch (type_meta) { - | Object({om_name}) => - Some( - str_type([ - make_fragment_type( - config, - raw, - type_name, - om_name, - None, - ), - ]), - ) - | _ => None - } - ), - ], - ) - - | Some(Object(_)) => - List.append( - types, - [ - str_type([ - make_fragment_type(config, raw, type_name, fragment_name, None), - ]), - ], - ) - | _ => types - } - | None => types - }; -}; - -let generate_type_signature_items = - ( - config: Generator_utils.output_config, - res, - raw, - type_name, - fragment_name, - ) => { - let emit_locations = raw ? false : true; - let types = - generate_types( - ~config, - ~emit_locations, - ~raw, - ~type_name, - ~fragment_name, - res, - ) - |> List.map(type_ => Ast_helper.Sig.type_(Recursive, [type_])); - let sig_type = types => Ast_helper.(Sig.type_(Nonrecursive, types)); - - switch (fragment_name) { - | Some((fragment_name, fragment_name_loc)) => - switch (Schema.lookup_type(config.schema, fragment_name)) { - | Some(Interface(interface_meta)) => - List.append( - types, - [ - sig_type([ - make_fragment_type( - config, - raw, - type_name, - interface_meta.im_name, - None, - ), - ]), - ...Schema.lookup_implementations(config.schema, interface_meta) - |> List.filter_map((type_meta: Schema.type_meta) => - switch (type_meta) { - | Object({om_name}) => - Some( - sig_type([ - make_fragment_type( - config, - raw, - type_name, - om_name, - None, - ), - ]), - ) - | _ => None - } - ), - ], - ) - - | Some(Object(_)) => - List.append( - types, - [ - sig_type([ - make_fragment_type( - config, - raw, - type_name, - fragment_name, - emit_locations ? Some(fragment_name_loc) : None, - ), - ]), - ], - ) - | _ => types - } - | None => types - }; -}; - -let rec generate_arg_type = (~nulls=true, raw, originalLoc) => { - let loc = raw ? None : Some(conv_loc(originalLoc)); - fun - | Type(Scalar({sm_name: "ID"})) - | Type(Scalar({sm_name: "String"})) => base_type(~loc?, "string") - | Type(Scalar({sm_name: "Int"})) => base_type(~loc?, "int") - | Type(Scalar({sm_name: "Float"})) => base_type(~loc?, "float") - | Type(Scalar({sm_name: "Boolean"})) => base_type(~loc?, "bool") - | Type(Scalar({sm_name: _})) => - base_type(~loc?, Ppx_config.native() ? "Yojson.Basic.t" : "Js.Json.t") - | Type(Enum(enum_meta)) => - if (raw) { - base_type("string"); - } else { - Graphql_ppx_base__.Schema.( - Ast_helper.( - Typ.variant( - ~loc?, - enum_meta.em_values - |> List.map(({evm_name, _}) => - { - prf_desc: - Rtag({txt: evm_name, loc: Location.none}, true, []), - prf_loc: Location.none, - prf_attributes: [], - } - ), - Closed, - None, - ) - ) - ); - } - | Type(InputObject({iom_name})) => - base_type(~loc?, generate_type_name(~prefix="t_variables", [iom_name])) - | Type(Object(_)) => - Location.raise_errorf( - ~loc=originalLoc |> conv_loc, - "Object not allowed in args", - ) - | Type(Union(_)) => - Location.raise_errorf( - ~loc=originalLoc |> conv_loc, - "Union not allowed in args", - ) - | Type(Interface(_)) => - Location.raise_errorf( - ~loc=originalLoc |> conv_loc, - "Interface not allowed in args", - ) - | Nullable(inner) => - nulls - ? base_type( - ~loc?, - ~inner=[ - generate_arg_type(raw, conv_loc_from_ast(Location.none), inner), - ], - raw ? "Js.Nullable.t" : "option", - ) - : generate_arg_type(raw, conv_loc_from_ast(Location.none), inner) - | List(inner) => - base_type( - ~loc?, - ~inner=[ - generate_arg_type(raw, conv_loc_from_ast(Location.none), inner), - ], - "array", - ) - | TypeNotFound(name) => - Location.raise_errorf( - ~loc=originalLoc |> conv_loc, - "Type %s not found!", - name, - ); -}; - -let generate_empty_input_object = (impl, raw) => { - Ppx_config.native() && raw - ? Ast_helper.Type.mk( - ~manifest=?!impl ? None : Some(base_type_name("Yojson.Basic.t")), - { - loc: Location.none, - txt: generate_type_name(~prefix="t_variables", []), - }, - ) - : Ast_helper.Type.mk( - ~manifest=base_type_name("unit"), - { - loc: Location.none, - txt: generate_type_name(~prefix="t_variables", []), - }, - ); -}; - -let generate_record_input_object = (raw, input_obj_name, fields) => { - Ast_helper.( - Type.mk( - ~kind= - Ptype_record( - fields - |> List.map( - fun - | InputField({name, type_, loc}) => { - let valid_name = to_valid_ident(name); - Ast_helper.Type.field( - ~attrs= - if (valid_name == name) { - []; - } else { - Ppx_config.native() - ? [] - : [ - Ast_helper.Attr.mk( - {txt: "bs.as", loc: Location.none}, - PStr([Str.eval(const_str_expr(name))]), - ), - ]; - }, - { - Location.txt: valid_name, - loc: raw ? Location.none : conv_loc(loc), - }, - generate_arg_type( - raw, - { - ...loc, - loc_ghost: - switch (input_obj_name) { - | None => false - | Some(_) => true - }, - }, - type_, - ), - ); - }, - ), - ), - { - loc: Location.none, - txt: - generate_type_name( - ~prefix="t_variables", - switch (input_obj_name) { - | None => [] - | Some(name) => [name] - }, - ), - }, - ) - ); -}; - -let generate_native_raw_input_object = (impl, input_obj_name) => { - Ast_helper.( - Type.mk( - ~kind=?impl ? None : Some(Ptype_abstract), - ~manifest=? - impl - ? Some( - Typ.constr(mknoloc(Longident.parse("Yojson.Basic.t")), []), - ) - : None, - { - loc: Location.none, - txt: - generate_type_name( - ~prefix="t_variables", - switch (input_obj_name) { - | None => [] - | Some(name) => [name] - }, - ), - }, - ) - ); -}; - -let generate_input_object = (impl, raw, _, input_obj_name, fields) => { - Ppx_config.native() && raw - ? generate_native_raw_input_object(impl, input_obj_name) - : generate_record_input_object(raw, input_obj_name, fields); -}; - -let generate_arg_type_structure_items = (raw, config, variable_defs) => { - let input_objects = extract_args(config, variable_defs); - [ - input_objects - |> List.map( - fun - | NoVariables => generate_empty_input_object(true, raw) - | InputObject({name, fields}) => { - generate_input_object(true, raw, config, name, fields); - }, - ) - |> Ast_helper.Str.type_(Recursive), - ]; -}; -let generate_arg_type_signature_items = (raw, config, variable_defs) => { - let input_objects = extract_args(config, variable_defs); - [ - input_objects - |> List.map( - fun - | NoVariables => generate_empty_input_object(false, raw) - | InputObject({name, fields}) => { - generate_input_object(false, raw, config, name, fields); - }, - ) - |> Ast_helper.Sig.type_(Recursive), - ]; -}; diff --git a/src/bucklescript/output_bucklescript_utils.re b/src/bucklescript/output_bucklescript_utils.re deleted file mode 100644 index 8a8d3554..00000000 --- a/src/bucklescript/output_bucklescript_utils.re +++ /dev/null @@ -1,121 +0,0 @@ -open Graphql_ppx_base; -open Ppxlib; - -let conv_pos = pos => { - Lexing.pos_fname: pos.Source_pos.pos_fname, - Lexing.pos_lnum: pos.Source_pos.pos_lnum, - Lexing.pos_bol: pos.Source_pos.pos_bol, - Lexing.pos_cnum: pos.Source_pos.pos_cnum, -}; - -let conv_loc = loc => loc; - -let conv_pos_from_ast = pos => pos; - -let conv_loc_from_ast = loc => loc; - -let extend_loc_from_start = (loc: Location.t, cnum) => { - { - ...loc, - loc_end: { - ...loc.loc_start, - pos_cnum: loc.loc_start.pos_cnum + cnum, - }, - }; -}; - -let base_type_name = (~loc=Location.none, name) => - Ast_helper.(Typ.constr({txt: Longident.parse(name), loc}, [])); -let const_str_expr = s => - Ast_helper.(Exp.constant(Pconst_string(s, Location.none, None))); -let const_str_pat = s => - Ast_helper.(Pat.constant(Pconst_string(s, Location.none, None))); -let ident_from_string = (~loc=Location.none, ident) => - Ast_helper.(Exp.ident(~loc, {txt: Longident.parse(ident), loc})); - -let mkloc = (txt, loc) => { - {Location.txt, loc}; -}; - -let mknoloc = txt => { - mkloc(txt, Location.none); -}; - -/* https://github.com/ocaml-ppx/ppxlib/issues/185 */ -module Conv = Ppxlib_ast.Select_ast(Ppxlib_ast__.Versions.OCaml_current); -module Of_ppxlib = Conv.To_ocaml; -module To_ppxlib = Conv.Of_ocaml; - -let to_valid_ident = ident => - if (ident.[0] >= '0' && ident.[0] <= '9') { - "_" ++ ident; - } else { - // from gist of sgrove, source: - // https://gist.github.com/sgrove/335bf1759d8d2f685dfea80d4e6afac7 - [ - "and", - "as", - "asr", - "assert", - "begin", - "class", - "constraint", - "do", - "done", - "downto", - "else", - "end", - "esfun", - "exception", - "external", - "false", - "for", - "fun", - "function", - "functor", - "if", - "in", - "include", - "inherit", - "initializer", - "land", - "lazy", - "let", - "lor", - "lsl", - "lsr", - "lxor", - "match", - "method", - "mod", - "module", - "mutable", - "new", - "nonrec", - "object", - "of", - "open", - "open!", - "or", - "pri", - "private", - "pub", - "public", - "rec", - "sig", - "struct", - "switch", - "then", - "to", - "true", - "try", - "type", - "val", - "virtual", - "when", - "while", - "with", - ] - |> List.exists(reserved_word => ident == reserved_word) - ? ident ++ "_" : ident; - }; diff --git a/src/bucklescript/runtime/graphql_ppx_runtime.re b/src/bucklescript/runtime/graphql_ppx_runtime.re deleted file mode 100644 index 91d7d083..00000000 --- a/src/bucklescript/runtime/graphql_ppx_runtime.re +++ /dev/null @@ -1,60 +0,0 @@ -let option_map = (f, o) => { - switch (o) { - | Some(x) => Some(f(x)) - | None => None - }; -}; -let rec merge_pairs = - ( - pairs1: list((string, Yojson.Basic.t)), - pairs2: list((string, Yojson.Basic.t)), - ) => { - let unique_keys = - List.append( - List.map(((k, _)) => k, pairs1), - List.map(((k, _)) => k, pairs2), - ) - |> List.fold_left( - (unique_keys, key) => - if (List.exists(k => k == key, unique_keys)) { - [key, ...unique_keys]; - } else { - unique_keys; - }, - [], - ); - - unique_keys - |> List.map(key => { - ( - key, - switch ( - List.find_opt(((assoc_key, _)) => key == assoc_key, pairs1) - |> option_map(pair => snd(pair)), - List.find_opt(((assoc_key, _)) => key == assoc_key, pairs2) - |> option_map(pair => snd(pair)), - ) { - | (Some(`Assoc(pairs1)), Some(`Assoc(pairs2))) => - `Assoc(merge_pairs(pairs1, pairs2)) - | (_, Some(`Assoc(pairs2))) => `Assoc(pairs2) - | (_, Some(any)) => any - | (Some(any), _) => any - | (None, None) => assert(false) - }, - ) - }); -} - -and deepMerge = (json1: Yojson.Basic.t, json2: Yojson.Basic.t) => { - switch (json1, json2) { - | (`Assoc(pairs1), `Assoc(pairs2)) => - `Assoc(merge_pairs(pairs1, pairs2)) - | (_, `Bool(value)) => `Bool(value) - | (_, `Float(value)) => `Float(value) - | (_, `String(value)) => `String(value) - | (_, `List(values)) => `List(values) - | (_, `Int(value)) => `Int(value) - | (_, `Null) => `Null - | (_, _) => assert(false) - }; -}; diff --git a/src/bucklescript_bin/Bin.re b/src/bucklescript_bin/Bin.re deleted file mode 100644 index 1536982a..00000000 --- a/src/bucklescript_bin/Bin.re +++ /dev/null @@ -1,5 +0,0 @@ -Graphql_ppx_base.Ppx_config.update_config(current => - {...current, native: false} -); - -let () = Ppxlib.Driver.run_as_ppx_rewriter(); diff --git a/src/graphql_compiler/ast_serializer_apollo.ml b/src/graphql_compiler/ast_serializer_apollo.ml new file mode 100644 index 00000000..c847d846 --- /dev/null +++ b/src/graphql_compiler/ast_serializer_apollo.ml @@ -0,0 +1,190 @@ +open Graphql_ast +open Source_pos + +let ser_optional serializer = function + | None -> `Null + | Some item -> serializer item + +let ser_list_to_array serializer items = `List (List.map serializer items) + +let ser_optional_list serializer = function + | None | Some { item = []; _ } -> `List [] + | Some { item; _ } -> ser_list_to_array serializer item + +let ser_name { item = name; _ } = + `Assoc [ ("kind", `String "Name"); ("value", `String name) ] + +let rec ser_type = function + | { item = Tr_named name; _ } -> + `Assoc [ ("kind", `String "NamedType"); ("name", ser_name name) ] + | { item = Tr_list inner; _ } -> + `Assoc [ ("kind", `String "ListType"); ("type", ser_type inner) ] + | { item = Tr_non_null_named name; _ } -> + `Assoc + [ + ("kind", `String "NonNullType"); + ( "type", + `Assoc [ ("kind", `String "NamedType"); ("name", ser_name name) ] ); + ] + | { item = Tr_non_null_list inner; _ } -> + `Assoc + [ + ("kind", `String "NonNullType"); + ( "type", + `Assoc [ ("kind", `String "ListType"); ("type", ser_type inner) ] ); + ] + +let rec ser_value = function + | { item = Iv_null; _ } -> `Assoc [ ("kind", `String "NullValue") ] + | { item = Iv_int i; _ } -> + `Assoc + [ ("kind", `String "IntValue"); ("value", `String (string_of_int i)) ] + | { item = Iv_float f; _ } -> + `Assoc + [ + ("kind", `String "FloatValue"); + ("value", `String (Printf.sprintf "%.16g" f)); + ] + | { item = Iv_string s; _ } -> + `Assoc [ ("kind", `String "StringValue"); ("value", `String s) ] + | { item = Iv_boolean b; _ } -> + `Assoc [ ("kind", `String "BooleanValue"); ("value", `Bool b) ] + | { item = Iv_enum e; _ } -> + `Assoc [ ("kind", `String "EnumValue"); ("value", `String e) ] + | { item = Iv_variable v; span; _ } -> + `Assoc + [ ("kind", `String "Variable"); ("name", ser_name { item = v; span }) ] + | { item = Iv_list l; _ } -> + `Assoc + [ + ("kind", `String "ListValue"); ("values", ser_list_to_array ser_value l); + ] + | { item = Iv_object o; _ } -> + `Assoc + [ + ("kind", `String "ObjectValue"); + ("fields", ser_list_to_array ser_object_field o); + ] + +and ser_object_field (k, v) = + `Assoc + [ + ("kind", `String "ObjectField"); + ("name", ser_name k); + ("value", ser_value v); + ] + +let ser_argument (name, value) = + `Assoc + [ + ("kind", `String "Argument"); + ("name", ser_name name); + ("value", ser_value value); + ] + +let ser_arguments args = ser_optional_list ser_argument args + +let ser_variable_definition (name, def) = + `Assoc + [ + ("kind", `String "VariableDefinition"); + ( "variable", + `Assoc [ ("kind", `String "Variable"); ("name", ser_name name) ] ); + ("type", ser_type def.vd_type); + ("defaultValue", ser_optional ser_value def.vd_default_value); + ] + +let ser_variable_definitions defs = + ser_optional_list ser_variable_definition defs + +let ser_directive { item; _ } = + `Assoc + [ + ("kind", `String "Directive"); + ("name", ser_name item.d_name); + ("arguments", ser_arguments item.d_arguments); + ] + +let ser_directives = ser_list_to_array ser_directive +let ser_type_condition tc = ser_type { item = Tr_named tc; span = tc.span } + +let rec ser_selection_set sset = + `Assoc + [ + ("kind", `String "SelectionSet"); + ("selections", ser_list_to_array ser_selection sset.item); + ] + +and ser_selection = function + | Field { item; _ } -> + `Assoc + [ + ("kind", `String "Field"); + ("alias", ser_optional ser_name item.fd_alias); + ("name", ser_name item.fd_name); + ("arguments", ser_arguments item.fd_arguments); + ("directives", ser_directives item.fd_directives); + ("selectionSet", ser_optional ser_selection_set item.fd_selection_set); + ] + | FragmentSpread { item; _ } -> + `Assoc + [ + ("kind", `String "FragmentSpread"); + ("name", ser_name item.fs_name); + ("directives", ser_directives item.fs_directives); + ] + | InlineFragment { item; _ } -> + `Assoc + [ + ("kind", `String "InlineFragment"); + ("typeCondition", ser_optional ser_type_condition item.if_type_condition); + ("directives", ser_directives item.if_directives); + ("selectionSet", ser_selection_set item.if_selection_set); + ] + +let ser_definition = function + | Operation { item; _ } -> + `Assoc + [ + ("kind", `String "OperationDefinition"); + ("name", ser_optional ser_name item.o_name); + ( "operation", + match item.o_type with + | Query -> `String "query" + | Mutation -> `String "mutation" + | Subscription -> `String "subscription" ); + ( "variableDefinitions", + ser_variable_definitions item.o_variable_definitions ); + ("directives", ser_directives item.o_directives); + ("selectionSet", ser_selection_set item.o_selection_set); + ] + | Fragment { item; _ } -> + `Assoc + [ + ("kind", `String "FragmentDefintion"); + ("name", ser_name item.fg_name); + ("typeCondition", ser_type_condition item.fg_type_condition); + ("directives", ser_directives item.fg_directives); + ("selectionSet", ser_selection_set item.fg_selection_set); + ] + +let def_end = function + | Operation { span = _, e; _ } | Fragment { span = _, e; _ } -> e.index + +let document_end = List.fold_left (fun end_ def -> max end_ (def_end def)) 0 + +let serialize_document source defs = + `Assoc + [ + ("kind", `String "Document"); + ("definitions", ser_list_to_array ser_definition defs); + ( "loc", + `Assoc + [ + ("start", `Int 0); + ("end", `Int (defs |> document_end)); + ("source", `StringExpr source); + ("locationOffset", `Assoc [ ("column", `Int 1); ("line", `Int 1) ]); + ("name", `String "GraphQL request"); + ] ); + ] diff --git a/src/graphql_compiler/ast_transforms.ml b/src/graphql_compiler/ast_transforms.ml new file mode 100644 index 00000000..11567916 --- /dev/null +++ b/src/graphql_compiler/ast_transforms.ml @@ -0,0 +1,214 @@ +type t = Schema.t -> Graphql_ast.document -> Graphql_ast.document + +type parent = + | Definition of Graphql_ast.definition + | Selection of Graphql_ast.selection + +let get_parent_span = function + | Selection (Graphql_ast.Field { span }) -> span + | Selection (Graphql_ast.InlineFragment { span }) -> span + | Selection (Graphql_ast.FragmentSpread { span }) -> span + | Definition (Graphql_ast.Operation { span }) -> span + | Definition (Graphql_ast.Fragment { span }) -> span + +let safe_get_field_type schema (ty : Schema.type_meta) name = + let ty_fields = + match ty with + | Interface { im_fields; _ } -> im_fields + | Object { om_fields; _ } -> om_fields + | _ -> [] + in + let open Schema in + List.find_opt (fun fm -> fm.Schema.fm_name = name) ty_fields + |> Option.map (fun field -> field.fm_field_type) + |> Option.map Graphql_printer.type_ref_name + |> Option.flat_map (Schema.lookup_type schema) + +let traverse_selection_set schema ty selection_set fn = + let open Graphql_ast in + selection_set + |> List.map (function + | Graphql_ast.InlineFragment + ({ + item = + { + if_type_condition = Some type_condition; + if_selection_set = selection; + }; + } as field) as parent -> ( + let field_ty = Schema.lookup_type schema type_condition.item in + match field_ty with + | None -> parent + | Some field_ty -> + let selection_set = + fn (Selection parent) schema field_ty selection.item + in + Graphql_ast.InlineFragment + { + field with + item = + { + field.item with + if_selection_set = { selection with item = selection_set }; + }; + }) + | Graphql_ast.Field + ({ item = { fd_selection_set = Some selection } } as field) as parent + -> ( + let field_ty = safe_get_field_type schema ty field.item.fd_name.item in + match field_ty with + | None -> parent + | Some field_ty -> + let selection_set = + fn (Selection parent) schema field_ty selection.item + in + Graphql_ast.Field + { + field with + item = + { + field.item with + fd_selection_set = + Some { selection with item = selection_set }; + }; + }) + | other -> other) + +let rec do_add_typename_to_selection_set parent schema ty selection_set = + let add_typename = + match (ty, selection_set) with + | _, [] -> false + | _, [ Graphql_ast.FragmentSpread _ ] -> false + | Schema.Interface _, _selection_set -> false + | Schema.Union _, _selection_set -> false + | Schema.Object { om_name }, _selection_set -> ( + let open Schema in + match schema with + | { meta = { sm_subscription_type = Some name } } when name = om_name -> + false + | { meta = { sm_mutation_type = Some name } } when name = om_name -> false + | { meta = { sm_query_type = name } } when name = om_name -> false + | _ -> ( + match parent with + | Selection + (Graphql_ast.Field { item = { fd_directives = directives } }) -> + not + (directives + |> List.exists + (fun (d : Graphql_ast.directive Source_pos.spanning) -> + d.item.d_name.item = "bsVariant")) + | _ -> true)) + | _, _selection_set -> false + in + let selection_set = + traverse_selection_set schema ty selection_set + do_add_typename_to_selection_set + in + let already_has_typename = + selection_set + |> List.exists (function + | Graphql_ast.Field { item = { fd_name = { item = "__typename" } } } -> + true + | _ -> false) + in + let parent_span = get_parent_span parent in + if add_typename && not already_has_typename then + Graphql_ast.Field + { + span = parent_span; + item = + { + fd_alias = None; + fd_name = + { + span = + ( { Source_pos.index = -1; line = -1; col = -1 }, + { Source_pos.index = -1; line = -1; col = -1 } ); + item = "__typename"; + }; + fd_arguments = None; + fd_directives = []; + fd_selection_set = None; + }; + } + :: selection_set + else selection_set + +let rec do_remove_typename_from_union _parent schema ty selection_set = + let selection_set = + match ty with + | Schema.Union _ -> + let open Graphql_ast in + selection_set + |> List.fold_left + (fun acc -> function + | Field { item = { fd_name = { item = "__typename" } } } -> acc + | other -> other :: acc) + [] + |> List.rev + | _ -> selection_set + in + traverse_selection_set schema ty selection_set do_remove_typename_from_union + +let traverse_document_selections fn (schema : Schema.t) definitions = + let open Graphql_ast in + definitions + |> List.map (fun def -> + match def with + | Operation { item = op; span } as parent -> ( + let ty_name = + match op.o_type with + | Query -> schema.meta.sm_query_type + | Mutation -> + Option.unsafe_unwrap ~reason:"Cannot find mutation type" + schema.meta.sm_mutation_type + | Subscription -> + Option.unsafe_unwrap ~reason:"Cannot find subscription type" + schema.meta.sm_subscription_type + in + let ty = Schema.lookup_type schema ty_name in + match ty with + | None -> parent + | Some ty -> + Operation + { + span; + item = + { + op with + o_selection_set = + { + item = + fn (Definition parent) schema ty + op.o_selection_set.item; + span = op.o_selection_set.span; + }; + }; + }) + | Fragment { item = f; span } as parent -> ( + let ty_name = f.fg_type_condition.item in + let ty = Schema.lookup_type schema ty_name in + match ty with + | Some ty -> + Fragment + { + item = + { + f with + fg_selection_set = + { + item = + fn (Definition parent) schema ty + f.fg_selection_set.item; + span = f.fg_selection_set.span; + }; + }; + span; + } + | None -> parent)) + +let add_typename_to_selection_set = + traverse_document_selections do_add_typename_to_selection_set + +let remove_typename_from_union = + traverse_document_selections do_remove_typename_from_union diff --git a/src/base/ast_transforms.rei b/src/graphql_compiler/ast_transforms.mli similarity index 86% rename from src/base/ast_transforms.rei rename to src/graphql_compiler/ast_transforms.mli index 7965dde4..39a35d2a 100644 --- a/src/base/ast_transforms.rei +++ b/src/graphql_compiler/ast_transforms.mli @@ -1,4 +1,5 @@ -/** +type t = Schema.t -> Graphql_ast.document -> Graphql_ast.document +(** * An AST transform will take the schema and a document, and transform the AST * of the document returning the same document type * @@ -6,21 +7,20 @@ * fragment compared to what the user supplies. This is helpful for instance * to add fields that clients will add implicitly, or to preprocess the document * to conform to some of the conventions of graphql-ppx. - */ -type t = (Schema.t, Graphql_ast.document) => Graphql_ast.document; + *) -/** +val add_typename_to_selection_set : t +(** * This is a GraphQL AST transform that will add the __typename to all selection * sets. This is necessary for Apollo, as this is an implicit field. * If we don't include this when using Apollo, the __typename information is * lost when we parse values and then serialize back to the js-values again - */ -let add_typename_to_selection_set: t; + *) -/** +val remove_typename_from_union : t +(** * This is a GraphQL AST transform that removes the `__typename` field from * unions. The PPX will add this in the printer stage, so it is always there. * The PPX will not allow any scalar fields on a union except for the inline * fragments, so we make sure to remove it before doing any further processing. - */ -let remove_typename_from_union: t; + *) diff --git a/src/graphql_compiler/dirty_checker.ml b/src/graphql_compiler/dirty_checker.ml new file mode 100644 index 00000000..a5016cb1 --- /dev/null +++ b/src/graphql_compiler/dirty_checker.ml @@ -0,0 +1,63 @@ +let log_head = "[dirty_checker]" + +exception File_not_found + +let hash file = + let () = Log.log ("[calc hash of] " ^ file) in + Digest.file file + +let read_hash src = + let () = Log.log ("[read hash from] " ^ src) in + match open_in_bin src with + | exception _ -> None + | hash_file -> ( + match Digest.input hash_file with + | hash -> + close_in hash_file; + Some hash + | exception End_of_file -> None) + +let write_hash hash dest = + let () = Log.log ("[write hash to] " ^ dest) in + (match open_out_bin dest with + | dest -> + Digest.output dest hash; + close_out dest + | exception _ -> ()); + () + +let find_file file = + if Sys.file_exists file then + let () = Log.log ("[found] " ^ file) in + Some file + else + let () = Log.log ("[not found] " ^ file) in + None + +type checker = { + src : string; + hash_path : string; + dirty_callback : string -> unit; +} + +exception Dirty_update_failure of string + +let dirty_update hash checker = + Log.log "[resource dirty!]"; + match checker.dirty_callback checker.src with + | () -> + write_hash hash checker.hash_path; + Log.log "[update ok]" + | exception Dirty_update_failure msg -> Log.error_log ("[update error] " ^ msg) + +let check checker = + match find_file checker.src with + | None -> raise File_not_found + | Some file -> ( + let new_hash = hash file in + match read_hash checker.hash_path with + | None -> dirty_update new_hash checker + | Some old_hash -> ( + match Digest.compare old_hash new_hash with + | 0 -> Log.log "[resource unchanged]" + | _ -> dirty_update new_hash checker)) diff --git a/src/graphql_compiler/dune b/src/graphql_compiler/dune new file mode 100644 index 00000000..fce88f27 --- /dev/null +++ b/src/graphql_compiler/dune @@ -0,0 +1,6 @@ +(library + (name graphql_compiler) + (public_name graphql_ppx.graphql_compiler) + (libraries unix result) + (flags + (:standard -w -9))) diff --git a/src/graphql_compiler/extract_type_definitions.ml b/src/graphql_compiler/extract_type_definitions.ml new file mode 100644 index 00000000..839da611 --- /dev/null +++ b/src/graphql_compiler/extract_type_definitions.ml @@ -0,0 +1,325 @@ +open Result_structure +open Generator_utils +open Schema +open Source_pos + +type path = string list + +type extracted_type = + | Type of Schema.type_meta + | TypeNotFound of string + | Nullable of extracted_type + | List of extracted_type + +type object_field = + | Field of { + type_ : Result_structure.t; + loc_key : Source_pos.ast_location; + loc : Source_pos.ast_location; + path : path; + arguments : Graphql_ast.arguments; + } + | Fragment of { + module_name : string; + key : string; + loc_key : Source_pos.ast_location; + type_name : string option; + } + +and type_def = + | Object of { + loc : Source_pos.ast_location; + variant_parent : bool; + path : path; + existing_type : string option; + fields : object_field list; + interface_fragments : (string * (string * Result_structure.t) list) option; + } + | VariantSelection of { + loc : Source_pos.ast_location; + path : path; + fields : (Result_structure.name * Result_structure.t) list; + } + | VariantUnion of { + loc : Source_pos.ast_location; + path : path; + fields : (Result_structure.name * Result_structure.t) list; + omit_future_value : bool; + } + | VariantInterface of { + name : string; + loc : Source_pos.ast_location; + path : path; + fragments : (string * Result_structure.t) list; + } + | Enum of { + loc : Source_pos.ast_location; + path : path; + fields : string list; + omit_future_value : bool; + } + +type input_object_field = + | InputField of { + type_ : extracted_type; + name : string; + loc : Source_pos.ast_location; + loc_type : Source_pos.ast_location option; + } + +type arg_type_def = + | NoVariables + | InputObject of { + name : string option; + fields : input_object_field list; + loc : Source_pos.ast_location; + is_recursive : bool; + } + +let has_required_variables (arg_types : arg_type_def list) = + List.fold_left + (fun has_required -> function + | NoVariables -> has_required + | InputObject { name = Some _ } -> has_required + | InputObject { name = None; fields } -> + List.fold_left + (fun has_required -> function + | InputField { type_ = Nullable _ } -> has_required + | InputField { type_ = _ } -> true) + has_required fields) + false arg_types + +let generate_type_name ?(prefix = "t") = function + | [] -> prefix + | path -> + path |> List.rev |> List.fold_left (fun acc item -> acc ^ "_" ^ item) prefix + +let rec extract ?(fragment_def = false) ?(variant = false) ~path ~raw = function + | Res_nullable { inner } -> extract ~path ~raw inner + | Res_array { inner } -> extract ~path ~raw inner + | (Res_object { loc; fields; type_name; interface_fragments } as + result_structure) + | (Res_record { loc; fields; type_name; interface_fragments } as + result_structure) -> ( + match (result_structure, type_name, raw, fragment_def) with + | _, Some _type_name, false, false -> create_children path raw fields + | _, Some _type_name, false, true -> + create_object ~path ~raw ~loc ~variant_parent:variant + ~existing_type:type_name ~interface_fragments fields + | Res_record _, _, false, _ -> + create_object ~path ~raw ~loc ~variant_parent:variant ~existing_type:None + ~interface_fragments fields + | _, _, _, _ -> + create_object ~path ~raw ~loc ~variant_parent:variant ~existing_type:None + ~interface_fragments fields) + | Res_poly_variant_union { loc; fragments; omit_future_value } -> + VariantUnion { path; fields = fragments; loc; omit_future_value } + :: extract_fragments + (fragments + |> List.map (fun (({ item = name } : Result_structure.name), t) -> + (name, t))) + path raw + | Res_poly_variant_selection_set { loc; fragments } -> + VariantSelection { path; fields = fragments; loc } + :: extract_fragments + (fragments + |> List.map (fun (({ item = name } : Result_structure.name), t) -> + (name, t))) + path raw + | Res_poly_variant_interface { loc; name; fragments } -> + VariantInterface { name; path; fragments; loc } + :: extract_fragments fragments (name :: path) raw + | Res_custom_decoder { inner } -> extract ~path ~raw inner + | Res_solo_fragment_spread _ -> [] + | Res_error _ -> [] + | Res_id _ -> [] + | Res_string _ -> [] + | Res_int _ -> [] + | Res_float _ -> [] + | Res_boolean _ -> [] + | Res_raw_scalar _ -> [] + | Res_poly_enum { loc; enum_meta; omit_future_value } -> + [ + Enum + { + path; + fields = + enum_meta.em_values |> List.map (fun { evm_name; _ } -> evm_name); + loc; + omit_future_value; + }; + ] + +and _fragment_names f = f |> List.map (fun (name, _) -> name) + +and extract_fragments fragments path raw = + fragments + |> List.fold_left + (fun acc (name, inner) -> + List.append (extract ~variant:true ~path:(name :: path) ~raw inner) acc) + [] + +and create_children path raw fields = + fields + |> List.fold_left + (fun acc -> function + | Fr_named_field { name; type_ } -> + List.append (extract ~path:(name :: path) ~raw type_) acc + | Fr_fragment_spread _ -> acc) + [] + +and create_object ~path ~raw ~loc ~variant_parent ~existing_type + ~interface_fragments fields = + let object_fields = + fields + |> List.map (function + | Fr_named_field { name; loc; loc_key; type_; arguments } -> + Field { loc; loc_key; path = name :: path; type_; arguments } + | Fr_fragment_spread { key; loc = loc_key; name; type_name } -> + Fragment { module_name = name; key; loc_key; type_name }) + in + [ + [ + Object + { + variant_parent; + loc; + path; + existing_type; + fields = object_fields; + interface_fragments; + }; + ]; + create_children path raw fields; + (match interface_fragments with + | Some (_, []) -> [] + | Some (name, fragments) -> + VariantInterface { name; loc; path; fragments } + :: extract_fragments fragments (name :: path) raw + | None -> []); + ] + |> List.concat + +let _raise_inconsistent_schema type_name loc = + raise_error_with_loc loc + ("Inconsistent schema, type named " ^ type_name ^ " cannot be found") + +let fetch_type schema type_ref = + let type_name = innermost_name type_ref in + (type_name, lookup_type schema type_name) + +let rec convert_type_ref schema = function + | Named type_name -> + Nullable + (match lookup_type schema type_name with + | None -> TypeNotFound type_name + | Some type_ -> Type type_) + | NonNull (Named type_name) -> ( + match lookup_type schema type_name with + | None -> TypeNotFound type_name + | Some type_ -> Type type_) + | List type_ref -> Nullable (List (convert_type_ref schema type_ref)) + | NonNull (List type_ref) -> List (convert_type_ref schema type_ref) + | NonNull (NonNull inner) -> convert_type_ref schema (NonNull inner) + +let generate_input_field_types _input_obj_name (schema : Schema.t) + (fields : + (string + * Schema.type_ref + * Source_pos.ast_location + * Source_pos.ast_location option) + list) = + fields + |> List.fold_left + (fun acc (name, type_ref, loc, loc_type) -> + InputField + { name; type_ = convert_type_ref schema type_ref; loc; loc_type } + :: acc) + [] + |> List.rev + +let rec get_inner_type (type_ : extracted_type) = + match type_ with + | Type _ -> Some type_ + | Nullable inner -> get_inner_type inner + | List inner -> get_inner_type inner + | TypeNotFound _ -> None + +let get_input_object_name (InputField { type_; _ }) = + let type_ = get_inner_type type_ in + match type_ with + | Some (Type (InputObject { iom_name; _ })) -> Some iom_name + | _ -> None + +let get_input_object_names (fields : input_object_field list) = + fields + |> List.map get_input_object_name + |> List.fold_left + (fun acc -> function Some name -> name :: acc | _ -> acc) + [] + +let rec extract_input_object (schema : Schema.t) finalized_input_objects + ( (name : string option), + (fields : (string * Schema.type_ref * loc * loc option) list), + loc ) = + let gen_fields = generate_input_field_types name schema fields in + let is_recursive = + match name with + | None -> false + | Some name -> + gen_fields |> get_input_object_names |> List.exists (fun f -> f = name) + in + InputObject { name; fields = gen_fields; loc; is_recursive } + :: (fields + |> List.fold_left + (fun acc (_name, type_ref, loc, _) -> + let _type_name, type_ = fetch_type schema type_ref in + match type_ with + | Some (Schema.InputObject { iom_name; iom_input_fields; _ }) -> + let finalized_input_objects_in_same_list = + acc + |> List.fold_left + (fun acc -> function + | InputObject { name = Some name } -> name :: acc + | _ -> acc) + [] + in + let finalized_input_objects = + List.append finalized_input_objects + finalized_input_objects_in_same_list + in + let already_created_earlier = + finalized_input_objects |> List.exists (fun f -> f = iom_name) + in + if already_created_earlier then acc + else + let fields = + iom_input_fields + |> List.map (fun field -> + (field.am_name, field.am_arg_type, loc, None)) + in + let result = + extract_input_object schema + (iom_name :: finalized_input_objects) + (Some iom_name, fields, loc) + in + List.append acc result + | _ -> acc) + []) + +let extract_args config args : arg_type_def list = + match args with + | Some { item; span } -> + ( None, + item + |> List.map + (fun + ({ item = name; span }, { Graphql_ast.vd_type = variable_type; _ }) + -> + ( name, + Type_utils.to_schema_type_ref variable_type.item, + config.map_loc span, + Some (config.map_loc variable_type.span) )), + config.map_loc span ) + |> extract_input_object config.schema [] + | _ -> [ NoVariables ] diff --git a/src/graphql_compiler/extract_type_definitions.mli b/src/graphql_compiler/extract_type_definitions.mli new file mode 100644 index 00000000..5ccab96b --- /dev/null +++ b/src/graphql_compiler/extract_type_definitions.mli @@ -0,0 +1,90 @@ +type path = string list + +type extracted_type = + | Type of Schema.type_meta + | TypeNotFound of string + | Nullable of extracted_type + | List of extracted_type + +type object_field = + | Field of { + type_ : Result_structure.t; + loc_key : Source_pos.ast_location; + loc : Source_pos.ast_location; + path : path; + arguments : Graphql_ast.arguments; + } + | Fragment of { + module_name : string; + key : string; + loc_key : Source_pos.ast_location; + type_name : string option; + } + +and type_def = + | Object of { + loc : Source_pos.ast_location; + variant_parent : bool; + path : path; + existing_type : string option; + fields : object_field list; + interface_fragments : (string * (string * Result_structure.t) list) option; + } + | VariantSelection of { + loc : Source_pos.ast_location; + path : path; + fields : (Result_structure.name * Result_structure.t) list; + } + | VariantUnion of { + loc : Source_pos.ast_location; + path : path; + fields : (Result_structure.name * Result_structure.t) list; + omit_future_value : bool; + } + | VariantInterface of { + name : string; + loc : Source_pos.ast_location; + path : path; + fragments : (string * Result_structure.t) list; + } + | Enum of { + loc : Source_pos.ast_location; + path : path; + fields : string list; + omit_future_value : bool; + } + +type input_object_field = + | InputField of { + type_ : extracted_type; + name : string; + loc : Source_pos.ast_location; + loc_type : Source_pos.ast_location option; + } + +type arg_type_def = + | NoVariables + | InputObject of { + name : string option; + fields : input_object_field list; + loc : Source_pos.ast_location; + is_recursive : bool; + } + +val extract : + ?fragment_def:bool -> + ?variant:bool -> + path:path -> + raw:bool -> + Result_structure.t -> + type_def list + +val generate_type_name : ?prefix:string -> path -> string + +val extract_args : + Generator_utils.output_config -> + Graphql_ast.variable_definitions Source_pos.spanning option -> + arg_type_def list + +val get_inner_type : extracted_type -> extracted_type option +val has_required_variables : arg_type_def list -> bool diff --git a/src/graphql_compiler/generator_utils.ml b/src/graphql_compiler/generator_utils.ml new file mode 100644 index 00000000..84a9586a --- /dev/null +++ b/src/graphql_compiler/generator_utils.ml @@ -0,0 +1,35 @@ +type error_marker = { mutable has_error : bool } + +let raise_error_with_loc = Ppx_config.raise_error_with_loc + +let raise_error map_loc span message = + raise_error_with_loc (map_loc span) message + +let some_or o d = match o with Some v -> v | None -> d +let capitalize_ascii = String.capitalize_ascii +let uncapitalize_ascii = String.uncapitalize_ascii + +type output_config = { + map_loc : + Source_pos.source_position * Source_pos.source_position -> + Source_pos.ast_location; + delimiter : string option; + schema : Schema.t; + full_document : Graphql_ast.document; + template_tag : string option * string option * string option; + template_tag_return_type : string option; + template_tag_is_function : bool option; + inline : bool; + future_added_value : bool; + extend : string option; + fragment_in_query : Ppx_config.fragment_in_query; + native : bool; +} + +let filter_map f l = + let rec loop acc = function + | [] -> List.rev acc + | head :: tail -> ( + match f head with None -> loop acc tail | Some v -> loop (v :: acc) tail) + in + loop [] l diff --git a/src/graphql_compiler/graphql_ast.ml b/src/graphql_compiler/graphql_ast.ml new file mode 100644 index 00000000..f4c83f0b --- /dev/null +++ b/src/graphql_compiler/graphql_ast.ml @@ -0,0 +1,84 @@ +open Source_pos + +type type_ref = + | Tr_named of string spanning + | Tr_list of type_ref spanning + | Tr_non_null_named of string spanning + | Tr_non_null_list of type_ref spanning + +type input_value = + | Iv_null + | Iv_int of int + | Iv_float of float + | Iv_string of string + | Iv_boolean of bool + | Iv_enum of string + | Iv_variable of string + | Iv_list of input_value spanning list + | Iv_object of (string spanning * input_value spanning) list + +type variable_definition = { + vd_type : type_ref spanning; + vd_default_value : input_value spanning option; +} + +type variable_definitions = (string spanning * variable_definition) list +type argument = string spanning * input_value spanning +type arguments = argument list + +type directive = { + d_name : string spanning; + d_arguments : arguments spanning option; +} + +type fragment_spread = { + fs_name : string spanning; + fs_directives : directive spanning list; +} + +type field = { + fd_alias : string spanning option; + fd_name : string spanning; + fd_arguments : arguments spanning option; + fd_directives : directive spanning list; + fd_selection_set : selection list spanning option; +} + +and inline_fragment = { + if_type_condition : string spanning option; + if_directives : directive spanning list; + if_selection_set : selection list spanning; +} + +and selection = + | Field of field spanning + | FragmentSpread of fragment_spread spanning + | InlineFragment of inline_fragment spanning + +type operation_type = Query | Mutation | Subscription + +type operation = { + o_type : operation_type; + o_name : string spanning option; + o_variable_definitions : variable_definitions spanning option; + o_directives : directive spanning list; + o_selection_set : selection list spanning; +} + +type fragment = { + fg_variable_definitions : variable_definitions spanning option; + fg_name : string spanning; + fg_type_condition : string spanning; + fg_directives : directive spanning list; + fg_selection_set : selection list spanning; +} + +type definition = + | Operation of operation spanning + | Fragment of fragment spanning + +type document = definition list + +let rec innermost_name = function + | Tr_named { item; _ } | Tr_non_null_named { item; _ } -> item + | Tr_list { item; _ } | Tr_non_null_list { item; _ } -> innermost_name item diff --git a/src/graphql_compiler/graphql_compiler.ml b/src/graphql_compiler/graphql_compiler.ml new file mode 100644 index 00000000..74c7bdff --- /dev/null +++ b/src/graphql_compiler/graphql_compiler.ml @@ -0,0 +1,21 @@ +module Generator_utils = Generator_utils +module Graphql_lexer = Graphql_lexer +module Graphql_parser = Graphql_parser +module Graphql_parser_document = Graphql_parser_document +module Log = Log +module Ppx_config = Ppx_config +module Read_schema = Read_schema +module Result_decoder = Result_decoder +module Result_structure = Result_structure +module Source_pos = Source_pos +module Validations = Validations +module Schema = Schema +module Schema_printer = Schema_printer +module Graphql_ast = Graphql_ast +module Type_utils = Type_utils +module Option = Option +module Traversal_utils = Traversal_utils +module Graphql_printer = Graphql_printer +module Ast_serializer_apollo = Ast_serializer_apollo +module Extract_type_definitions = Extract_type_definitions +module Ast_transforms = Ast_transforms diff --git a/src/graphql_compiler/graphql_lexer.ml b/src/graphql_compiler/graphql_lexer.ml new file mode 100644 index 00000000..764755be --- /dev/null +++ b/src/graphql_compiler/graphql_lexer.ml @@ -0,0 +1,380 @@ +open Result +open Source_pos + +type lexer = { + source : string; + length : int; + mutable position : source_position; + mutable has_reached_eof : bool; +} + +type token = + | Name of string + | Int of int + | Float of float + | String of string + | Exclamation_mark + | Dollar + | Paren_open + | Paren_close + | Bracket_open + | Bracket_close + | Curly_open + | Curly_close + | Ellipsis + | Dot + | Colon + | Equals + | At + | Pipe + | Ampersand + | End_of_file + +let string_of_token t = + match t with + | Name s -> s + | Int i -> string_of_int i + | Float f -> Printf.sprintf "%.16g" f + | String s -> "\"" ^ s ^ "\"" + | Exclamation_mark -> "!" + | Dollar -> "$" + | Paren_open -> "(" + | Paren_close -> ")" + | Bracket_open -> "[" + | Bracket_close -> "]" + | Curly_open -> "{" + | Curly_close -> "}" + | Ellipsis -> "..." + | Dot -> "." + | Colon -> ":" + | Equals -> "=" + | At -> "@" + | Pipe -> "|" + | Ampersand -> "&" + | End_of_file -> "[EOF]" + +type lexerError = + | Unknown_character of char + | Unexpected_character of char + | Unterminated_string + | Unknown_character_in_string of char + | Unknown_escape_sequence of string + | Unexpected_end_of_file + | Invalid_number + +let make source = + { + source; + length = String.length source; + position = origin; + has_reached_eof = false; + } + +let peek_char lexer = + if lexer.position.index >= lexer.length then None + else Some (lexer.position.index, lexer.source.[lexer.position.index]) + +let peek_char_only lexer = lexer |> peek_char |> Option.map snd + +let next_char lexer = + let next = peek_char lexer in + let () = + match peek_char_only lexer with + | Some '\n' -> lexer.position <- advance_line lexer.position + | Some _ -> lexer.position <- advance_col lexer.position + | _ -> () + in + next + +exception Internal_lexer_error + +let emit_single_char lexer token = + let start_pos = lexer.position in + let _ = + match next_char lexer with + | Some next -> next + | None -> raise Internal_lexer_error + in + single_width start_pos token + +let rec scan_over_whitespace lexer = + match peek_char_only lexer with + | Some '\t' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some ' ' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some '\n' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some '\r' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some ',' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some '#' -> + let _ = next_char lexer in + scan_to_end_of_line lexer + | _ -> () + +and scan_to_end_of_line lexer = + match peek_char_only lexer with + | Some '\n' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some '\r' -> + let _ = next_char lexer in + scan_over_whitespace lexer + | Some _ -> + let _ = next_char lexer in + scan_to_end_of_line lexer + | None -> () + +let is_name_start c = c = '_' || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') +let is_digit c = c >= '0' && c <= '9' +let is_name_cont c = is_name_start c || is_digit c +let is_number_start c = is_digit c || c = '-' + +let scan_name lexer = + let start_pos = lexer.position in + match next_char lexer with + | None -> Error (zero_width lexer.position Unexpected_end_of_file) + | Some (start_idx, _) -> + let rec scan_loop end_idx = + match peek_char lexer with + | Some (idx, ch) when is_name_cont ch -> + let _ = next_char lexer in + scan_loop idx + | Some _ -> end_idx + | None -> end_idx + in + let endIdx = scan_loop start_idx in + Ok + (start_end start_pos lexer.position + (Name (String.sub lexer.source start_idx (endIdx - start_idx + 1)))) + +let scan_ellipsis_or_dot lexer = + let start_pos = lexer.position in + let rec scan_loop i = + if i = 0 then Ok (start_end start_pos lexer.position Ellipsis) + else + match peek_char lexer with + | Some (_, '.') -> + let _ = next_char lexer in + scan_loop (i - 1) + | Some (_, _) when i = 2 -> Ok (start_end start_pos lexer.position Dot) + | Some (_, ch) -> + let _ = next_char lexer in + Error (single_width lexer.position (Unexpected_character ch)) + | None -> Error (zero_width lexer.position Unexpected_end_of_file) + in + + scan_loop 3 + +let scan_digits lexer = + let start_pos = lexer.position in + match peek_char lexer with + | None -> Error (zero_width start_pos Unexpected_end_of_file) + | Some (start_idx, _) -> ( + let rec scan_loop end_idx = + match peek_char lexer with + | Some (idx, ch) when is_digit ch -> + let _ = next_char lexer in + scan_loop idx + | Some _ | None -> end_idx + in + let end_idx = scan_loop start_idx in + try + Ok + (int_of_string + (String.sub lexer.source start_idx (end_idx - start_idx + 1))) + with Failure _ -> + Error (start_end start_pos lexer.position Invalid_number)) + +let scan_integer_part lexer = + let is_negative = + match peek_char_only lexer with + | Some '-' -> + let _ = next_char lexer in + Ok true + | Some _ -> Ok false + | None -> Error (zero_width lexer.position Unexpected_end_of_file) + in + + match is_negative with + | Error e -> Error e + | Ok neg -> ( + match scan_digits lexer with + | Error e -> Error e + | Ok num -> Ok (if neg then -1 * num else num)) + +let scan_number lexer = + let start_pos = lexer.position in + let build_number int_part frac_part exp_part = + let mantissa = + frac_part |> Option.map float_of_int + |> Option.map (fun frac -> + if frac > 0.0 then frac /. (10.0 ** (frac |> log10 |> floor)) + else 0.0) + |> Option.map (fun m -> if int_part < 0 then -1.0 *. m else m) + in + let exp = + exp_part |> Option.map float_of_int |> Option.map (fun e -> 10.0 ** e) + in + let num_token = + match (mantissa, exp) with + | None, None -> Int int_part + | None, Some exp -> Float (float_of_int int_part *. exp) + | Some mantissa, None -> Float (float_of_int int_part +. mantissa) + | Some mantissa, Some exp -> + Float ((float_of_int int_part +. mantissa) ** exp) + in + Ok (start_end start_pos lexer.position num_token) + in + + let scan_exp_part int_part frac_part = + match peek_char_only lexer with + | Some 'e' | Some 'E' -> ( + let _ = next_char lexer in + match scan_integer_part lexer with + | Error e -> Error e + | Ok exp_part -> build_number int_part frac_part (Some exp_part)) + | None | Some _ -> build_number int_part frac_part None + in + match scan_integer_part lexer with + | Error e -> Error e + | Ok int_part -> ( + match peek_char_only lexer with + | Some '.' -> ( + let _ = next_char lexer in + match scan_digits lexer with + | Error e -> Error e + | Ok digits -> scan_exp_part int_part (Some digits)) + | Some _ | None -> scan_exp_part int_part None) + +let scan_string ~start_pos lexer = + match peek_char lexer with + | None -> Error (zero_width start_pos Unexpected_end_of_file) + | Some _ -> + let rec scan_loop acc = + match peek_char_only lexer with + | None -> Error (zero_width lexer.position Unterminated_string) + | Some '\n' | Some '\r' -> + Error (single_width lexer.position Unterminated_string) + | Some '"' -> + let _ = next_char lexer in + Ok (start_end start_pos lexer.position (String acc)) + | Some '\\' -> ( + let _ = next_char lexer in + match peek_char_only lexer with + | None -> Error (zero_width lexer.position Unterminated_string) + | Some '"' -> + let _ = next_char lexer in + acc ^ "\"" |> scan_loop + | Some '\\' -> + let _ = next_char lexer in + acc ^ "\\" |> scan_loop + | Some '/' -> + let _ = next_char lexer in + acc ^ "/" |> scan_loop + | Some 'b' -> + let _ = next_char lexer in + acc ^ "\n" |> scan_loop + | Some 'f' -> + let _ = next_char lexer in + acc ^ "\014" |> scan_loop + | Some 'n' -> + let _ = next_char lexer in + acc ^ "\n" |> scan_loop + | Some 'r' -> + let _ = next_char lexer in + acc ^ "\r" |> scan_loop + | Some 't' -> + let _ = next_char lexer in + acc ^ "\t" |> scan_loop + | Some 'u' -> + Error + (single_width lexer.position (Unknown_escape_sequence "\\uXXXX")) + | Some ch -> + Error + (single_width lexer.position + (Unknown_escape_sequence ("\\" ^ String.make 1 ch)))) + | Some ch -> + let _ = next_char lexer in + acc ^ String.make 1 ch |> scan_loop + in + scan_loop "" + +let scan_block_string ~start_pos lexer = + let rec scan_loop acc = + match peek_char_only lexer with + | None -> Error (zero_width lexer.position Unterminated_string) + | Some '"' -> ( + let _ = next_char lexer in + match peek_char_only lexer with + | Some '"' -> ( + let _ = next_char lexer in + match peek_char_only lexer with + | Some '"' -> + let _ = next_char lexer in + Ok (start_end start_pos lexer.position (String acc)) + | Some _ -> acc ^ "\"\"" |> scan_loop + | None -> Error (zero_width lexer.position Unterminated_string)) + | Some _ -> acc ^ "\"" |> scan_loop + | None -> Error (zero_width lexer.position Unterminated_string)) + | Some ch -> + let _ = next_char lexer in + acc ^ String.make 1 ch |> scan_loop + in + scan_loop "" + +let scan_single_token lexer = + if lexer.has_reached_eof then None + else + let () = scan_over_whitespace lexer in + Some + (match peek_char_only lexer with + | Some '!' -> Ok (emit_single_char lexer Exclamation_mark) + | Some '$' -> Ok (emit_single_char lexer Dollar) + | Some '(' -> Ok (emit_single_char lexer Paren_open) + | Some ')' -> Ok (emit_single_char lexer Paren_close) + | Some '[' -> Ok (emit_single_char lexer Bracket_open) + | Some ']' -> Ok (emit_single_char lexer Bracket_close) + | Some '{' -> Ok (emit_single_char lexer Curly_open) + | Some '}' -> Ok (emit_single_char lexer Curly_close) + | Some ':' -> Ok (emit_single_char lexer Colon) + | Some '=' -> Ok (emit_single_char lexer Equals) + | Some '@' -> Ok (emit_single_char lexer At) + | Some '|' -> Ok (emit_single_char lexer Pipe) + | Some '&' -> Ok (emit_single_char lexer Ampersand) + | Some '.' -> scan_ellipsis_or_dot lexer + | Some '"' -> ( + let start_pos = lexer.position in + let _ = next_char lexer in + match peek_char_only lexer with + | Some '"' -> ( + let _ = next_char lexer in + match peek_char_only lexer with + | Some '"' -> + let _ = next_char lexer in + scan_block_string ~start_pos lexer + | None | Some _ -> Ok (start_end start_pos lexer.position (String "")) + ) + | None | Some _ -> scan_string ~start_pos lexer) + | Some ch when is_number_start ch -> scan_number lexer + | Some ch when is_name_start ch -> scan_name lexer + | Some ch -> Error (single_width lexer.position (Unknown_character ch)) + | None -> + let () = lexer.has_reached_eof <- true in + Ok (zero_width lexer.position End_of_file)) + +let consume lexer = + let rec consumer acc = + match scan_single_token lexer with + | Some (Ok t) -> consumer (t :: acc) + | Some (Error e) -> Error e + | None -> Ok acc + in + match consumer [] with Ok l -> Ok (List.rev l) | Error e -> Error e diff --git a/src/graphql_compiler/graphql_parser.ml b/src/graphql_compiler/graphql_parser.ml new file mode 100644 index 00000000..7024535c --- /dev/null +++ b/src/graphql_compiler/graphql_parser.ml @@ -0,0 +1,93 @@ +open Result +open Source_pos + +type parser = { mutable tokens : Graphql_lexer.token spanning list } + +type parseError = + | Unexpected_token of Graphql_lexer.token + | Unexpected_end_of_file + | Lexer_error of Graphql_lexer.lexerError + +let make tokens = { tokens } +let peek parser = List.hd parser.tokens + +exception Internal_parse_error + +let next parser = + match parser.tokens with + | [ x ] -> Error (replace x Unexpected_end_of_file) + | x :: _ -> + let () = parser.tokens <- List.tl parser.tokens in + Ok x + | _ -> raise Internal_parse_error + +let expect parser token = + match next parser with + | Ok span when span.item = token -> Ok span + | Ok span -> Error (replace span (Unexpected_token span.item)) + | x -> x + +let expect_name parser = + match next parser with + | Ok ({ item = Graphql_lexer.Name name; _ } as span) -> Ok (replace span name) + | Ok ({ item = Graphql_lexer.End_of_file; _ } as span) -> + Error (replace span Unexpected_end_of_file) + | Ok span -> Error (map (fun t -> Unexpected_token t) span) + | Error e -> Error e + +let expect_dotted_name parser = + let rec loop start_pos _ acc = + match next parser with + | Ok { item = Graphql_lexer.Name name; span = _, end_pos } -> ( + let acc = acc ^ name in + match peek parser with + | { item = Graphql_lexer.Dot; span = _, end_pos } -> + let _ = next parser in + loop start_pos end_pos (acc ^ ".") + | _ -> Ok (start_end start_pos end_pos acc)) + | Ok ({ item = Graphql_lexer.End_of_file; _ } as span) -> + Error (replace span Unexpected_end_of_file) + | Ok span -> Error (map (fun t -> Unexpected_token t) span) + | Error e -> Error e + in + let { span = start_pos, end_pos; _ } = peek parser in + loop start_pos end_pos "" + +let skip parser token = + match peek parser with + | span when span.item = token -> + Result_ext.map (fun x -> Some x) (next parser) + | span when span.item = Graphql_lexer.End_of_file -> + Error (zero_width (start_pos span) Unexpected_end_of_file) + | _ -> Ok None + +let delimited_list parser opening sub_parser closing = + match expect parser opening with + | Error e -> Error e + | Ok { span = start_pos, _; _ } -> + let rec scanner acc = + match skip parser closing with + | Ok (Some { span = _, end_pos; _ }) -> + Ok (start_end start_pos end_pos (List.rev acc)) + | _ -> ( + match sub_parser parser with + | Ok span -> scanner (span :: acc) + | Error e -> Error e) + in + scanner [] + +let delimited_nonempty_list parser opening sub_parser closing = + match expect parser opening with + | Error e -> Error e + | Ok { span = start_pos, _; _ } -> + let rec scanner acc = + match sub_parser parser with + | Error e -> Error e + | Ok span -> ( + match skip parser closing with + | Error e -> Error e + | Ok (Some { span = _, end_pos; _ }) -> + Ok (start_end start_pos end_pos (List.rev (span :: acc))) + | Ok None -> scanner (span :: acc)) + in + scanner [] diff --git a/src/graphql_compiler/graphql_parser_directives.ml b/src/graphql_compiler/graphql_parser_directives.ml new file mode 100644 index 00000000..9d8dca82 --- /dev/null +++ b/src/graphql_compiler/graphql_parser_directives.ml @@ -0,0 +1,51 @@ +open Graphql_ast +open Graphql_parser +open Source_pos + +let parse_argument parser = + let open Result_ext in + expect_name parser + |> flat_map (fun name -> expect parser Graphql_lexer.Colon |> replace name) + |> flat_map (fun name -> + Graphql_parser_value.parse_value_literal false parser + |> map (fun value -> (name, value))) + +let parse_arguments parser = + match peek parser with + | { item = Graphql_lexer.Paren_open; _ } -> + delimited_nonempty_list parser Graphql_lexer.Paren_open parse_argument + Graphql_lexer.Paren_close + |> Result_ext.map (fun args -> Some args) + | _ -> Ok None + +let parse_directive parser = + let open Result_ext in + expect parser Graphql_lexer.At + |> flat_map (fun { span = at_start, _; _ } -> + expect_name parser |> map (make_t2 at_start)) + |> flat_map (fun (at_start, name) -> + parse_arguments parser |> map (make_t3 at_start name)) + |> map (fun (at_start, name, arguments) -> + match arguments with + | None -> + start_end at_start (end_pos name) { d_name = name; d_arguments = None } + | Some arguments -> + start_end at_start + (match arguments.item with + | hd :: _ -> hd |> snd |> end_pos + | [] -> name |> end_pos) + { d_name = name; d_arguments = Some arguments }) + +let parse_directives parser = + match peek parser with + | { item = Graphql_lexer.At; _ } -> + let rec scanner acc = + match peek parser with + | { item = Graphql_lexer.At; _ } -> ( + match parse_directive parser with + | Error e -> Error e + | Ok directive -> scanner (directive :: acc)) + | _ -> Ok (List.rev acc) + in + scanner [] + | _ -> Ok [] diff --git a/src/graphql_compiler/graphql_parser_document.ml b/src/graphql_compiler/graphql_parser_document.ml new file mode 100644 index 00000000..576640e2 --- /dev/null +++ b/src/graphql_compiler/graphql_parser_document.ml @@ -0,0 +1,349 @@ +open Result +open Graphql_ast +open Graphql_parser +open Source_pos +open Graphql_parser_directives + +let last l = + match List.length l with 0 -> None | n -> Some (List.nth l (n - 1)) + +let selection_end_pos s = + match s with + | Field { span = _, end_pos; _ } -> end_pos + | FragmentSpread { span = _, end_pos; _ } -> end_pos + | InlineFragment { span = _, end_pos; _ } -> end_pos + +let rec parse_type parser = + let open Result_ext in + skip parser Graphql_lexer.Bracket_open + |> flat_map (function + | Some { span = start_pos, _; _ } -> + parse_type parser + |> flat_map (fun inner_type -> + expect parser Graphql_lexer.Bracket_close + |> map (make_t2 inner_type)) + |> flat_map + (fun (inner_type, { span = _, (_ as bracket_end_pos); _ }) -> + match peek parser with + | { item = Graphql_lexer.Exclamation_mark; span = _, end_pos } -> + next parser + |> replace + (start_end start_pos end_pos (Tr_non_null_list inner_type)) + | _ -> + Ok (start_end start_pos bracket_end_pos (Tr_list inner_type))) + | None -> + expect_name parser + |> flat_map (fun name -> + match peek parser with + | { item = Graphql_lexer.Exclamation_mark; span = _, end_pos } -> + next parser + |> replace + (start_end (start_pos name) end_pos + (Tr_non_null_named name)) + | _ -> Ok (Source_pos.replace name (Tr_named name)))) + +let parse_variable_definition parser = + let open Result_ext in + expect parser Graphql_lexer.Dollar + |> flat_map (fun { span = start_pos, _; _ } -> + expect_name parser |> map (make_t2 start_pos)) + |> flat_map (fun v -> expect parser Graphql_lexer.Colon |> replace v) + |> flat_map (fun (start_pos, name) -> + parse_type parser |> map (make_t3 start_pos name)) + |> flat_map (fun (start_pos, name, ty) -> + skip parser Graphql_lexer.Equals |> map (make_t4 start_pos name ty)) + |> flat_map (fun (start_pos, name, ty, equal_sign) -> + match equal_sign with + | None -> + Ok + (start_end start_pos (end_pos ty) + ( start_end start_pos (end_pos name) name.item, + { vd_type = ty; vd_default_value = None } )) + | Some _ -> + Graphql_parser_value.parse_value_literal true parser + |> map (fun default_value -> + start_end start_pos (end_pos default_value) + ( start_end start_pos (end_pos name) name.item, + { vd_type = ty; vd_default_value = Some default_value } ))) + +let parse_variable_definitions parser = + match peek parser with + | { item = Graphql_lexer.Paren_open; _ } -> + delimited_nonempty_list parser Graphql_lexer.Paren_open + parse_variable_definition Graphql_lexer.Paren_close + |> Result_ext.map (fun span -> + Some (map (fun items -> List.map (fun s -> s.item) items) span)) + | _ -> Ok None + +let rec parse_selection_set parser = + delimited_nonempty_list parser Graphql_lexer.Curly_open parse_selection + Graphql_lexer.Curly_close + +and parse_optional_selection_set parser = + match peek parser with + | { item = Graphql_lexer.Curly_open; _ } -> + Result_ext.map (fun x -> Some x) (parse_selection_set parser) + | _ -> Ok None + +and parse_field parser = + let open Result_ext in + let parse_rest alias name = + parse_arguments parser + |> flat_map (fun arguments -> + parse_directives parser |> map (make_t2 arguments)) + |> flat_map (fun (arguments, directives) -> + parse_optional_selection_set parser + |> map (make_t3 arguments directives)) + |> map (fun (arguments, directives, selection_set) -> + start_end + (match alias with + | Some { span = start_pos, _; _ } -> start_pos + | None -> name |> start_pos) + (match selection_set with + | Some { span = _, end_pos; _ } -> end_pos + | None -> ( + match last directives with + | Some { span = _, end_pos; _ } -> end_pos + | None -> ( + match arguments with + | Some { span = _, end_pos; _ } -> end_pos + | None -> name |> end_pos))) + { + fd_alias = alias; + fd_name = name; + fd_arguments = arguments; + fd_directives = directives; + fd_selection_set = selection_set; + }) + in + expect_name parser + |> flat_map (fun alias_or_name -> + skip parser Graphql_lexer.Colon |> map (make_t2 alias_or_name)) + |> flat_map (fun (alias_or_name, colon) -> + match colon with + | None -> parse_rest None alias_or_name + | Some _ -> + expect_name parser + |> flat_map (fun name -> parse_rest (Some alias_or_name) name)) + +and parse_fragment parser = + let open Result_ext in + match expect parser Graphql_lexer.Ellipsis with + | Error e -> Error e + | Ok { span = start_pos, _; _ } -> ( + match peek parser with + | { item = Graphql_lexer.Name "on" } -> + next parser + |> flat_map (fun _ -> expect_name parser) + |> flat_map (fun name -> parse_directives parser |> map (make_t2 name)) + |> flat_map (fun (name, directives) -> + parse_selection_set parser |> map (make_t3 name directives)) + |> map (fun (name, directives, selection_set) -> + InlineFragment + (start_end start_pos (end_pos selection_set) + { + if_type_condition = Some name; + if_directives = directives; + if_selection_set = selection_set; + })) + | { item = Graphql_lexer.Curly_open; _ } -> + parse_selection_set parser + |> map (fun selection_set -> + InlineFragment + (start_end start_pos (end_pos selection_set) + { + if_type_condition = None; + if_directives = []; + if_selection_set = selection_set; + })) + | { item = Graphql_lexer.Name _; _ } -> + expect_dotted_name parser + |> flat_map (fun name -> parse_directives parser |> map (make_t2 name)) + |> map (fun (name, directives) -> + FragmentSpread + (start_end start_pos + (match last directives with + | Some s -> end_pos s + | None -> end_pos name) + { fs_name = name; fs_directives = directives })) + | { item = Graphql_lexer.At; _ } -> + parse_directives parser + |> flat_map (fun directives -> + parse_selection_set parser |> map (make_t2 directives)) + |> map (fun (directives, selection_set) -> + InlineFragment + (start_end start_pos (end_pos selection_set) + { + if_type_condition = None; + if_directives = directives; + if_selection_set = selection_set; + })) + | _ -> ( + match next parser with + | Error e -> Error e + | Ok span -> Error (Source_pos.map (fun t -> Unexpected_token t) span))) + +and parse_selection parser = + match peek parser with + | { item = Graphql_lexer.Ellipsis; _ } -> parse_fragment parser + | _ -> + Result_ext.map + (fun (span : field spanning) -> Field span) + (parse_field parser) + +let parse_operation_type parser = + match next parser with + | Error e -> Error e + | Ok ({ item = Graphql_lexer.Name "query"; _ } as span) -> + Ok (replace span Query) + | Ok ({ item = Graphql_lexer.Name "mutation"; _ } as span) -> + Ok (replace span Mutation) + | Ok ({ item = Graphql_lexer.Name "subscription"; _ } as span) -> + Ok (replace span Subscription) + | Ok span -> Error (map (fun t -> Unexpected_token t) span) + +let parse_operation_definition parser = + let open Result_ext in + match peek parser with + | { item = Graphql_lexer.Curly_open; _ } -> ( + match parse_selection_set parser with + | Error e -> Error e + | Ok span -> + Ok + (Source_pos.replace span + { + o_type = Query; + o_name = None; + o_variable_definitions = None; + o_directives = []; + o_selection_set = span; + })) + | { span = start_pos, _; _ } -> ( + let parse_rest operation_type name = + parse_variable_definitions parser + |> flat_map (fun vdefs -> parse_directives parser |> map (make_t2 vdefs)) + |> flat_map (fun (vdefs, directives) -> + parse_selection_set parser |> map (make_t3 vdefs directives)) + |> map (fun (vdefs, directives, selection_set) -> + start_end start_pos (end_pos selection_set) + { + o_type = operation_type; + o_name = name; + o_variable_definitions = vdefs; + o_directives = directives; + o_selection_set = selection_set; + }) + in + match parse_operation_type parser with + | Error e -> Error e + | Ok operation_type -> ( + match peek parser with + | { item = Graphql_lexer.Name _; _ } -> ( + match expect_name parser with + | Error e -> Error e + | Ok name_span -> parse_rest operation_type.item (Some name_span)) + | _ -> parse_rest operation_type.item None)) + +let parse_string_to_type str = + match str |> Graphql_lexer.make |> Graphql_lexer.consume with + | Ok tokens -> ( + match parse_type (Graphql_parser.make tokens) with + | Ok type_ -> Some type_.item + | Error _ -> None) + | Error _ -> None + +let get_fragment_argument_definitions + (directives : Graphql_ast.directive Source_pos.spanning list) = + match + directives + |> List.find (fun d -> d.item.d_name.item = "argumentDefinitions") + with + | { item = { d_arguments = Some arguments; _ }; span } -> ( + let arguments = + arguments.item + |> List.fold_left + (fun acc -> function + | ( { item = key; span }, + { item = Iv_object values; span = type_span } ) -> ( + let type_ = + values + |> List.fold_left + (fun acc -> function + | { item = "type"; _ }, { item = Iv_string type_; _ } -> + Some type_ + | _ -> acc) + None + in + match type_ with + | Some type_ -> ( + match parse_string_to_type type_ with + | Some type_ -> + ( { item = key; span }, + { + vd_type = { item = type_; span = type_span }; + vd_default_value = None; + } ) + :: acc + | None -> acc) + | _ -> acc) + | _ -> acc) + [] + in + match arguments with + | [] -> None + | arguments -> Some { span; item = arguments }) + | _ -> None + | exception Not_found -> None + +let parse_fragment_definition parser = + let open Result_ext in + expect parser (Graphql_lexer.Name "fragment") + |> flat_map (fun { span = start_pos, _; _ } -> + expect_name parser |> map (make_t2 start_pos)) + |> flat_map (fun (start_pos, name) -> + match name with + | { item = "on"; _ } as span -> + Error + (Source_pos.replace span (Unexpected_token (Graphql_lexer.Name "on"))) + | _ -> Ok (start_pos, name)) + |> flat_map (fun v -> expect parser (Graphql_lexer.Name "on") |> replace v) + |> flat_map (fun (start_pos, name) -> + expect_name parser |> map (make_t3 start_pos name)) + |> flat_map (fun (start_pos, name, type_cond) -> + parse_directives parser |> map (make_t4 start_pos name type_cond)) + |> flat_map (fun (start_pos, name, type_cond, directives) -> + parse_selection_set parser + |> map (make_t5 start_pos name type_cond directives)) + |> map (fun (start_pos, name, type_cond, directives, selection_set) -> + start_end start_pos (end_pos selection_set) + { + fg_name = name; + fg_variable_definitions = + get_fragment_argument_definitions directives; + fg_type_condition = type_cond; + fg_directives = directives; + fg_selection_set = selection_set; + }) + +let parse_definition parser = + let open Result_ext in + match peek parser with + | { item = Graphql_lexer.Curly_open; _ } + | { item = Graphql_lexer.Name "query"; _ } + | { item = Graphql_lexer.Name "mutation"; _ } + | { item = Graphql_lexer.Name "subscription"; _ } -> + parse_operation_definition parser |> map (fun def -> Operation def) + | { item = Graphql_lexer.Name "fragment"; _ } -> + parse_fragment_definition parser |> map (fun def -> Fragment def) + | span -> Error (Source_pos.map (fun t -> Unexpected_token t) span) + +let parse_document parser = + let rec scanner acc = + match parse_definition parser with + | Error e -> Error e + | Ok def -> ( + match peek parser with + | { item = Graphql_lexer.End_of_file; _ } -> Ok (List.rev (def :: acc)) + | _ -> scanner (def :: acc)) + in + scanner [] diff --git a/src/graphql_compiler/graphql_parser_schema.ml b/src/graphql_compiler/graphql_parser_schema.ml new file mode 100644 index 00000000..a38c239a --- /dev/null +++ b/src/graphql_compiler/graphql_parser_schema.ml @@ -0,0 +1,464 @@ +open Result +open Graphql_parser +open Source_pos +open Graphql_parser_directives + +let rec parse_type_ref parser = + let open Schema in + match next parser with + | Ok { item = Graphql_lexer.Name name; _ } -> ( + match peek parser with + | { item = Graphql_lexer.Exclamation_mark; _ } -> + let _ = next parser in + Ok (NonNull (Named name)) + | _ -> Ok (Named name)) + | Ok { item = Graphql_lexer.Bracket_open; _ } -> + parse_type_ref parser + |> Result_ext.flat_map (fun type_ref -> + expect parser Graphql_lexer.Bracket_close + |> Result_ext.map (fun _ -> type_ref)) + |> Result_ext.flat_map (fun type_ref -> + match peek parser with + | { item = Graphql_lexer.Exclamation_mark; span = _ } -> + let _ = next parser in + Ok (NonNull (List type_ref)) + | _ -> Ok (List type_ref)) + | Ok { item; span } -> Error { span; item = Unexpected_token item } + | Error e -> Error e + +let parse_default_value parser = + match peek parser with + | { item = Graphql_lexer.Equals } -> + let _ = next parser in + Graphql_parser_value.parse_value_literal true parser + |> Result_ext.map (fun default_value -> + Some (Graphql_printer.print_input_value default_value.item)) + | _ -> Ok None + +let get_description parser = + match peek parser with + | { item = Graphql_lexer.String s; span = _ } -> + let _ = next parser in + Some s + | _ -> None + +let parse_type_argument parser = + let open Result_ext in + let description = get_description parser in + expect_name parser + |> flat_map (fun name -> replace name (expect parser Graphql_lexer.Colon)) + |> flat_map (fun name -> + parse_type_ref parser |> map (fun type_ref -> (name, type_ref))) + |> flat_map (fun (name, type_ref) -> + parse_default_value parser + |> map (fun default_value -> + (* we should pick up the deprecated directive here, but it's not part of the schema yet *) + let _ = parse_directives parser in + let open Schema in + { + am_name = name.item; + am_arg_type = type_ref; + am_default_value = default_value; + am_description = description; + })) + +let parse_type_arguments parser = + match peek parser with + | { item = Graphql_lexer.Paren_open; _ } -> + delimited_nonempty_list parser Graphql_lexer.Paren_open parse_type_argument + Graphql_lexer.Paren_close + |> Result_ext.map (fun args -> args.item) + | _ -> Ok [] + +type schema_element = + | Type of Schema.type_meta + | Directive of Schema.directive_meta + | Schema of Schema.schema_meta + +let parse_scalar ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.map (fun { item = sm_name } -> + let open Schema in + { sm_name; sm_description = description }) + +let get_deprecated_directive directives = + match directives with + | Ok + [ + { + item = + Graphql_ast. + { + d_name = { item = "deprecated" }; + d_arguments = + Some + { + item = + [ ({ item = "reason" }, { item = Iv_string reason }) ]; + }; + }; + }; + ] -> + Some reason + | _ -> None + +let parse_deprecated_directive parser = + parse_directives parser |> get_deprecated_directive + +let parse_enum_value ~description parser = + expect_name parser + |> Result_ext.map (fun n -> + let evm_deprecation_reason = parse_deprecated_directive parser in + let open Schema in + { + evm_name = n.item; + evm_description = description; + evm_deprecation_reason; + }) + +let parse_enum ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun { item = em_name } -> + expect parser Graphql_lexer.Curly_open + |> Result_ext.map (fun _ -> em_name)) + |> Result_ext.flat_map (fun em_name -> + let rec consume_enums acc = + match peek parser with + | { item = Graphql_lexer.String description } -> ( + let _ = next parser in + match parse_enum_value ~description:(Some description) parser with + | Ok value -> consume_enums (value :: acc) + | Error e -> Error e) + | { item = Graphql_lexer.Name _ } -> ( + match parse_enum_value ~description:None parser with + | Ok value -> consume_enums (value :: acc) + | Error e -> Error e) + | { item = Graphql_lexer.Curly_close } -> + let _ = next parser in + Ok (List.rev acc) + | { item; span } -> Error { span; item = Unexpected_token item } + [@@tailcall] + in + let em_values = consume_enums [] in + em_values + |> Result_ext.map (fun em_values -> + let open Schema in + { em_name; em_description = description; em_values })) + +let parse_field parser = + let description = get_description parser in + expect_name parser + |> Result_ext.flat_map (fun { item = name } -> + parse_type_arguments parser + |> Result_ext.flat_map (fun arguments -> + expect parser Graphql_lexer.Colon + |> Result_ext.map (fun _ -> arguments)) + |> Result_ext.flat_map (fun arguments -> + parse_type_ref parser + |> Result_ext.flat_map (fun field_type -> + let deprecation_reason = parse_deprecated_directive parser in + Ok + (let open Schema in + { + fm_name = name; + fm_description = description; + fm_arguments = arguments; + fm_field_type = field_type; + fm_deprecation_reason = deprecation_reason; + })))) + +let parse_fields parser = + let rec loop acc = + match peek parser with + | { item = Graphql_lexer.Curly_close; _ } -> + let _ = next parser in + Ok (List.rev acc) + | _ -> ( + let field = parse_field parser in + match field with Ok field -> loop (field :: acc) | Error e -> Error e) + in + loop [] + +let parse_input_field parser = parse_type_argument parser + +let rec parse_input_fields parser acc = + match peek parser with + | { item = Graphql_lexer.Curly_close; _ } -> + let _ = next parser in + Ok (List.rev acc) + | _ -> ( + let field = parse_input_field parser in + match field with + | Ok field -> parse_input_fields parser (field :: acc) + | Error e -> Error e) + +let parse_implements parser = + let rec parse_implementations parser acc = + match expect_name parser with + | Ok { item = name } -> ( + let acc = name :: acc in + match peek parser with + | { item = Graphql_lexer.Curly_open } -> Ok (List.rev acc) + | { item = Graphql_lexer.Ampersand } -> parse_implementations parser acc + | { item; span } -> + print_endline "HWOWWOOWO"; + Error { span; item = Unexpected_token item }) + | Error e -> Error e + in + match peek parser with + | { item = Graphql_lexer.Name "implements" } -> + let _ = next parser in + parse_implementations parser [] + | _ -> Ok [] + +let parse_object ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun { item = name; _ } -> + parse_implements parser + |> Result_ext.flat_map (fun implements -> + expect parser Graphql_lexer.Curly_open + |> Result_ext.flat_map (fun _ -> parse_fields parser) + |> Result_ext.map (fun fields -> + let open Schema in + { + om_name = name; + om_description = description; + om_fields = fields; + om_interfaces = implements; + }))) + +let parse_interface ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun { item = name; _ } -> + expect parser Graphql_lexer.Curly_open + |> Result_ext.flat_map (fun _ -> parse_fields parser) + |> Result_ext.map (fun fields -> + let open Schema in + { im_name = name; im_description = description; im_fields = fields })) + +let rec add_to_schema parser (callback : string -> Schema.schema_meta) = + let schema = + expect parser Graphql_lexer.Colon + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.map (fun name -> callback name.item) + in + match schema with + | Ok schema -> parse_schema_fields parser schema + | Error e -> Error e + +and parse_schema_fields parser acc = + match next parser with + | Ok { item = Graphql_lexer.Name "query" } -> + add_to_schema parser (fun name -> { acc with sm_query_type = name }) + | Ok { item = Graphql_lexer.Name "mutation" } -> + add_to_schema parser (fun name -> { acc with sm_mutation_type = Some name }) + | Ok { item = Graphql_lexer.Name "subscription" } -> + add_to_schema parser (fun name -> + { acc with sm_subscription_type = Some name }) + | Ok { item = Graphql_lexer.Curly_close } -> Ok acc + | Ok { item; span } -> Error { span; item = Unexpected_token item } + | Error e -> Error e + +let parse_schema parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect parser Graphql_lexer.Curly_open) + |> Result_ext.flat_map (fun _ -> + parse_schema_fields parser + { + sm_query_type = "Query"; + sm_mutation_type = None; + sm_subscription_type = None; + }) + +let rec parse_union_types ?(acc = []) parser = + let pipe = skip parser Graphql_lexer.Pipe in + match (acc, pipe) with + | _, Ok (Some _) | [], Ok None -> ( + match expect_name parser with + | Ok union -> parse_union_types ~acc:(union.item :: acc) parser + | Error e -> Error e) + | _, _ -> Ok (List.rev acc) + [@@tailcall] + +let parse_union ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun name -> + expect parser Graphql_lexer.Equals |> Result_ext.map (fun _ -> name.item)) + |> Result_ext.flat_map (fun name -> + parse_union_types parser + |> Result_ext.map (fun unions -> + let open Schema in + { + um_name = name; + um_description = description; + um_of_types = unions; + })) + +let parse_input_object ~description parser = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun { item = name; _ } -> + expect parser Graphql_lexer.Curly_open + |> Result_ext.flat_map (fun _ -> parse_input_fields parser []) + |> Result_ext.map (fun fields -> + let open Schema in + { + iom_name = name; + iom_description = description; + iom_input_fields = fields; + })) + +let get_directive_location str = + let open Schema in + match str with + | "MUTATION" -> Dl_mutation + | "SUBSCRIPTION" -> Dl_subscription + | "FIELD" -> Dl_field + | "FRAGMENT_DEFINITION" -> Dl_fragment_definition + | "FRAGMENT_SPREAD" -> Dl_fragment_spread + | "INLINE_FRAGMENT" -> Dl_inline_fragment + | _ -> Dl_unknown + +let rec parse_directive_locations ?(acc = []) parser = + let pipe = skip parser Graphql_lexer.Pipe in + match (acc, pipe) with + | [], Ok None | _, Ok (Some _) -> ( + match expect_name parser with + | Ok { item = name } -> + parse_directive_locations ~acc:(get_directive_location name :: acc) parser + | Error e -> Error e) + | _ -> Ok (List.rev acc) + +let parse_directive ~description:_ parser : (Schema.directive_meta, _) result = + expect_name parser + |> Result_ext.flat_map (fun _ -> expect parser Graphql_lexer.At) + |> Result_ext.flat_map (fun _ -> expect_name parser) + |> Result_ext.flat_map (fun { item = name } -> + parse_type_arguments parser + |> Result_ext.map (fun arguments -> (name, arguments))) + |> Result_ext.flat_map (fun (name, arguments) -> + expect parser (Graphql_lexer.Name "on") + |> Result_ext.flat_map (fun _ -> + (parse_directive_locations parser + : (Schema.directive_location list, _) result) + |> Result_ext.map (fun locations : Schema.directive_meta -> + let open Schema in + { + dm_name = name; + dm_locations = locations; + dm_arguments = arguments; + }))) + +let parse_element = + (fun parser -> + let description = get_description parser in + match peek parser with + | { item = Graphql_lexer.Name "scalar"; _ } -> + parse_scalar ~description parser + |> Result_ext.map (fun scalar -> Type (Scalar scalar)) + | { item = Graphql_lexer.Name "enum"; _ } -> + parse_enum ~description parser + |> Result_ext.map (fun enum -> Type (Enum enum)) + | { item = Graphql_lexer.Name "type"; _ } -> + parse_object ~description parser + |> Result_ext.map (fun obj -> Type (Object obj)) + | { item = Graphql_lexer.Name "interface"; _ } -> + parse_interface ~description parser + |> Result_ext.map (fun interface -> Type (Interface interface)) + | { item = Graphql_lexer.Name "union"; _ } -> + parse_union ~description parser + |> Result_ext.map (fun union -> Type (Union union)) + | { item = Graphql_lexer.Name "input"; _ } -> + parse_input_object ~description parser + |> Result_ext.map (fun input_object -> Type (InputObject input_object)) + | { item = Graphql_lexer.Name "schema"; _ } -> + parse_schema parser |> Result_ext.map (fun schema -> Schema schema) + | { item = Graphql_lexer.Name "directive"; _ } -> + parse_directive ~description parser + |> Result_ext.map (fun directive -> Directive directive) + | { item; span } -> Error { span; item = Unexpected_token item } + : parser -> (schema_element, parseError spanning) result) + +let add_to_schema (schema : Schema.t) element = + match element with + | Type type_ -> + Hashtbl.add schema.type_map (Schema.type_name type_) type_; + schema + | Schema meta -> + let open Schema in + { schema with meta } + | Directive _ -> schema + +let add_built_in_scalars type_map = + [ "Int"; "Float"; "String"; "ID"; "Boolean" ] + |> List.iter (fun scalar -> + Hashtbl.add type_map scalar + (Schema.Scalar { sm_name = scalar; sm_description = None })); + type_map + +let add_built_in_directives directive_map = + let open Schema in + let directives = + [ + { + dm_name = "include"; + dm_locations = [ Dl_field; Dl_fragment_spread; Dl_inline_fragment ]; + dm_arguments = + [ + { + am_name = "if"; + am_description = None; + am_arg_type = NonNull (Named "Boolean"); + am_default_value = None; + }; + ]; + }; + { + dm_name = "skip"; + dm_locations = [ Dl_field; Dl_fragment_spread; Dl_inline_fragment ]; + dm_arguments = + [ + { + am_name = "if"; + am_description = None; + am_arg_type = NonNull (Named "Boolean"); + am_default_value = None; + }; + ]; + }; + ] + in + directives + |> List.iter (fun directive -> + Hashtbl.add directive_map directive.dm_name directive); + directive_map + +let parse parser = + let schema = + let open Schema in + { + meta = + { + sm_query_type = "Query"; + sm_mutation_type = None; + sm_subscription_type = None; + }; + type_map = add_built_in_scalars (Hashtbl.create 100); + directive_map = add_built_in_directives (Hashtbl.create 10); + } + in + let rec scanner schema = + match parse_element parser with + | Error e -> Error e + | Ok element -> ( + match peek parser with + | { item = Graphql_lexer.End_of_file; _ } -> + Ok (add_to_schema schema element) + | _ -> scanner (add_to_schema schema element)) + in + scanner schema diff --git a/src/graphql_compiler/graphql_parser_value.ml b/src/graphql_compiler/graphql_parser_value.ml new file mode 100644 index 00000000..084f66d4 --- /dev/null +++ b/src/graphql_compiler/graphql_parser_value.ml @@ -0,0 +1,62 @@ +open Result +open Source_pos +open Graphql_parser +open Graphql_ast + +let map_next_token parser f = + match next parser with Ok item -> Ok (map f item) | e -> e + +let replace_next_token parser t = + match next parser with Ok item -> Ok (replace item t) | Error e -> Error e + +let map_next_token_with_error parser f = + match next parser with Ok item -> Error (map f item) | Error e -> Error e + +let parse_variable_literal parser = + let open Result_ext in + expect parser Graphql_lexer.Dollar + |> flat_map (fun { span = start_pos, _; _ } -> + expect_name parser |> map (make_t2 start_pos)) + |> map (fun (start_pos, { item; span = _, end_pos }) -> + start_end start_pos end_pos (Iv_variable item)) + +let rec parse_value_literal is_const parser = + match peek parser with + | { item = Graphql_lexer.Bracket_open; _ } -> + parse_list_literal is_const parser + | { item = Graphql_lexer.Curly_open; _ } -> + parse_object_literal is_const parser + | { item = Graphql_lexer.Dollar; _ } when not is_const -> + parse_variable_literal parser + | { item = Graphql_lexer.Int i; _ } -> replace_next_token parser (Iv_int i) + | { item = Graphql_lexer.Float f; _ } -> + replace_next_token parser (Iv_float f) + | { item = Graphql_lexer.String s; _ } -> + replace_next_token parser (Iv_string s) + | { item = Graphql_lexer.Name "true"; _ } -> + replace_next_token parser (Iv_boolean true) + | { item = Graphql_lexer.Name "false"; _ } -> + replace_next_token parser (Iv_boolean false) + | { item = Graphql_lexer.Name "null"; _ } -> replace_next_token parser Iv_null + | { item = Graphql_lexer.Name name; _ } -> + replace_next_token parser (Iv_enum name) + | _ -> map_next_token_with_error parser (fun t -> Unexpected_token t) + +and parse_list_literal is_const parser = + delimited_list parser Graphql_lexer.Bracket_open + (parse_value_literal is_const) + Graphql_lexer.Bracket_close + |> Result_ext.map (fun span -> map (fun items -> Iv_list items) span) + +and parse_object_literal is_const parser = + delimited_list parser Graphql_lexer.Curly_open + (parse_object_field is_const) + Graphql_lexer.Curly_close + |> Result_ext.map (fun span -> map (fun items -> Iv_object items) span) + +and parse_object_field is_const parser = + let open Result_ext in + expect_name parser + |> flat_map (fun key -> expect parser Graphql_lexer.Colon |> replace key) + |> flat_map (fun key -> + parse_value_literal is_const parser |> map (make_t2 key)) diff --git a/src/graphql_compiler/graphql_printer.ml b/src/graphql_compiler/graphql_printer.ml new file mode 100644 index 00000000..9f451ec0 --- /dev/null +++ b/src/graphql_compiler/graphql_printer.ml @@ -0,0 +1,268 @@ +open Graphql_ast +open Source_pos +open Schema + +exception Cant_find_fragment_type of string spanning + +type t = + | String of string + | FragmentNameRef of string + | FragmentQueryRef of string + +let rec type_ref_name = function + | Named n -> n + | NonNull t -> type_ref_name t + | List t -> type_ref_name t + +let rec print_input_value iv = + match iv with + | Iv_null -> "null" + | Iv_int i -> string_of_int i + | Iv_float f -> Printf.sprintf "%.16g" f + | Iv_string s -> "\"" ^ String.escaped s ^ "\"" + | Iv_boolean b -> string_of_bool b + | Iv_enum s -> s + | Iv_variable v -> "$" ^ v + | Iv_list list -> + "[" + ^ (list + |> List.map (fun { item; _ } -> print_input_value item) + |> String.concat ", ") + ^ "]" + | Iv_object obj -> + "{" + ^ (obj + |> List.map (fun ({ item = key; _ }, { item = value; _ }) -> + key ^ ": " ^ print_input_value value) + |> String.concat ", ") + ^ "}" + +let print_argument ({ item = key; _ }, { item = value; _ }) = + key ^ ": " ^ print_input_value value + +let print_arguments args = + match args with + | [] -> "" + | args -> "(" ^ (List.map print_argument args |> String.concat ", ") ^ ")" + +let print_directive d = + "@" ^ d.d_name.item + ^ + match d.d_arguments with + | Some { item; _ } -> print_arguments item + | None -> "" + +let is_internal_directive d = + match d.item.d_name.item with + | "bsOmitFutureValue" | "ppxOmitFutureValue" | "bsVariant" | "ppxVariant" + | "bsRecord" | "ppxRecord" | "bsObject" | "ppxObject" | "bsDecoder" + | "ppxDecoder" | "bsCustom" | "ppxCustom" | "ppxCustomOpt" | "bsAs" | "ppxAs" + | "argumentDefinitions" | "arguments" | "bsField" | "ppxField" | "ppxConfig" + -> + true + | _ -> false + +let print_directives ds = + " " + ^ (ds + |> List.filter (fun d -> not @@ is_internal_directive d) + |> List.map (fun d -> print_directive d.item) + |> String.concat " ") + ^ " " + +let print_fragment_spread s = + [| + String "..."; + FragmentNameRef s.fs_name.item; + String (" " ^ print_directives s.fs_directives); + |] + +let rec print_type ty = + match ty with + | Tr_named n -> n.item + | Tr_list l -> "[" ^ print_type l.item ^ "]" + | Tr_non_null_list l -> "[" ^ print_type l.item ^ "]!" + | Tr_non_null_named n -> n.item ^ "!" + +let rec print_selection_set schema ty selection_set = + match selection_set with + | [] -> [||] + | selection -> + let add_typename = + match ty with Interface _ | Union _ -> true | _ -> false + in + let maybe_typename = + if add_typename then Some (String "__typename\n") else None + in + let selection = + selection + |> List.map (fun s -> + Array.append (print_selection schema ty s) [| String "\n" |]) + |> Array.concat + in + Array.concat + [ + (match maybe_typename with + | Some typename -> [| String "{\n"; typename |] + | None -> [| String "{\n" |]); + selection; + [| String "}\n" |]; + ] + +and print_selection schema ty selection = + match selection with + | Field { item; _ } -> print_field schema ty item + | FragmentSpread { item; _ } -> print_fragment_spread item + | InlineFragment { item; _ } -> print_inline_fragment schema ty item + +and print_field schema ty f = + let ty_fields = + match ty with + | Interface { im_fields; _ } -> im_fields + | Object { om_fields; _ } -> om_fields + | _ -> [] + in + let field_type_name = + (List.find (fun fm -> fm.fm_name = f.fd_name.item) ty_fields).fm_field_type + |> type_ref_name + in + let field_ty = + field_type_name |> lookup_type schema + |> Option.unsafe_unwrap + ~reason:("Cannot find field type: " ^ field_type_name) + in + Array.append + ([ + (match f.fd_alias with + | Some { item; _ } -> Some (String (item ^ ": ")) + | None -> None); + Some (String f.fd_name.item); + (match f.fd_arguments with + | Some { item; _ } -> Some (String (print_arguments item)) + | None -> None); + Some (String (print_directives f.fd_directives)); + ] + |> List.fold_left + (fun acc -> function Some r -> r :: acc | None -> acc) + [] + |> List.rev |> Array.of_list) + (match f.fd_selection_set with + | Some { item; _ } -> print_selection_set schema field_ty item + | None -> [||]) + +and print_inline_fragment schema ty f = + let inner_ty = + match f.if_type_condition with + | Some { item; _ } -> + lookup_type schema item + |> Option.unsafe_unwrap + ~reason:("Can't find inline fragment type: " ^ item) + | None -> ty + in + Array.append + [| + String "..."; + String + (match f.if_type_condition with + | Some { item; _ } -> "on " ^ item ^ " " + | None -> " "); + String (print_directives f.if_directives); + |] + (print_selection_set schema inner_ty f.if_selection_set.item) + +let print_variable_definition (name, def) = + Printf.sprintf "$%s: %s%s" name.item + (print_type def.vd_type.item) + (match def.vd_default_value with + | Some { item; _ } -> " = " ^ print_input_value item + | None -> "") + +let print_variable_definitions defs = + "(" ^ (List.map print_variable_definition defs |> String.concat ", ") ^ ")" + +let print_operation schema op = + let ty_name = + match op.o_type with + | Query -> schema.meta.sm_query_type + | Mutation -> + Option.unsafe_unwrap ~reason:"Can't find mutation type" + schema.meta.sm_mutation_type + | Subscription -> + Option.unsafe_unwrap ~reason:"Can't find subscription type" + schema.meta.sm_subscription_type + in + Array.append + ([ + Some + (String + (match op.o_type with + | Query -> "query " + | Mutation -> "mutation " + | Subscription -> "subscription ")); + (match op.o_name with + | Some { item; _ } -> Some (String item) + | None -> None); + (match op.o_variable_definitions with + | Some { item; _ } -> Some (String (print_variable_definitions item)) + | None -> None); + Some (String (print_directives op.o_directives)); + ] + |> List.fold_left + (fun acc -> function Some r -> r :: acc | None -> acc) + [] + |> List.rev |> Array.of_list) + (print_selection_set schema + (lookup_type schema ty_name + |> Option.unsafe_unwrap ~reason:("Can't find type: " ^ ty_name)) + op.o_selection_set.item) + +let print_fragment schema f = + Array.append + [| + String + ("fragment " ^ f.fg_name.item ^ " on " ^ f.fg_type_condition.item ^ " "); + String (print_directives f.fg_directives); + |] + (print_selection_set schema + (match lookup_type schema f.fg_type_condition.item with + | Some fragment_type -> fragment_type + | None -> raise (Cant_find_fragment_type f.fg_type_condition)) + f.fg_selection_set.item) + +let print_definition schema def = + match def with + | Operation { item = operation; _ } -> print_operation schema operation + | Fragment { item = fragment; _ } -> print_fragment schema fragment + +module StringSet = Set.Make (String) + +let find_fragment_refs parts = + parts + |> Array.fold_left + (fun acc -> function + | String _ -> acc + | FragmentNameRef r -> StringSet.add r acc + | FragmentQueryRef _ -> acc) + StringSet.empty + |> StringSet.elements + +let compress_parts (parts : t array) = + parts |> Array.to_list + |> List.fold_left + (fun acc curr -> + match (acc, curr) with + | String s1 :: rest, String s2 -> String (s1 ^ s2) :: rest + | acc, curr -> curr :: acc) + [] + |> List.rev |> Array.of_list + +let print_document schema defs = + let parts = defs |> List.map (print_definition schema) |> Array.concat in + let fragment_refs = find_fragment_refs parts in + Array.concat + [ + parts; + fragment_refs |> Array.of_list + |> Array.map (fun ref -> FragmentQueryRef ref); + ] + |> compress_parts diff --git a/src/graphql_compiler/graphql_printer.mli b/src/graphql_compiler/graphql_printer.mli new file mode 100644 index 00000000..ae0b4b25 --- /dev/null +++ b/src/graphql_compiler/graphql_printer.mli @@ -0,0 +1,11 @@ +exception Cant_find_fragment_type of string Source_pos.spanning + +type t = + | String of string + | FragmentNameRef of string + | FragmentQueryRef of string + +val type_ref_name : Schema.type_ref -> string +val print_type : Graphql_ast.type_ref -> string +val print_document : Schema.t -> Graphql_ast.document -> t array +val print_input_value : Graphql_ast.input_value -> string diff --git a/src/graphql_compiler/log.ml b/src/graphql_compiler/log.ml new file mode 100644 index 00000000..4e7ec6e2 --- /dev/null +++ b/src/graphql_compiler/log.ml @@ -0,0 +1,2 @@ +let log msg = if Ppx_config.verbose_logging () then print_endline msg +let error_log = prerr_endline diff --git a/src/graphql_compiler/multi_visitor.ml b/src/graphql_compiler/multi_visitor.ml new file mode 100644 index 00000000..88189865 --- /dev/null +++ b/src/graphql_compiler/multi_visitor.ml @@ -0,0 +1,174 @@ +module NullVisitor : Traversal_utils.VisitorSig = struct + type t = unit + + include Traversal_utils.AbstractVisitor + + let make_self _ = () +end + +module Visitor (H : Traversal_utils.VisitorSig) (T : Traversal_utils.VisitorSig) : + Traversal_utils.VisitorSig = struct + type t = H.t * T.t + + let make_self () = (H.make_self (), T.make_self ()) + + let enter_document (h, t) ctx doc = + let () = H.enter_document h ctx doc in + T.enter_document t ctx doc + + let exit_document (h, t) ctx doc = + let () = H.exit_document h ctx doc in + T.exit_document t ctx doc + + let enter_operation_definition (h, t) ctx def = + let () = H.enter_operation_definition h ctx def in + T.enter_operation_definition t ctx def + + let exit_operation_definition (h, t) ctx def = + let () = H.exit_operation_definition h ctx def in + T.exit_operation_definition t ctx def + + let enter_fragment_definition (h, t) ctx def = + let () = H.enter_fragment_definition h ctx def in + T.enter_fragment_definition t ctx def + + let exit_fragment_definition (h, t) ctx def = + let () = H.exit_fragment_definition h ctx def in + T.exit_fragment_definition t ctx def + + let enter_variable_definition (h, t) ctx def = + let () = H.enter_variable_definition h ctx def in + T.enter_variable_definition t ctx def + + let exit_variable_definition (h, t) ctx def = + let () = H.exit_variable_definition h ctx def in + T.exit_variable_definition t ctx def + + let enter_directive (h, t) ctx d = + let () = H.enter_directive h ctx d in + T.enter_directive t ctx d + + let exit_directive (h, t) ctx d = + let () = H.exit_directive h ctx d in + T.exit_directive t ctx d + + let enter_argument (h, t) ctx a = + let () = H.enter_argument h ctx a in + T.enter_argument t ctx a + + let exit_argument (h, t) ctx a = + let () = H.exit_argument h ctx a in + T.exit_argument t ctx a + + let enter_selection_set (h, t) ctx s = + let () = H.enter_selection_set h ctx s in + T.enter_selection_set t ctx s + + let exit_selection_set (h, t) ctx s = + let () = H.exit_selection_set h ctx s in + T.exit_selection_set t ctx s + + let enter_field (h, t) ctx f = + let () = H.enter_field h ctx f in + T.enter_field t ctx f + + let exit_field (h, t) ctx f = + let () = H.exit_field h ctx f in + T.exit_field t ctx f + + let enter_fragment_spread (h, t) ctx fs = + let () = H.enter_fragment_spread h ctx fs in + T.enter_fragment_spread t ctx fs + + let exit_fragment_spread (h, t) ctx fs = + let () = H.exit_fragment_spread h ctx fs in + T.exit_fragment_spread t ctx fs + + let enter_inline_fragment (h, t) ctx if_ = + let () = H.enter_inline_fragment h ctx if_ in + T.enter_inline_fragment t ctx if_ + + let exit_inline_fragment (h, t) ctx if_ = + let () = H.exit_inline_fragment h ctx if_ in + T.exit_inline_fragment t ctx if_ + + let enter_null_value (h, t) ctx v = + let () = H.enter_null_value h ctx v in + T.enter_null_value t ctx v + + let exit_null_value (h, t) ctx v = + let () = H.exit_null_value h ctx v in + T.exit_null_value t ctx v + + let enter_int_value (h, t) ctx v = + let () = H.enter_int_value h ctx v in + T.enter_int_value t ctx v + + let exit_int_value (h, t) ctx v = + let () = H.exit_int_value h ctx v in + T.exit_int_value t ctx v + + let enter_float_value (h, t) ctx v = + let () = H.enter_float_value h ctx v in + T.enter_float_value t ctx v + + let exit_float_value (h, t) ctx v = + let () = H.exit_float_value h ctx v in + T.exit_float_value t ctx v + + let enter_string_value (h, t) ctx v = + let () = H.enter_string_value h ctx v in + T.enter_string_value t ctx v + + let exit_string_value (h, t) ctx v = + let () = H.exit_string_value h ctx v in + T.exit_string_value t ctx v + + let enter_bool_value (h, t) ctx v = + let () = H.enter_bool_value h ctx v in + T.enter_bool_value t ctx v + + let exit_bool_value (h, t) ctx v = + let () = H.exit_bool_value h ctx v in + T.exit_bool_value t ctx v + + let enter_enum_value (h, t) ctx v = + let () = H.enter_enum_value h ctx v in + T.enter_enum_value t ctx v + + let exit_enum_value (h, t) ctx v = + let () = H.exit_enum_value h ctx v in + T.exit_enum_value t ctx v + + let enter_variable_value (h, t) ctx v = + let () = H.enter_variable_value h ctx v in + T.enter_variable_value t ctx v + + let exit_variable_value (h, t) ctx v = + let () = H.exit_variable_value h ctx v in + T.exit_variable_value t ctx v + + let enter_list_value (h, t) ctx v = + let () = H.enter_list_value h ctx v in + T.enter_list_value t ctx v + + let exit_list_value (h, t) ctx v = + let () = H.exit_list_value h ctx v in + T.exit_list_value t ctx v + + let enter_object_value (h, t) ctx v = + let () = H.enter_object_value h ctx v in + T.enter_object_value t ctx v + + let exit_object_value (h, t) ctx v = + let () = H.exit_object_value h ctx v in + T.exit_object_value t ctx v + + let enter_object_field (h, t) ctx f = + let () = H.enter_object_field h ctx f in + T.enter_object_field t ctx f + + let exit_object_field (h, t) ctx f = + let () = H.exit_object_field h ctx f in + T.exit_object_field t ctx f +end diff --git a/src/graphql_compiler/option.ml b/src/graphql_compiler/option.ml new file mode 100644 index 00000000..cbb52eaa --- /dev/null +++ b/src/graphql_compiler/option.ml @@ -0,0 +1,12 @@ +exception Option_unwrap_error of string + +let map f = function None -> None | Some v -> Some (f v) +let flat_map f = function None -> None | Some v -> f v + +let unsafe_unwrap ~reason = function + | None -> raise (Option_unwrap_error reason) + | Some v -> v + +let get_or_else default = function None -> default | Some v -> v +let is_some = function Some _ -> true | None -> false +let is_none x = not (is_some x) diff --git a/src/graphql_compiler/ppx_config.ml b/src/graphql_compiler/ppx_config.ml new file mode 100644 index 00000000..8a991be3 --- /dev/null +++ b/src/graphql_compiler/ppx_config.ml @@ -0,0 +1,85 @@ +type output_mode = String | Apollo_AST +type fragment_in_query = Include | Exclude + +type config = { + verbose_logging : bool; + output_mode : output_mode; + verbose_error_handling : bool; + apollo_mode : bool; + root_directory : string; + schema_file : string; + raise_error_with_loc : 'a. Source_pos.ast_location -> string -> 'a; + template_tag : string option; + template_tag_location : string option; + template_tag_import : string option; + template_tag_return_type : string option; + template_tag_is_function : bool option; + custom_fields : (string, string) Hashtbl.t; + future_added_value : bool; + extend_query : string option; + extend_query_no_required_variables : string option; + extend_mutation : string option; + extend_mutation_no_required_variables : string option; + extend_subscription : string option; + extend_subscription_no_required_variables : string option; + extend_fragment : string option; + fragment_in_query : fragment_in_query; + native : bool; +} + +let config_ref = ref None +let set_config config = config_ref := Some config +let update_config update = config_ref := !config_ref |> Option.map update +let unsafe_unwrap_config = Option.unsafe_unwrap ~reason:"Cannot read config" +let verbose_logging () = (!config_ref |> unsafe_unwrap_config).verbose_logging +let output_mode () = (!config_ref |> unsafe_unwrap_config).output_mode +let custom_fields () = (!config_ref |> unsafe_unwrap_config).custom_fields + +let future_added_value () = + (!config_ref |> unsafe_unwrap_config).future_added_value + +let apollo_mode () = (!config_ref |> unsafe_unwrap_config).apollo_mode +let template_tag () = (!config_ref |> unsafe_unwrap_config).template_tag + +let fragment_in_query () = + (!config_ref |> unsafe_unwrap_config).fragment_in_query + +let template_tag_import () = + (!config_ref |> unsafe_unwrap_config).template_tag_import + +let template_tag_location () = + (!config_ref |> unsafe_unwrap_config).template_tag_location + +let template_tag_return_type () = + (!config_ref |> unsafe_unwrap_config).template_tag_return_type + +let template_tag_is_function () = + (!config_ref |> unsafe_unwrap_config).template_tag_is_function + +let verbose_error_handling () = + (!config_ref |> unsafe_unwrap_config).verbose_error_handling + +let root_directory () = (!config_ref |> unsafe_unwrap_config).root_directory +let schema_file () = (!config_ref |> unsafe_unwrap_config).schema_file +let extend_query () = (!config_ref |> unsafe_unwrap_config).extend_query + +let extend_query_no_required_variables () = + (!config_ref |> unsafe_unwrap_config).extend_query_no_required_variables + +let extend_mutation () = (!config_ref |> unsafe_unwrap_config).extend_mutation + +let extend_mutation_no_required_variables () = + (!config_ref |> unsafe_unwrap_config).extend_mutation_no_required_variables + +let extend_subscription () = + (!config_ref |> unsafe_unwrap_config).extend_subscription + +let extend_subscription_no_required_variables () = + (!config_ref |> unsafe_unwrap_config) + .extend_subscription_no_required_variables + +let extend_fragment () = (!config_ref |> unsafe_unwrap_config).extend_fragment +let native () = (!config_ref |> unsafe_unwrap_config).native + +let raise_error_with_loc loc message = + (!config_ref |> unsafe_unwrap_config).raise_error_with_loc loc message diff --git a/src/graphql_compiler/read_schema.ml b/src/graphql_compiler/read_schema.ml new file mode 100644 index 00000000..d2ccf31f --- /dev/null +++ b/src/graphql_compiler/read_schema.ml @@ -0,0 +1,448 @@ +exception Schema_file_not_found + +module Json = struct + type t = + [ `Null + | `Bool of bool + | `Int of int + | `Float of float + | `String of string + | `Assoc of (string * t) list + | `List of t list ] + + exception Type_error of string * t + + let typeof = function + | `Assoc _ -> "object" + | `Bool _ -> "bool" + | `Float _ -> "float" + | `Int _ -> "int" + | `List _ -> "array" + | `Null -> "null" + | `String _ -> "string" + + let typerr msg js = raise (Type_error (msg ^ typeof js, js)) + let assoc name obj = try List.assoc name obj with Not_found -> `Null + + let member name = function + | `Assoc obj -> assoc name obj + | js -> typerr ("Can't get member '" ^ name ^ "' of non-object type ") js + + let to_string = function + | `String s -> s + | js -> typerr "Expected string, got " js + + let to_float = function + | `Float f -> f + | js -> typerr "Expected float, got " js + + let to_int = function `Int i -> i | js -> typerr "Expected int, got " js + let to_bool = function `Bool b -> b | js -> typerr "Expected bool, got " js + + let to_string_option = function + | `String s -> Some s + | `Null -> None + | js -> typerr "Expected string or null, got " js + + let to_list = function `List l -> l | js -> typerr "Expected array, got " js + let to_option f = function `Null -> None | x -> Some (f x) +end + +let typename_field = + { + Schema.fm_name = "__typename"; + fm_description = None; + fm_arguments = []; + fm_field_type = Schema.NonNull (Schema.Named "String"); + fm_deprecation_reason = None; + } + +let map_items f t = + let new_t = Hashtbl.create (Hashtbl.length t) in + let mapper k v = + let k', v' = f k v in + Hashtbl.add new_t k' v' + in + + let () = Hashtbl.iter mapper t in + new_t + +let map_values f = map_items (fun k v -> (k, f k v)) +let some_or o v = match o with Some v -> v | None -> v + +let add_typename_if_missing fields = + let open Schema in + if List.exists (fun { fm_name; _ } -> fm_name = "__typename") fields then + fields + else typename_field :: fields + +exception Unknown_type_kind of string + +let rec type_ref_name tr = + let open Schema in + match tr with + | Named n -> n + | NonNull i -> type_ref_name i + | List i -> type_ref_name i + +let make_enum_value_meta v = + let open Json in + let open Schema in + { + evm_name = v |> member "name" |> to_string; + evm_description = v |> member "description" |> to_string_option; + evm_deprecation_reason = + (if v |> member "isDeprecated" |> to_bool then + Some + (some_or + (v |> member "deprecationReason" |> to_string_option) + "(unknown)") + else None); + } + +let rec make_type_ref v = + let open Json in + let open Schema in + match v |> member "kind" |> to_string with + | "LIST" -> List (v |> member "ofType" |> make_type_ref) + | "NON_NULL" -> NonNull (v |> member "ofType" |> make_type_ref) + | _ -> Named (v |> member "name" |> to_string) + +let make_argument_meta v = + let open Json in + let open Schema in + { + am_name = v |> member "name" |> to_string; + am_description = v |> member "description" |> to_string_option; + am_arg_type = v |> member "type" |> make_type_ref; + am_default_value = v |> member "defaultValue" |> to_string_option; + } + +let make_field_meta v = + let open Json in + let open Schema in + { + fm_name = v |> member "name" |> to_string; + fm_description = v |> member "description" |> to_string_option; + fm_arguments = v |> member "args" |> to_list |> List.map make_argument_meta; + fm_field_type = v |> member "type" |> make_type_ref; + fm_deprecation_reason = + (if v |> member "isDeprecated" |> to_bool then + Some + (some_or + (v |> member "deprecationReason" |> to_string_option) + "(unknown)") + else None); + } + +let make_scalar_meta v = + let open Json in + let open Schema in + { + sm_name = v |> member "name" |> to_string; + sm_description = v |> member "description" |> to_string_option; + } + +let make_object_meta v = + let open Json in + let open Schema in + { + om_name = v |> member "name" |> to_string; + om_description = v |> member "description" |> to_string_option; + om_fields = + v |> member "fields" |> to_list |> List.map make_field_meta + |> add_typename_if_missing; + om_interfaces = + v |> member "interfaces" |> to_list + |> List.map (fun i -> i |> make_type_ref |> type_ref_name); + } + +let make_enum_meta v = + let open Json in + let open Schema in + { + em_name = v |> member "name" |> to_string; + em_description = v |> member "description" |> to_string_option; + em_values = + v |> member "enumValues" |> to_list |> List.map make_enum_value_meta; + } + +let make_interface_meta v = + let open Json in + let open Schema in + { + im_name = v |> member "name" |> to_string; + im_description = v |> member "description" |> to_string_option; + im_fields = + v |> member "fields" |> to_list |> List.map make_field_meta + |> add_typename_if_missing; + } + +let make_union_meta v = + let open Json in + let open Schema in + { + um_name = v |> member "name" |> to_string; + um_description = v |> member "description" |> to_string_option; + um_of_types = + v |> member "possibleTypes" |> to_list + |> List.map (fun i -> i |> make_type_ref |> type_ref_name); + } + +let make_input_object_meta v = + let open Json in + let open Schema in + { + iom_name = v |> member "name" |> to_string; + iom_description = v |> member "description" |> to_string_option; + iom_input_fields = + v |> member "inputFields" |> to_list |> List.map make_argument_meta; + } + +let make_type_meta _ v = + let open Json in + match v |> member "kind" |> to_string with + | "SCALAR" -> Schema.Scalar (make_scalar_meta v) + | "OBJECT" -> Schema.Object (make_object_meta v) + | "ENUM" -> Schema.Enum (make_enum_meta v) + | "INTERFACE" -> Schema.Interface (make_interface_meta v) + | "UNION" -> Schema.Union (make_union_meta v) + | "INPUT_OBJECT" -> Schema.InputObject (make_input_object_meta v) + | e -> raise @@ Unknown_type_kind e + +let make_type_map type_array = + let open Json in + let rec type_map_loop i type_map = + if i = Array.length type_array then type_map + else + let () = + Hashtbl.add type_map + (type_array.(i) |> member "name" |> to_string) + type_array.(i) + in + type_map_loop (i + 1) type_map + in + let type_map = type_map_loop 0 (Hashtbl.create (Array.length type_array)) in + map_values make_type_meta type_map + +let make_directive_location directive_location = + let open Schema in + let open Json in + match directive_location |> to_string with + | "QUERY" -> Dl_query + | "MUTATION" -> Dl_mutation + | "SUBSCRIPTION" -> Dl_subscription + | "FIELD" -> Dl_field + | "FRAGMENT_DEFINITION" -> Dl_fragment_definition + | "FRAGMENT_SPREAD" -> Dl_fragment_spread + | "INLINE_FRAGMENT" -> Dl_inline_fragment + | _ -> Dl_unknown + +let make_directive_meta _ directive = + let open Schema in + let open Json in + { + dm_name = directive |> member "name" |> to_string; + dm_locations = + directive |> member "locations" |> to_list + |> List.map make_directive_location; + dm_arguments = + directive |> member "args" |> to_list |> List.map make_argument_meta; + } + +let make_directive_map directive_array = + let open Json in + let directive_json_map = Hashtbl.create (Array.length directive_array) in + let () = + Array.iter + (fun directive -> + Hashtbl.add directive_json_map + (directive |> member "name" |> to_string) + directive) + directive_array + in + map_values make_directive_meta directive_json_map + +let make_schema_meta v = + let open Json in + let open Schema in + { + sm_query_type = v |> member "queryType" |> member "name" |> to_string; + sm_mutation_type = + v |> member "mutationType" + |> to_option (fun m -> m |> member "name" |> to_string); + sm_subscription_type = + v |> member "subscriptionType" + |> to_option (fun s -> s |> member "name" |> to_string); + } + +let find_file_towards_root dir file = + let rec inner dir file = + let here_file = Filename.concat dir file in + Log.log ("[read_schema][here_file] " ^ here_file); + if Sys.file_exists here_file then + let () = Log.log ("[read_schema][found] " ^ here_file) in + Some here_file + else if Filename.dirname dir = dir then None + else inner (Filename.dirname dir) file + in + + if not (Filename.is_relative file) then Some file else inner dir file + +exception Ppx_cache_dir_is_not_dir + +let create_dir_if_not_exist abs_path = + if Sys.file_exists abs_path then + let file_stat = Unix.stat abs_path in + let open Unix in + match file_stat.st_kind with + | S_DIR -> () + | _ -> raise Ppx_cache_dir_is_not_dir + else + let () = Log.log ("[make_cache_dir]" ^ abs_path) in + match Unix.mkdir abs_path 493 with + | () -> () + | exception Unix.Unix_error (error, cmd, msg) -> ( + match error with + | Unix.EEXIST -> () + | error -> + Log.error_log (Unix.error_message error ^ " " ^ cmd ^ " " ^ msg); + raise (Unix.Unix_error (error, cmd, msg))) + +let ppx_cache_dir = ".graphql_ppx_cache/" + [@@ocaml.doc + "\n\ + \ * Naming Explaniation\n\ + \ *\n\ + \ * json_schema_rel: the path passed in from bsconfig.json \"schema\" flag\n\ + \ * json_schema: the absolute path of confirmed-exist json schema\n\ + \ * marshaled_schema: the absolute path of marshaled schema\n\ + \ "] + +let get_ppx_cache_path suffix relative_to = + let dir = + try Sys.getenv "cur__target_dir" with _ -> Filename.dirname relative_to + in + let cache_dir_path = Filename.concat dir ppx_cache_dir in + let () = create_dir_if_not_exist cache_dir_path in + let name = Filename.basename relative_to ^ suffix in + Filename.concat dir (ppx_cache_dir ^ name) + +let get_marshaled_path = get_ppx_cache_path ".marshaled" +let get_hash_path = get_ppx_cache_path ".hash" + +let parse_json_schema ~read_fn json_schema = + Log.log ("[parse json schema] " ^ json_schema); + let result = read_fn json_schema in + let open Json in + let open Schema in + let schema = + result |> member "data" |> to_option (fun json -> json |> member "__schema") + |> function + | Some json -> json + | None -> result |> member "__schema" + in + { + meta = make_schema_meta schema; + type_map = + schema |> member "types" |> to_list |> Array.of_list |> make_type_map; + directive_map = + schema |> member "directives" |> to_list |> Array.of_list + |> make_directive_map; + } + +let create_marshaled_schema json_schema data = + let marshaled_schema = get_marshaled_path json_schema in + Log.log ("[write marshaled] " ^ marshaled_schema); + match open_out_bin marshaled_schema with + | exception Sys_error msg -> + Log.error_log ("[write marshaled][Sys_error]: " ^ msg); + raise (Sys_error msg) + | outc -> + Marshal.to_channel outc data []; + close_out outc + +let read_whole_file filename = + let ch = open_in filename in + let s = really_input_string ch (in_channel_length ch) in + close_in ch; + s + +exception LexerError of string +exception ParserError of string * int * int +exception InvalidExtension of string + +let parse_graphql_schema schema_file = + let schema_str = read_whole_file schema_file in + match Graphql_lexer.make schema_str |> Graphql_lexer.consume with + | Ok tokens -> ( + match Graphql_parser.make tokens |> Graphql_parser_schema.parse with + | Ok schema -> schema + | Error parser_error -> + raise + (ParserError + ( (match parser_error.item with + | Unexpected_token token -> + "Unexpected token " ^ Graphql_lexer.string_of_token token + | Unexpected_end_of_file -> "Unexpected end of file" + | Lexer_error _ -> "Lexer error"), + (fst parser_error.span).line, + (snd parser_error.span).line ))) + | Error _lex_error -> raise (LexerError "lexer error!") + +let parse_schema ~json_read_fn schema_file = + match String.lowercase_ascii (Filename.extension schema_file) with + | ".graphql" -> parse_graphql_schema schema_file + | ".json" -> parse_json_schema ~read_fn:json_read_fn schema_file + | extension -> raise (InvalidExtension extension) + +let build_schema ~json_read_fn schema_file = + schema_file |> parse_schema ~json_read_fn + |> create_marshaled_schema schema_file + +let build_schema_if_dirty ~json_read_fn json_schema = + let open Dirty_checker in + { + src = json_schema; + hash_path = get_hash_path json_schema; + dirty_callback = build_schema ~json_read_fn; + } + |> check + +let rec read_marshaled_schema ~json_read_fn json_schema = + let marshaled_schema = get_marshaled_path json_schema in + Log.log ("[read marshaled] " ^ marshaled_schema); + match open_in_bin marshaled_schema with + | exception Sys_error msg -> + Log.error_log ("[read marshaled][Sys_error]: " ^ msg); + raise (Sys_error msg) + | file -> + let data = + match Marshal.from_channel file with + | data -> + close_in file; + data + | exception _ -> + close_in file; + recovery_build ~json_read_fn json_schema + in + data + +and recovery_build ~json_read_fn json_schema = + let () = Log.error_log "Marshaled file is broken. Doing recovery build..." in + build_schema_if_dirty ~json_read_fn json_schema; + read_marshaled_schema ~json_read_fn json_schema + +let get_schema ~json_read_fn maybe_schema = + lazy + (match + find_file_towards_root + (Ppx_config.root_directory ()) + (match maybe_schema with + | Some schema_name -> schema_name + | None -> Ppx_config.schema_file ()) + with + | None -> raise Schema_file_not_found + | Some json_schema -> + build_schema_if_dirty ~json_read_fn json_schema; + read_marshaled_schema ~json_read_fn json_schema) diff --git a/src/graphql_compiler/result_decoder.ml b/src/graphql_compiler/result_decoder.ml new file mode 100644 index 00000000..9b14fab0 --- /dev/null +++ b/src/graphql_compiler/result_decoder.ml @@ -0,0 +1,860 @@ +open Graphql_ast +open Source_pos +open Schema +open Type_utils +open Generator_utils +open Result_structure + +let get_with_default value default_value = + match value with Some value -> Some value | None -> default_value + +let make_error error_marker map_loc span message = + let () = error_marker.has_error <- true in + Res_error { loc = map_loc span; message } + +let has_directive ?(prepend = false) name directives = + List.exists + (fun { item = { d_name = { item; _ }; _ }; _ } -> + match prepend with + | true -> item = "bs" ^ name || item = "ppx" ^ name + | false -> item = name) + directives + +let find_directive ?(prepend = false) name directives = + match + List.find + (fun { item = { d_name = { item; _ }; _ }; _ } -> + match prepend with + | true -> item = "bs" ^ name || item = "ppx" ^ name + | false -> item = name) + directives + with + | d -> Some d + | exception Not_found -> None + +let find_argument name arguments = + arguments + |> Option.flat_map (fun { item = arguments; _ } -> + match + List.find + (fun ({ item = arg_name; _ }, _) -> arg_name = name) + arguments + with + | a -> Some a + | exception Not_found -> None) + +let find_fragment_arguments + (directives : Graphql_ast.directive Source_pos.spanning list) = + match directives |> List.find (fun d -> d.item.d_name.item = "arguments") with + | { item = { d_arguments = Some arguments; _ }; _ } -> + arguments.item + |> List.fold_left + (fun acc -> function + | { item = name; _ }, { item = Iv_variable variable_name; _ } + when name = variable_name -> + name :: acc + | _ -> acc) + [] + | _ -> [] + | exception Not_found -> [] + +let get_ppx_as directives = + match directives |> find_directive ~prepend:true "As" with + | None -> None + | Some { item = { d_arguments; _ }; _ } -> ( + match find_argument "type" d_arguments with + | Some (_, { item = Iv_string type_name; _ }) -> Some type_name + | _ -> None) + +let rec unify_type ~has_decoder error_marker as_record existing_record + omit_future_value config span ty + (selection_set : selection list spanning option) = + match ty with + | Ntr_nullable t -> + Res_nullable + { + loc = config.map_loc span; + inner = + unify_type ~has_decoder error_marker as_record existing_record + omit_future_value config span t selection_set; + } + | Ntr_list t -> + Res_array + { + loc = config.map_loc span; + inner = + unify_type ~has_decoder error_marker as_record existing_record + omit_future_value config span t selection_set; + } + | Ntr_named n -> ( + match lookup_type config.schema n with + | None -> raise_error config.map_loc span ("Could not find type " ^ n) + | Some (Scalar { sm_name = "ID"; _ }) + | Some (Scalar { sm_name = "String"; _ }) -> + Res_string { loc = config.map_loc span } + | Some (Scalar { sm_name = "Int"; _ }) -> + Res_int { loc = config.map_loc span } + | Some (Scalar { sm_name = "Float"; _ }) -> + Res_float { loc = config.map_loc span } + | Some (Scalar { sm_name = "Boolean"; _ }) -> + Res_boolean { loc = config.map_loc span } + | Some (Scalar _) when has_decoder -> + Res_raw_scalar { loc = config.map_loc span } + | Some (Scalar { sm_name }) -> ( + try + let decoderModule = + Hashtbl.find (Ppx_config.custom_fields ()) sm_name + in + Res_custom_decoder + { + loc = config.map_loc span; + ident = decoderModule; + inner = Res_raw_scalar { loc = config.map_loc span }; + } + with + | Not_found -> Res_raw_scalar { loc = config.map_loc span } + | other -> raise other) + | Some (Object _ as ty) -> + unify_selection_set error_marker as_record existing_record config span ty + selection_set + | Some (Enum enum_meta) -> + Res_poly_enum { loc = config.map_loc span; enum_meta; omit_future_value } + | Some (Interface im as ty) -> + unify_interface error_marker as_record config span im ty selection_set + existing_record + | Some (InputObject _) -> + make_error error_marker config.map_loc span + "Can't have fields on input objects" + | Some (Union um) -> + unify_union error_marker config span um omit_future_value selection_set) + +and unify_interface error_marker _as_record config span interface_meta ty + selection_set existing_record = + match selection_set with + | None -> + make_error error_marker config.map_loc span + "Interface types must have subselections" + | Some selection_set -> ( + let unwrap_type_conds (selections, fragments) selection = + match selection with + | InlineFragment { item = { if_type_condition = None; _ }; span } -> + raise_error config.map_loc span + "Inline fragments must have a type condition" + | InlineFragment frag -> (selections, frag :: fragments) + | selection -> (selection :: selections, fragments) + in + let base_selection_set, fragments = + List.fold_left unwrap_type_conds ([], []) selection_set.item + in + let generate_case selection ty name = + ( name, + Res_object + { + loc = config.map_loc span; + name; + fields = + List.map + (unify_selection ~base_type:interface_meta.im_name error_marker + config ty) + selection; + type_name = None; + interface_fragments = None; + } ) + in + let generate_fragment_case + { item = { if_type_condition; if_selection_set; _ }; _ } = + match if_type_condition with + | Some if_type_condition -> + let { item; _ } = if_selection_set in + let selection = item in + let ty = + match lookup_type config.schema if_type_condition.item with + | Some ty -> ty + | None -> ty + in + generate_case selection ty if_type_condition.item + | None -> assert false + in + let fragment_cases = List.map generate_fragment_case fragments in + let interface = + Res_poly_variant_interface + { + loc = config.map_loc span; + name = interface_meta.im_name; + fragments = fragment_cases; + } + in + match base_selection_set with + | [] -> interface + | _ -> + Res_object + { + loc = config.map_loc span; + name = interface_meta.im_name; + fields = + List.map + (unify_selection ~base_type:interface_meta.im_name error_marker + config ty) + base_selection_set; + type_name = existing_record; + interface_fragments = Some (interface_meta.im_name, fragment_cases); + }) + +and unify_union error_marker config span union_meta omit_future_value + selection_set = + match selection_set with + | None -> + make_error error_marker config.map_loc span + "Union types must have subselections" + | Some selection_set -> + let unwrap_type_conds selection = + match selection with + | Field { span; _ } | FragmentSpread { span; _ } -> + raise_error config.map_loc span + "Only inline fragments can appear on unions" + | InlineFragment { item = { if_type_condition = None; _ }; span } -> + raise_error config.map_loc span + "Inline fragments must have a type condition" + | InlineFragment frag -> frag + in + let type_cond_name { item = { if_type_condition; _ }; _ } = + match if_type_condition with + | Some { item; _ } -> item + | None -> assert false + in + let generate_case + { item = { if_type_condition; if_selection_set; if_directives }; _ } = + match if_type_condition with + | Some if_type_condition -> + let type_cond_ty = + match lookup_type config.schema if_type_condition.item with + | None -> + raise_error config.map_loc if_type_condition.span + "Could not find type" + | Some ty -> ty + in + let is_record = has_directive ~prepend:true "Record" if_directives in + let existing_record = get_ppx_as if_directives in + let result_decoder = + unify_selection_set error_marker is_record existing_record config + if_selection_set.span type_cond_ty (Some if_selection_set) + in + (if_type_condition, result_decoder) + | None -> assert false + in + let fragments = List.map unwrap_type_conds selection_set.item in + let covered_cases = + List.map type_cond_name fragments |> List.sort compare + in + let possible_cases = List.sort compare union_meta.um_of_types in + Res_poly_variant_union + { + loc = config.map_loc span; + name = union_meta.um_name; + fragments = List.map generate_case fragments; + exhaustive = + (if covered_cases = possible_cases then Exhaustive else Nonexhaustive); + omit_future_value; + } + +and unify_variant error_marker config span ty selection_set = + match ty with + | Ntr_nullable t -> + Res_nullable + { + loc = config.map_loc span; + inner = unify_variant error_marker config span t selection_set; + } + | Ntr_list t -> + Res_array + { + loc = config.map_loc span; + inner = unify_variant error_marker config span t selection_set; + } + | Ntr_named n -> ( + match lookup_type config.schema n with + | None -> + make_error error_marker config.map_loc span ("Could not find type " ^ n) + | Some (Scalar _) + | Some (Enum _) + | Some (Interface _) + | Some (Union _) + | Some (InputObject _) -> + make_error error_marker config.map_loc span + "Variant fields can only be applied to object types" + | Some (Object _ as ty) -> ( + match selection_set with + | None -> + make_error error_marker config.map_loc span + "Variant fields need a selection set" + | Some { item; _ } -> + let fields = + item + |> List.map (fun selection -> + match selection with + | Field { item; _ } -> ( + match lookup_field ty item.fd_name.item with + | None -> + raise_error config.map_loc span + ("Unknown field on type " ^ type_name ty) + | Some field_meta -> + let key = some_or item.fd_alias item.fd_name in + let inner_type = + match to_native_type_ref field_meta.fm_field_type with + | Ntr_list _ | Ntr_named _ -> + raise_error config.map_loc span + "Variant field must only contain nullable fields" + | Ntr_nullable i -> i + in + ( key, + unify_type ~has_decoder:false error_marker false None false + config span inner_type item.fd_selection_set )) + | FragmentSpread { span; _ } -> + raise_error config.map_loc span + "Variant selections can only contain fields" + | InlineFragment { span; _ } -> + raise_error config.map_loc span + "Variant selections can only contain fields") + in + Res_poly_variant_selection_set + { loc = config.map_loc span; name = n; fragments = fields })) + +and unify_field error_marker config field_span ty = + let ast_field = field_span.item in + let field_name = ast_field.fd_name.item in + let field_meta = lookup_field ty field_name in + let key = some_or ast_field.fd_alias ast_field.fd_name in + let key_span = key.span in + let key = key.item in + let is_variant = + has_directive ~prepend:true "Variant" ast_field.fd_directives + in + let is_record = + has_directive ~prepend:true "Record" ast_field.fd_directives + in + let omit_future_value = + has_directive ~prepend:true "OmitFutureValue" ast_field.fd_directives + || not config.future_added_value + in + let has_decoder = + match + ( has_directive ~prepend:true "Decoder" ast_field.fd_directives, + has_directive ~prepend:true "Custom" ast_field.fd_directives, + has_directive ~prepend:true "CustomOpt" ast_field.fd_directives ) + with + | true, _, _ | _, true, _ | _, _, true -> true + | false, false, false -> false + in + let existing_record = get_ppx_as ast_field.fd_directives in + let has_skip = + has_directive "skip" ast_field.fd_directives + || has_directive "include" ast_field.fd_directives + in + let sub_unifier = + if is_variant then unify_variant error_marker + else + unify_type ~has_decoder error_marker is_record existing_record + omit_future_value + in + let parser_expr = + match field_meta with + | None -> + make_error error_marker config.map_loc ast_field.fd_name.span + ("Unknown field '" ^ field_name ^ "' on type " ^ type_name ty) + | Some field_meta -> + let field_ty = to_native_type_ref field_meta.fm_field_type in + let sub_unifier = + sub_unifier config field_span.span field_ty ast_field.fd_selection_set + in + if has_skip && not (is_nullable field_ty) then + Res_nullable + { loc = config.map_loc field_span.span; inner = sub_unifier } + else sub_unifier + in + let loc = config.map_loc field_span.span in + let loc_key = config.map_loc key_span in + let arguments = + match ast_field.fd_arguments with None -> [] | Some { item } -> item + in + match + match + ( ast_field.fd_directives |> find_directive ~prepend:true "Decoder", + ast_field.fd_directives |> find_directive ~prepend:true "Custom", + ast_field.fd_directives |> find_directive ~prepend:true "CustomOpt" ) + with + | Some decoder, _, _ -> `Custom decoder + | _, Some decoder, _ -> `Custom decoder + | _, _, Some decoder -> `CustomOpt decoder + | None, None, None -> `None + with + | `None -> + Fr_named_field { name = key; loc_key; loc; type_ = parser_expr; arguments } + | (`Custom { item = { d_arguments; _ }; span } as result) + | (`CustomOpt { item = { d_arguments; _ }; span } as result) -> ( + match find_argument "module" d_arguments with + | None -> + Fr_named_field + { + name = key; + loc; + loc_key; + type_ = + make_error error_marker config.map_loc span + "ppxDecoder must be given 'module' argument"; + arguments; + } + | Some (_, { item = Iv_string module_name; span }) -> ( + match (result, parser_expr) with + | `Custom _, Res_nullable { loc; inner = t } -> + Fr_named_field + { + name = key; + loc_key; + loc; + type_ = + Res_nullable + { + loc; + inner = + Res_custom_decoder + { + loc = config.map_loc span; + ident = module_name; + inner = t; + }; + }; + arguments; + } + | `CustomOpt _, Res_nullable { loc; inner = t } -> + Fr_named_field + { + name = key; + loc_key; + loc; + type_ = + Res_custom_decoder + { + loc = config.map_loc span; + ident = module_name; + inner = Res_nullable { loc; inner = t }; + }; + arguments; + } + | _, Res_array { loc; inner = t } -> + Fr_named_field + { + name = key; + loc_key; + loc; + type_ = + Res_array + { + loc; + inner = + Res_custom_decoder + { + loc = config.map_loc span; + ident = module_name; + inner = t; + }; + }; + arguments; + } + | _ -> + Fr_named_field + { + name = key; + loc_key; + loc; + type_ = + Res_custom_decoder + { + loc = config.map_loc span; + ident = module_name; + inner = parser_expr; + }; + arguments; + }) + | Some (_, { span; _ }) -> + Fr_named_field + { + name = key; + loc_key; + loc; + type_ = + make_error error_marker config.map_loc span + "The 'module' argument must be a string"; + arguments; + }) + +and unify_selection ~(base_type : string) error_marker config ty selection = + match selection with + | Field field_span -> unify_field error_marker config field_span ty + | FragmentSpread { item = { fs_directives; fs_name }; span } -> ( + let arguments = find_fragment_arguments fs_directives in + match find_directive ~prepend:true "Field" fs_directives with + | None -> + let key = + fs_name.item |> String.split_on_char '.' |> List.rev |> List.hd + |> String.uncapitalize_ascii + in + Fr_fragment_spread + { + key; + loc = config.map_loc span; + name = fs_name.item; + type_name = Some base_type; + arguments; + } + | Some { item = { d_arguments; _ }; span } -> ( + match find_argument "name" d_arguments with + | None -> + raise_error config.map_loc span "ppxField must be given 'name' argument" + | Some (_, { item = Iv_string key; span }) -> + Fr_fragment_spread + { + key; + loc = config.map_loc span; + name = fs_name.item; + type_name = Some base_type; + arguments; + } + | Some _ -> + raise_error config.map_loc span "The 'name' argument must be a string")) + | InlineFragment { span; _ } -> + raise_error config.map_loc span "Inline fragments are not yet supported" + +and unify_selection_set error_marker as_record existing_record config span ty + selection_set = + match selection_set with + | None -> + make_error error_marker config.map_loc span + "Must select subfields on objects" + | Some + { item = [ FragmentSpread { item = { fs_directives; fs_name }; _ } ]; _ } + -> + let arguments = find_fragment_arguments fs_directives in + if as_record then + make_error error_marker config.map_loc span + "@ppxRecord can not be used with fragment spreads, place @ppxRecord on \ + the fragment definition instead" + else + Res_solo_fragment_spread + { + type_name = type_name ty; + loc = config.map_loc span; + name = fs_name.item; + arguments; + } + | Some { item; _ } when as_record -> + Res_record + { + loc = config.map_loc span; + name = type_name ty; + fields = + List.map + (unify_selection ~base_type:(type_name ty) error_marker config ty) + item; + type_name = existing_record; + interface_fragments = None; + } + | Some { item; _ } -> + Res_object + { + loc = config.map_loc span; + name = type_name ty; + fields = + List.map + (unify_selection ~base_type:(type_name ty) error_marker config ty) + item; + type_name = existing_record; + interface_fragments = None; + } + +let unify_operation error_marker config = function + | { item = { o_type = Query; o_selection_set; _ }; span } -> + unify_selection_set error_marker false None config span + (query_type config.schema) (Some o_selection_set) + | { item = { o_type = Mutation; o_selection_set; _ }; span } -> ( + match mutation_type config.schema with + | Some mutation_type -> + unify_selection_set error_marker false None config span mutation_type + (Some o_selection_set) + | None -> + make_error error_marker config.map_loc span + "This schema does not contain any mutations") + | { item = { o_type = Subscription; o_selection_set; _ }; span } -> ( + match subscription_type config.schema with + | Some subscription_type -> + unify_selection_set error_marker false None config span subscription_type + (Some o_selection_set) + | None -> + make_error error_marker config.map_loc span + "This schema does not contain any subscriptions") + +type query_config = { + schema : string option; + records : bool option; + objects : bool option; + inline : bool option; + template_tag : string option; + template_tag_location : string option; + template_tag_import : string option; + template_tag_return_type : string option; + tagged_template : bool option; + template_tag_is_function : bool option; + future_added_value : bool option; + extend : string option; + fragment_in_query : Ppx_config.fragment_in_query option; + apollo_mode : bool option; +} + +let get_template_tag query_config = + match query_config.tagged_template with + | Some false -> (None, None, None) + | _ -> ( + match + ( get_with_default query_config.template_tag (Ppx_config.template_tag ()), + get_with_default query_config.template_tag_location + (Ppx_config.template_tag_location ()), + get_with_default query_config.template_tag_import + (Ppx_config.template_tag_import ()) ) + with + | Some tag, Some location, Some import -> + (Some tag, Some location, Some import) + | None, Some location, Some import -> + (Some import, Some location, Some import) + | Some tag, Some location, None -> (Some tag, Some location, Some "default") + | None, Some location, None -> (None, Some location, Some "default") + | Some tag, None, Some _ | Some tag, None, None -> (Some tag, None, None) + | None, _, _ -> (None, None, None)) + +let get_config_arguments directives = + let open Graphql_ast in + directives + |> filter_map (function + | { + item = + { + d_name = { item = "ppxConfig" }; + d_arguments = Some { item = arguments }; + }; + } -> + Some arguments + | _ -> None) + |> List.concat + +(** Allow configuration per definition using directives *) +let config_arguments_to_config existing_query_config directive_arguments : + query_config = + let open Graphql_ast in + directive_arguments + |> List.fold_left + (fun config -> function + | { item = "schema" }, { item = Iv_string value } -> + { config with schema = Some value } + | { item = "records" }, { item = Iv_boolean value } -> + { config with records = Some value } + | { item = "objects" }, { item = Iv_boolean value } -> + { config with objects = Some value } + | { item = "inline" }, { item = Iv_boolean value } -> + { config with inline = Some value } + | { item = "templateTag" }, { item = Iv_string value } -> + { config with template_tag = Some value } + | { item = "templateTagLocation" }, { item = Iv_string value } -> + { config with template_tag_location = Some value } + | { item = "templateTagImport" }, { item = Iv_string value } -> + { config with template_tag_import = Some value } + | { item = "templateTagReturnType" }, { item = Iv_string value } -> + { config with template_tag_return_type = Some value } + | { item = "taggedTemplate" }, { item = Iv_boolean value } -> + { config with tagged_template = Some value } + | { item = "templateTagIsFunction" }, { item = Iv_boolean value } -> + { config with template_tag_is_function = Some value } + | { item = "futureAddedValue" }, { item = Iv_boolean value } -> + { config with future_added_value = Some value } + | { item = "extend" }, { item = Iv_string value } -> + { config with extend = Some value } + | { item = "fragmentInQuery" }, { item = Iv_string "include" } -> + { config with fragment_in_query = Some Include } + | { item = "fragmentInQuery" }, { item = Iv_string "exclude" } -> + { config with fragment_in_query = Some Exclude } + | { item = "apollo_mode" }, { item = Iv_boolean value } -> + { config with apollo_mode = Some value } + | _ -> config) + existing_query_config + +let to_output_config ~json_read_fn ~map_loc ~delimiter ~document + (definition, query_config) = + let schema = + Lazy.force (Read_schema.get_schema ~json_read_fn query_config.schema) + in + (* let () = + Printf.eprintf "Apollo mode? query: %s %B" + (match query_config.apollo_mode with + | Some true -> "Some true" + | Some false -> "Some false" + | None -> "None") + (Ppx_config.apollo_mode ()) + in *) + let apollo_mode = + match query_config.apollo_mode with + | None -> Ppx_config.apollo_mode () + | Some apollo_mode -> apollo_mode + in + (* let () = Printf.eprintf "Really Apollo mode2? %B\n" apollo_mode in *) + let definitions = + if apollo_mode then + [ definition ] |> Ast_transforms.add_typename_to_selection_set schema + else [ definition ] + in + let definitions = + definitions |> Ast_transforms.remove_typename_from_union schema + in + let definition = + match definitions with [ definition ] -> definition | _ -> definition + in + let template_tag = get_template_tag query_config in + ( definition, + { + Generator_utils.map_loc; + delimiter; + full_document = document; + inline = + (match query_config.inline with Some value -> value | None -> false); + future_added_value = + (match query_config.future_added_value with + | Some value -> value + | None -> Ppx_config.future_added_value ()); + schema; + template_tag; + template_tag_return_type = + get_with_default query_config.template_tag_return_type + (Ppx_config.template_tag_return_type ()); + template_tag_is_function = + get_with_default query_config.template_tag_is_function + (Ppx_config.template_tag_is_function ()); + extend = query_config.extend; + fragment_in_query = + (match query_config.fragment_in_query with + | Some value -> value + | None -> Ppx_config.fragment_in_query ()); + native = Ppx_config.native (); + } ) + +let rec generate_config ~json_read_fn ~map_loc ~delimiter ~initial_query_config + document = + match document with + | (Operation { item = { o_directives = directives } } as definition) :: rest + | (Fragment { item = { fg_directives = directives } } as definition) :: rest + -> + let query_config = + directives |> get_config_arguments + |> config_arguments_to_config initial_query_config + in + to_output_config ~json_read_fn ~document ~map_loc ~delimiter + (definition, query_config) + :: generate_config ~json_read_fn ~map_loc ~delimiter ~initial_query_config + rest + | [] -> [] + +let rec unify_document_schema document = + let error_marker = { Generator_utils.has_error = false } in + match document with + | (Operation ({ item = { o_variable_definitions; _ }; _ } as op), config) + :: rest -> + let structure = unify_operation error_marker config op in + ( Def_operation + { + variable_definitions = o_variable_definitions; + has_error = error_marker.has_error; + operation = op; + inner = structure; + }, + config ) + :: unify_document_schema rest + | ( Fragment + ({ + item = + { fg_name; fg_selection_set; fg_type_condition; fg_directives }; + span; + } as fg), + config ) + :: rest -> + (let open Result in + let with_decoder = + match + match + ( fg_directives |> find_directive ~prepend:true "Decoder", + fg_directives |> find_directive ~prepend:true "Custom" ) + with + | Some decoder, _ | _, Some decoder -> Some decoder + | None, None -> None + with + | None -> Ok None + | Some { item = { d_arguments; _ }; span } as result -> ( + match (result, find_argument "module" d_arguments) with + | _, None -> + Error + (make_error error_marker config.map_loc span + "ppxDecoder must be given 'module' argument") + | _, Some (_, { item = Iv_string ident; span }) -> + Ok + (Some + (fun structure -> + Res_custom_decoder + { loc = config.map_loc span; ident; inner = structure })) + | _, Some (_, { span; _ }) -> + Error + (make_error error_marker config.map_loc span + "The 'module' argument must be a string")) + in + let is_record = has_directive ~prepend:true "Record" fg_directives in + let argumentDefinitions = fg.item.fg_variable_definitions in + ( (match Schema.lookup_type config.schema fg_type_condition.item with + | None -> + Def_fragment + { + name = fg_name.item; + variable_definitions = argumentDefinitions; + has_error = true; + fragment = fg; + type_name = None; + inner = + make_error error_marker config.map_loc fg_type_condition.span + (Printf.sprintf "Unknown type \"%s\"" fg_type_condition.item); + } + | Some ty -> ( + let existing_record = get_ppx_as fg_directives in + let structure = + unify_selection_set error_marker is_record existing_record config span + ty (Some fg_selection_set) + in + let argumentDefinitions = fg.item.fg_variable_definitions in + match with_decoder with + | Error err -> + Def_fragment + { + name = fg_name.item; + variable_definitions = argumentDefinitions; + has_error = true; + fragment = fg; + type_name = existing_record; + inner = err; + } + | Ok decoder -> + Def_fragment + { + name = fg_name.item; + variable_definitions = argumentDefinitions; + has_error = error_marker.has_error; + fragment = fg; + type_name = existing_record; + inner = + (match decoder with + | Some decoder -> decoder structure + | None -> structure); + })), + config )) + :: unify_document_schema rest + | [] -> [] diff --git a/src/graphql_compiler/result_decoder.mli b/src/graphql_compiler/result_decoder.mli new file mode 100644 index 00000000..f3dc7f75 --- /dev/null +++ b/src/graphql_compiler/result_decoder.mli @@ -0,0 +1,40 @@ +type query_config = { + schema : string option; + records : bool option; + objects : bool option; + inline : bool option; + template_tag : string option; + template_tag_location : string option; + template_tag_import : string option; + template_tag_return_type : string option; + tagged_template : bool option; + template_tag_is_function : bool option; + future_added_value : bool option; + extend : string option; + fragment_in_query : Ppx_config.fragment_in_query option; + apollo_mode : bool option; +} + +val generate_config : + json_read_fn:(string -> Read_schema.Json.t) -> + map_loc: + (Source_pos.source_position * Source_pos.source_position -> + Source_pos.ast_location) -> + delimiter:string option -> + initial_query_config:query_config -> + Graphql_ast.definition list -> + (Graphql_ast.definition * Generator_utils.output_config) list + +val unify_document_schema : + (Graphql_ast.definition * Generator_utils.output_config) list -> + (Result_structure.definition * Generator_utils.output_config) list +(** + Takes a list of the AST of the GraphQL definitions (operations or \ + fragments) and transforms that into a list of result structures. These result \ + structures form the basis to generate the reason code for: + + - `query` variable + - `parse` function + - `serialize` function + - `makeVariables` function +*) diff --git a/src/graphql_compiler/result_ext.ml b/src/graphql_compiler/result_ext.ml new file mode 100644 index 00000000..f65be7f1 --- /dev/null +++ b/src/graphql_compiler/result_ext.ml @@ -0,0 +1,9 @@ +open Result + +let flat_map f = function Error e -> Error e | Ok v -> f v +let map f = function Error e -> Error e | Ok v -> Ok (f v) +let replace v = function Error e -> Error e | Ok _ -> Ok v +let make_t2 a b = (a, b) +let make_t3 a b c = (a, b, c) +let make_t4 a b c d = (a, b, c, d) +let make_t5 a b c d e = (a, b, c, d, e) diff --git a/src/graphql_compiler/result_structure.ml b/src/graphql_compiler/result_structure.ml new file mode 100644 index 00000000..8d3f01f5 --- /dev/null +++ b/src/graphql_compiler/result_structure.ml @@ -0,0 +1,113 @@ +type exhaustive_flag = Exhaustive | Nonexhaustive +type loc = Source_pos.ast_location +type name = string Source_pos.spanning + +type field_result = + | Fr_named_field of { + name : string; + loc_key : loc; + loc : loc; + type_ : t; + arguments : Graphql_ast.arguments; + } + | Fr_fragment_spread of { + key : string; + loc : loc; + name : string; + type_name : string option; + arguments : string list; + } + +and t = + | Res_nullable of { loc : loc; inner : t } + | Res_array of { loc : loc; inner : t } + | Res_id of { loc : loc } + | Res_string of { loc : loc } + | Res_int of { loc : loc } + | Res_float of { loc : loc } + | Res_boolean of { loc : loc } + | Res_raw_scalar of { loc : loc } + | Res_poly_enum of { + loc : loc; + enum_meta : Schema.enum_meta; + omit_future_value : bool; + } + | Res_custom_decoder of { loc : loc; ident : string; inner : t } + | Res_record of { + loc : loc; + name : string; + fields : field_result list; + type_name : string option; + interface_fragments : (string * (string * t) list) option; + } + | Res_object of { + loc : loc; + name : string; + fields : field_result list; + type_name : string option; + interface_fragments : (string * (string * t) list) option; + } + | Res_poly_variant_selection_set of { + loc : loc; + name : string; + fragments : (name * t) list; + } + | Res_poly_variant_union of { + loc : loc; + name : string; + fragments : (name * t) list; + exhaustive : exhaustive_flag; + omit_future_value : bool; + } + | Res_poly_variant_interface of { + loc : loc; + name : string; + fragments : (string * t) list; + } + | Res_solo_fragment_spread of { + loc : loc; + name : string; + type_name : string; + arguments : string list; + } + | Res_error of { loc : loc; message : string } + +type definition = + | Def_fragment of { + name : string; + variable_definitions : + Graphql_ast.variable_definitions Source_pos.spanning option; + has_error : bool; + fragment : Graphql_ast.fragment Source_pos.spanning; + type_name : string option; + inner : t; + } + | Def_operation of { + variable_definitions : + Graphql_ast.variable_definitions Source_pos.spanning option; + has_error : bool; + operation : Graphql_ast.operation Source_pos.spanning; + inner : t; + } + +let res_loc = function + | Res_nullable { loc } + | Res_array { loc } + | Res_id { loc } + | Res_string { loc } + | Res_int { loc } + | Res_float { loc } + | Res_boolean { loc } + | Res_raw_scalar { loc } + | Res_poly_enum { loc } + | Res_custom_decoder { loc } + | Res_record { loc } + | Res_object { loc } + | Res_poly_variant_selection_set { loc } + | Res_poly_variant_union { loc } + | Res_poly_variant_interface { loc } + | Res_solo_fragment_spread { loc } + | Res_error { loc } -> + loc + +let can_be_absent_as_field = function Res_nullable _ -> true | _ -> false diff --git a/src/graphql_compiler/result_structure.mli b/src/graphql_compiler/result_structure.mli new file mode 100644 index 00000000..0f633353 --- /dev/null +++ b/src/graphql_compiler/result_structure.mli @@ -0,0 +1,94 @@ +type exhaustive_flag = Exhaustive | Nonexhaustive +type loc = Source_pos.ast_location +type name = string Source_pos.spanning + +type field_result = + | Fr_named_field of { + name : string; + loc_key : loc; + loc : loc; + type_ : t; + arguments : Graphql_ast.arguments; + } + | Fr_fragment_spread of { + key : string; + loc : loc; + name : string; + type_name : string option; + arguments : string list; + } + +and t = + | Res_nullable of { loc : loc; inner : t } + | Res_array of { loc : loc; inner : t } + | Res_id of { loc : loc } + | Res_string of { loc : loc } + | Res_int of { loc : loc } + | Res_float of { loc : loc } + | Res_boolean of { loc : loc } + | Res_raw_scalar of { loc : loc } + | Res_poly_enum of { + loc : loc; + enum_meta : Schema.enum_meta; + omit_future_value : bool; + } + | Res_custom_decoder of { loc : loc; ident : string; inner : t } + | Res_record of { + loc : loc; + name : string; + fields : field_result list; + type_name : string option; + interface_fragments : (string * (string * t) list) option; + } + | Res_object of { + loc : loc; + name : string; + fields : field_result list; + type_name : string option; + interface_fragments : (string * (string * t) list) option; + } + | Res_poly_variant_selection_set of { + loc : loc; + name : string; + fragments : (name * t) list; + } + | Res_poly_variant_union of { + loc : loc; + name : string; + fragments : (name * t) list; + exhaustive : exhaustive_flag; + omit_future_value : bool; + } + | Res_poly_variant_interface of { + loc : loc; + name : string; + fragments : (string * t) list; + } + | Res_solo_fragment_spread of { + loc : loc; + name : string; + type_name : string; + arguments : string list; + } + | Res_error of { loc : loc; message : string } + +type definition = + | Def_fragment of { + name : string; + variable_definitions : + Graphql_ast.variable_definitions Source_pos.spanning option; + has_error : bool; + fragment : Graphql_ast.fragment Source_pos.spanning; + type_name : string option; + inner : t; + } + | Def_operation of { + variable_definitions : + Graphql_ast.variable_definitions Source_pos.spanning option; + has_error : bool; + operation : Graphql_ast.operation Source_pos.spanning; + inner : t; + } + +val res_loc : t -> loc +val can_be_absent_as_field : t -> bool diff --git a/src/graphql_compiler/rule_all_required_arguments.ml b/src/graphql_compiler/rule_all_required_arguments.ml new file mode 100644 index 00000000..66692670 --- /dev/null +++ b/src/graphql_compiler/rule_all_required_arguments.ml @@ -0,0 +1,43 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Source_pos + open Graphql_ast + open Schema + include AbstractVisitor + + let enter_field _self ctx def = + let field_meta = + Context.parent_type ctx + |> Option.flat_map (fun t -> Schema.lookup_field t def.item.fd_name.item) + in + let provided_args = + def.item.fd_arguments + |> Option.map (fun span -> span.item) + |> Option.get_or_else [] + |> List.map (fun arg -> (arg |> fst).item) + in + let expected_args = + field_meta + |> Option.map (fun fm -> fm.fm_arguments) + |> Option.get_or_else [] + |> List.filter (fun arg -> + match (arg.am_arg_type, arg.am_default_value) with + | NonNull _, None -> true + | NonNull _, Some _ | _ -> false) + in + expected_args + |> List.iter (fun arg -> + let provided = + provided_args |> List.exists (fun arg_name -> arg_name = arg.am_name) + in + if not provided then + let message = + Printf.sprintf "Argument \"%s\" on field \"%s\" not provided" + arg.am_name def.item.fd_name.item + in + Context.push_error ctx def.item.fd_name.span message) + + type t = unit + + let make_self () = () +end diff --git a/src/graphql_compiler/rule_deprecated_fields.ml b/src/graphql_compiler/rule_deprecated_fields.ml new file mode 100644 index 00000000..1fa28df5 --- /dev/null +++ b/src/graphql_compiler/rule_deprecated_fields.ml @@ -0,0 +1,27 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Source_pos + open Graphql_ast + include AbstractVisitor + + type t = unit + + let make_self () = () + + let enter_field _ ctx def = + let field_meta = + Context.parent_type ctx + |> Option.flat_map (fun t -> Schema.lookup_field t def.item.fd_name.item) + in + field_meta + |> Option.map (fun (field : Schema.field_meta) -> + match field.fm_deprecation_reason with + | None -> () + | Some reason -> + let message = + Printf.sprintf "Field \"%s\" has been deprecated. Reason: %s" + field.fm_name reason + in + Context.push_warning ctx def.span message) + |> ignore +end diff --git a/src/graphql_compiler/rule_known_argument_names.ml b/src/graphql_compiler/rule_known_argument_names.ml new file mode 100644 index 00000000..8bcdbdea --- /dev/null +++ b/src/graphql_compiler/rule_known_argument_names.ml @@ -0,0 +1,52 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Source_pos + open Graphql_ast + open Schema + + type arg_pos = Directive of string | Field of string * string + type known_args = (arg_pos * argument_meta list) option + type t = known_args ref + + include Traversal_utils.AbstractVisitor + + let make_self () = ref None + + let report_error ctx span pos arg_name = + let msg = + match pos with + | Directive dir_name -> + Printf.sprintf "Unknown argument \"%s\" on directive \"%s\"" arg_name + dir_name + | Field (field_name, type_name) -> + Printf.sprintf "Unknown argument \"%s\" on field \"%s\" of type \"%s\"" + arg_name field_name type_name + in + Context.push_error ctx span msg + + let enter_argument known_args ctx (name, _, _) = + match !known_args with + | None -> () + | Some (pos, known_args) -> + if not @@ List.exists (fun am -> am.am_name = name.item) known_args then + report_error ctx name.span pos name.item + + let enter_directive known_args ctx directive = + known_args := + Schema.lookup_directive ctx.schema directive.item.d_name.item + |> Option.map (fun dm -> (Directive dm.dm_name, dm.dm_arguments)) + + let exit_directive known_args _ _ = known_args := None + + let enter_field known_args ctx field = + let field_name = field.item.fd_name.item in + known_args := + match Context.parent_type ctx with + | Some parent_type -> + Schema.lookup_field parent_type field_name + |> Option.map (fun f -> + (Field (field_name, Schema.type_name parent_type), f.fm_arguments)) + | None -> None + + let exit_field known_args _ _ = known_args := None +end diff --git a/src/graphql_compiler/rule_no_invalid_default_values.ml b/src/graphql_compiler/rule_no_invalid_default_values.ml new file mode 100644 index 00000000..0982d904 --- /dev/null +++ b/src/graphql_compiler/rule_no_invalid_default_values.ml @@ -0,0 +1,99 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Graphql_ast + open Source_pos + open Type_utils.Generic + include AbstractVisitor + + type t = { + variable_types : (string, tree) Hashtbl.t; + mutable arg_type : (string spanning * tree) option; + } + + let make_self () = { variable_types = Hashtbl.create 0; arg_type = None } + + let enter_operation_definition self ctx def = + let () = Hashtbl.clear self.variable_types in + match def.item.o_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, { vd_type = { item = type_ } }) -> + Hashtbl.add self.variable_types name.item + (type_ |> from_graphql_ast_tr ~schema:ctx.schema)) + item + + let enter_fragment_definition self ctx def = + let () = Hashtbl.clear self.variable_types in + match def.item.fg_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, { vd_type = { item = type_ } }) -> + Hashtbl.add self.variable_types name.item + (type_ |> from_graphql_ast_tr ~schema:ctx.schema)) + item + + let enter_argument self ctx + ((name : string spanning), (arg_type : Schema.type_ref option), _value) = + self.arg_type <- + arg_type + |> Option.map (from_schema_tr ~schema:ctx.schema) + |> Option.map (fun tr -> (name, tr)) + + let check_apply ctx (tr1 : tree) (tr2 : tree) (arg_name : string spanning) + (name : string spanning) = + match can_apply tr1 tr2 with + | Ok -> () + | Unequal -> + Traversal_utils.Context.push_error ctx name.span + (generate_error + (MismatchedTypes (tr1 |> string_of_tree, tr2 |> string_of_tree))) + | RequiredMismatch -> + Traversal_utils.Context.push_error ctx name.span + (generate_error (MismatchedRequiredVar (arg_name.item, name.item))) + + let enter_variable_value self ctx name = + match + ( self.arg_type, + try Some (name, Hashtbl.find self.variable_types name.item) + with Not_found -> None ) + with + | None, _ -> () + | Some (arg_name, NonNull _), None -> + Traversal_utils.Context.push_error ctx name.span + (generate_error (RequiredVariableMissing (arg_name.item, name.item))) + | Some (_, T _), None | Some (_, List _), None -> () + | Some (arg_name, arg_type), Some (_v_name, value_type) -> + check_apply ctx arg_type value_type arg_name name + + let check_pre_value ?(reset = false) generic self ctx value = + (match self.arg_type with + | Some (arg_name, arg_type) -> + check_apply ctx arg_type (NonNull (T generic)) arg_name + (Source_pos.replace value "") + | None -> ()); + if reset then self.arg_type <- None + + let enter_int_value = check_pre_value Int + let enter_float_value = check_pre_value Float + let enter_string_value = check_pre_value String + let enter_bool_value = check_pre_value Boolean + let enter_object_value = check_pre_value ~reset:true InputObject + let enter_enum_value = check_pre_value ~reset:true Enum + + let enter_list_value self ctx value = + (match self.arg_type with + | Some (_, NonNull (List _)) + | Some (_, List _) + | Some (_, NonNull (T EmptyList)) + | Some (_, T EmptyList) + | None -> + () + | Some (_name, arg_type) -> + Traversal_utils.Context.push_error ctx value.span + (generate_error (MismatchedTypes (arg_type |> string_of_tree, "List")))); + self.arg_type <- None + + let exit_argument self _ _ = self.arg_type <- None +end diff --git a/src/graphql_compiler/rule_no_invalid_input_object_values.ml b/src/graphql_compiler/rule_no_invalid_input_object_values.ml new file mode 100644 index 00000000..e498eaf4 --- /dev/null +++ b/src/graphql_compiler/rule_no_invalid_input_object_values.ml @@ -0,0 +1,96 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Graphql_ast + open Source_pos + open Type_utils.Generic + include AbstractVisitor + + type t = { variable_types : (string, tree) Hashtbl.t } + + let make_self () = { variable_types = Hashtbl.create 0 } + + let enter_operation_definition self ctx def = + let () = Hashtbl.clear self.variable_types in + match def.item.o_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, { vd_type = { item = type_ } }) -> + Hashtbl.add self.variable_types name.item + (type_ |> from_graphql_ast_tr ~schema:ctx.schema)) + item + + let enter_fragment_definition self ctx (def : fragment spanning) = + let () = Hashtbl.clear self.variable_types in + match def.item.fg_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, { vd_type = { item = type_ } }) -> + Hashtbl.add self.variable_types name.item + (type_ |> from_graphql_ast_tr ~schema:ctx.schema)) + item + + let rec parse_input_object self ctx (top_pos : string spanning) + (type_ : Schema.type_ref) (value : input_value spanning) = + match + ( type_ |> Schema.innermost_name |> Schema.lookup_type ctx.schema, + value.item ) + with + | Some (InputObject obj_meta), Iv_list ({ item = Iv_object value; _ } :: _) + | Some (InputObject obj_meta), Iv_object value -> + obj_meta.iom_input_fields + |> List.iter (fun { Schema.am_arg_type; am_name } -> + let value_field = + value |> List.find_opt (fun (name, _value) -> name.item = am_name) + in + (match value_field with + | Some value_field -> + parse_input_object self ctx (fst value_field) am_arg_type + (snd value_field) + | None -> ()); + match + ( am_arg_type |> from_schema_tr ~schema:ctx.schema, + value_field + |> Option.map (fun (name, value) -> + ( (match value.item with + | Iv_variable val_name -> Source_pos.replace name val_name + | _ -> name), + Source_pos.replace value + (value.item + |> from_graphql_ast_iv ~arguments:self.variable_types + ~schema:ctx.schema) )) ) + with + | NonNull _, None -> + Traversal_utils.Context.push_error ctx top_pos.span + (generate_error (RequiredFieldMissing (top_pos.item, am_name))) + | T _, None | List _, None -> () + | key_type, Some (name, value) -> ( + match can_apply key_type value.item with + | Ok -> () + | Unequal -> + Traversal_utils.Context.push_error ctx value.span + (generate_error + (MismatchedTypes + (key_type |> string_of_tree, value.item |> string_of_tree))) + | RequiredMismatch -> + Traversal_utils.Context.push_error ctx name.span + (generate_error (MismatchedRequiredVar (am_name, name.item))))) + | _ -> () + + let enter_argument self ctx + ( (name : string spanning), + (arg_type : Schema.type_ref option), + (value : input_value spanning) ) = + match arg_type |> Option.map (from_schema_tr ~schema:ctx.schema) with + | Some (T InputObject) + | Some (NonNull (T InputObject)) + | Some (List (T InputObject)) + | Some (NonNull (List (T InputObject))) -> + parse_input_object self ctx name + (arg_type + |> Option.unsafe_unwrap + ~reason:("Can't fidn argument name: " ^ name.item)) + value + | _ -> () +end diff --git a/src/graphql_compiler/rule_no_undefined_variables.ml b/src/graphql_compiler/rule_no_undefined_variables.ml new file mode 100644 index 00000000..e6ee55a8 --- /dev/null +++ b/src/graphql_compiler/rule_no_undefined_variables.ml @@ -0,0 +1,40 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Source_pos + open Graphql_ast + include AbstractVisitor + + type opts = { mutable active : bool } + type t = opts * (string, span) Hashtbl.t + + let make_self () = ({ active = false }, Hashtbl.create 0) + + let enter_operation_definition (opts, self) _ def = + opts.active <- true; + let () = Hashtbl.clear self in + match def.item.o_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter (fun (name, _) -> Hashtbl.add self name.item name.span) item + + let exit_operation_definition (opts, _) _ _ = opts.active <- false + + let enter_fragment_definition (opts, self) _ def = + opts.active <- true; + let () = Hashtbl.clear self in + match def.item.fg_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter (fun (name, _) -> Hashtbl.add self name.item name.span) item + + let exit_fragment_definition (opts, _) _ _ = opts.active <- false + + let enter_variable_value (opts, self) ctx def = + if opts.active && not (Hashtbl.mem self def.item) then + let message = + Printf.sprintf + "Variable \"%s\" not found in operation. Make sure it's defined!" + def.item + in + Context.push_error ctx def.span message +end diff --git a/src/graphql_compiler/rule_no_unused_variables.ml b/src/graphql_compiler/rule_no_unused_variables.ml new file mode 100644 index 00000000..15a6885a --- /dev/null +++ b/src/graphql_compiler/rule_no_unused_variables.ml @@ -0,0 +1,50 @@ +module Visitor : Traversal_utils.VisitorSig = struct + open Traversal_utils + open Source_pos + open Graphql_ast + include AbstractVisitor + + type t = (string, span) Hashtbl.t + + let make_self () = Hashtbl.create 0 + + let enter_fragment_definition self _ def = + let () = Hashtbl.clear self in + match def.item.fg_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter (fun (name, _) -> Hashtbl.add self name.item name.span) item + + let exit_fragment_definition self ctx def = + Hashtbl.iter + (fun v span -> + let message = + Printf.sprintf "Variable \"$%s\" is never used in fragment \"%s\"" v + def.item.fg_name.item + in + Context.push_error ctx span message) + self + + let enter_operation_definition self _ def = + let () = Hashtbl.clear self in + match def.item.o_variable_definitions with + | None -> () + | Some { item; _ } -> + List.iter (fun (name, _) -> Hashtbl.add self name.item name.span) item + + let exit_operation_definition self ctx def = + Hashtbl.iter + (fun v span -> + if v.[0] <> '_' then + let message = + match def.item.o_name with + | None -> Printf.sprintf "Variable \"$%s\" is never used." v + | Some name -> + Printf.sprintf + "Variable \"$%s\" is never used in operation \"%s\"" v name.item + in + Context.push_error ctx span message) + self + + let enter_variable_value self _ name = Hashtbl.remove self name.item +end diff --git a/src/graphql_compiler/schema.ml b/src/graphql_compiler/schema.ml new file mode 100644 index 00000000..8dca288a --- /dev/null +++ b/src/graphql_compiler/schema.ml @@ -0,0 +1,198 @@ +type type_ref = Named of string | NonNull of type_ref | List of type_ref + +type argument_meta = { + am_name : string; + am_description : string option; + am_arg_type : type_ref; + am_default_value : string option; +} + +type field_meta = { + fm_name : string; + fm_description : string option; + fm_arguments : argument_meta list; + fm_field_type : type_ref; + fm_deprecation_reason : string option; +} + +type scalar_meta = { sm_name : string; sm_description : string option } + +type object_meta = { + om_name : string; + om_description : string option; + om_fields : field_meta list; + om_interfaces : string list; +} + +type enum_value_meta = { + evm_name : string; + evm_description : string option; + evm_deprecation_reason : string option; +} + +type enum_meta = { + em_name : string; + em_description : string option; + em_values : enum_value_meta list; +} + +type interface_meta = { + im_name : string; + im_description : string option; + im_fields : field_meta list; +} + +type union_meta = { + um_name : string; + um_description : string option; + um_of_types : string list; +} + +type input_object_meta = { + iom_name : string; + iom_description : string option; + iom_input_fields : argument_meta list; +} + +type type_meta = + | Scalar of scalar_meta + | Object of object_meta + | Enum of enum_meta + | Interface of interface_meta + | Union of union_meta + | InputObject of input_object_meta + +type schema_meta = { + sm_query_type : string; + sm_mutation_type : string option; + sm_subscription_type : string option; +} + +type directive_location = + | Dl_query + | Dl_mutation + | Dl_subscription + | Dl_field + | Dl_fragment_definition + | Dl_fragment_spread + | Dl_inline_fragment + | Dl_unknown + +type directive_meta = { + dm_name : string; + dm_locations : directive_location list; + dm_arguments : argument_meta list; +} + +type t = { + meta : schema_meta; + type_map : (string, type_meta) Hashtbl.t; + directive_map : (string, directive_meta) Hashtbl.t; +} + +let query_type s = Hashtbl.find s.type_map s.meta.sm_query_type + +let mutation_type s = + match s.meta.sm_mutation_type with + | Some n -> Some (Hashtbl.find s.type_map n) + | None -> None + +let subscription_type s = + match s.meta.sm_subscription_type with + | Some n -> Some (Hashtbl.find s.type_map n) + | None -> None + +exception Invalid_type of string +exception Inconsistent_schema of string + +let lookup_implementations schema im = + let all_objects_implementing_interface _ value acc = + match value with + | Object { om_interfaces; _ } as o + when List.exists (fun n -> n = im.im_name) om_interfaces -> + o :: acc + | _ -> acc + in + Hashtbl.fold all_objects_implementing_interface schema.type_map [] + +let lookup_field ty name = + let find_field fs = + match List.find_all (fun f -> f.fm_name = name) fs with + | [] -> None + | [ x ] -> Some x + | _ -> raise @@ Inconsistent_schema ("Multiple fields named " ^ name) + in + match ty with + | Object { om_fields; _ } -> find_field om_fields + | Interface { im_fields; _ } -> find_field im_fields + | Scalar { sm_name; _ } -> + raise @@ Invalid_type ("Type " ^ sm_name ^ " doesn't have any fields") + | Enum { em_name; _ } -> + raise @@ Invalid_type ("Type " ^ em_name ^ " doesn't have any fields") + | Union { um_name; _ } -> + raise @@ Invalid_type ("Type " ^ um_name ^ " doesn't have any fields") + | InputObject { iom_name; _ } -> + raise @@ Invalid_type ("Type " ^ iom_name ^ " doesn't have any fields") + +let lookup_input_field ty name = + let find_field fs = + match List.find_all (fun am -> am.am_name = name) fs with + | [] -> None + | [ x ] -> Some x + | _ -> raise @@ Inconsistent_schema ("Multiple input fields named " ^ name) + in + match ty with + | Object { om_name = name; _ } + | Interface { im_name = name; _ } + | Scalar { sm_name = name; _ } + | Enum { em_name = name; _ } + | Union { um_name = name; _ } -> + raise @@ Invalid_type ("Type " ^ name ^ " doesn't have any input fields") + | InputObject { iom_input_fields; _ } -> find_field iom_input_fields + +let type_name ty = + match ty with + | Scalar { sm_name; _ } -> sm_name + | Object { om_name; _ } -> om_name + | Enum { em_name; _ } -> em_name + | Interface { im_name; _ } -> im_name + | Union { um_name; _ } -> um_name + | InputObject { iom_name; _ } -> iom_name + +let is_type_default ty = + match ty |> type_name with + | "ID" | "String" | "Int" | "Float" | "Boolean" -> true + | _ -> false + +let lookup_type schema name = + match Hashtbl.find_all schema.type_map name with + | [] -> None + | [ x ] -> Some x + | _ -> raise @@ Inconsistent_schema ("Multiple types named " ^ name) + +let lookup_directive schema name = + match Hashtbl.find_all schema.directive_map name with + | [] -> None + | [ x ] -> Some x + | _ -> raise @@ Inconsistent_schema ("Multiple directives named " ^ name) + +let all_enums schema = + Hashtbl.fold + (fun _ v acc -> match v with Enum e -> e :: acc | _ -> acc) + schema.type_map [] + +let extract_name_from_type_meta = function + | Scalar { sm_name = x; _ } + | Object { om_name = x; _ } + | Enum { em_name = x; _ } + | Interface { im_name = x; _ } + | Union { um_name = x; _ } + | InputObject { iom_name = x; _ } -> + x + +let compare_type_meta x y = + String.compare (extract_name_from_type_meta x) (extract_name_from_type_meta y) + +let rec innermost_name = function + | Named name -> name + | NonNull inner | List inner -> innermost_name inner diff --git a/src/graphql_compiler/schema_printer.ml b/src/graphql_compiler/schema_printer.ml new file mode 100644 index 00000000..4cd50029 --- /dev/null +++ b/src/graphql_compiler/schema_printer.ml @@ -0,0 +1,61 @@ +open Schema + +let rec print_type_ref (type_ref : type_ref) = + match type_ref with + | Schema.Named n -> n + | List t -> "[" ^ print_type_ref t ^ "]" + | NonNull t -> print_type_ref t ^ "!" + +let print_field ({ fm_name; fm_field_type } : field_meta) = + fm_name ^ ": " ^ (fm_field_type |> print_type_ref) + +let print_input_field ({ am_name; am_arg_type } : argument_meta) = + am_name ^ ": " ^ (am_arg_type |> print_type_ref) + +let print_object ({ om_fields; om_name } : object_meta) = + (om_fields + |> List.fold_left + (fun p ({ fm_name } as field : Schema.field_meta) -> + match fm_name <> "__typename" with + | true -> p ^ "\n " ^ print_field field + | false -> p) + (om_name ^ " {")) + ^ "\n}" + +let print_input_object ({ iom_input_fields; iom_name } : input_object_meta) = + (iom_input_fields + |> List.fold_left + (fun p (input_field : Schema.argument_meta) -> + p ^ "\n " ^ print_input_field input_field) + (iom_name ^ " {")) + ^ "\n}" + +let print_enum ({ em_name; em_values } : enum_meta) = + em_name ^ " {\n" + ^ (em_values + |> List.fold_left + (fun p { evm_name; evm_deprecation_reason } -> + p ^ " " ^ evm_name + ^ (match evm_deprecation_reason with + | None -> "" + | Some _ -> " (DEPRECATED)") + ^ "\n") + "") + ^ "}" + +let print_scalar ({ sm_name } : scalar_meta) = sm_name + +let print_type (name : string) (schema : t) = + Schema.lookup_type schema name + |> Option.flat_map (function + | Object obj_meta -> Some (print_object obj_meta) + | Scalar scalar_meta -> Some (print_scalar scalar_meta) + | InputObject input_obj_meta -> Some (print_input_object input_obj_meta) + | Enum enum_meta -> Some (print_enum enum_meta) + | Interface _ | Union _ -> None) + +let rec print_type_from_ref (type_ref : type_ref) (schema : t) = + match type_ref with + | Schema.Named n -> print_type n schema |> Option.get_or_else "N/A" + | List t -> "[" ^ print_type_from_ref t schema ^ "]" + | NonNull t -> print_type_from_ref t schema ^ "!" diff --git a/src/graphql_compiler/source_pos.ml b/src/graphql_compiler/source_pos.ml new file mode 100644 index 00000000..0316f77e --- /dev/null +++ b/src/graphql_compiler/source_pos.ml @@ -0,0 +1,34 @@ +type source_position = { index : int; line : int; col : int } +type span = source_position * source_position +type 'a spanning = { item : 'a; span : span } + +let origin = { index = 0; line = 0; col = 0 } +let nopos = { index = -1; line = -1; col = -1 } +let nospan = (nopos, nopos) + +let advance_line { index; line; col = _ } = + { index = index + 1; line = line + 1; col = 0 } + +let advance_col { index; line; col } = + { index = index + 1; line; col = col + 1 } + +let zero_width pos item = { span = (pos, pos); item } +let single_width pos item = { span = (pos, advance_col pos); item } +let start_end startPos endPos item = { span = (startPos, endPos); item } +let replace span item = { span = span.span; item } +let map f span = { span = span.span; item = f span.item } +let start_pos span = fst span.span +let end_pos span = snd span.span + +type ast_position = { + pos_fname : string; + pos_lnum : int; + pos_bol : int; + pos_cnum : int; +} + +type ast_location = { + loc_start : ast_position; + loc_end : ast_position; + loc_ghost : bool; +} diff --git a/src/graphql_compiler/traversal_utils.ml b/src/graphql_compiler/traversal_utils.ml new file mode 100644 index 00000000..820e3c5f --- /dev/null +++ b/src/graphql_compiler/traversal_utils.ml @@ -0,0 +1,427 @@ +open Graphql_ast +open Source_pos + +type ctx = { + map_loc : source_position * source_position -> Result_structure.loc; + fragments : (string, Graphql_ast.fragment) Hashtbl.t; + schema : Schema.t; + errors : (Result_structure.loc * string) list ref; + warnings : (Result_structure.loc * string) list ref; + type_stack : Schema.type_meta option list; + type_literal_stack : Schema.type_ref option list; + input_type_stack : Schema.type_meta option list; + input_type_literal_stack : Schema.type_ref option list; + parent_type_stack : Schema.type_meta option list; +} + +module type VisitorSig = sig + type t + + val make_self : unit -> t + val enter_document : t -> ctx -> document -> unit + val exit_document : t -> ctx -> document -> unit + val enter_operation_definition : t -> ctx -> operation spanning -> unit + val exit_operation_definition : t -> ctx -> operation spanning -> unit + val enter_fragment_definition : t -> ctx -> fragment spanning -> unit + val exit_fragment_definition : t -> ctx -> fragment spanning -> unit + + val enter_variable_definition : + t -> ctx -> string spanning * variable_definition -> unit + + val exit_variable_definition : + t -> ctx -> string spanning * variable_definition -> unit + + val enter_directive : t -> ctx -> directive spanning -> unit + val exit_directive : t -> ctx -> directive spanning -> unit + + val enter_argument : + t -> + ctx -> + string spanning * Schema.type_ref option * input_value spanning -> + unit + + val exit_argument : t -> ctx -> string spanning * input_value spanning -> unit + val enter_selection_set : t -> ctx -> selection list spanning -> unit + val exit_selection_set : t -> ctx -> selection list spanning -> unit + val enter_field : t -> ctx -> field spanning -> unit + val exit_field : t -> ctx -> field spanning -> unit + val enter_fragment_spread : t -> ctx -> fragment_spread spanning -> unit + val exit_fragment_spread : t -> ctx -> fragment_spread spanning -> unit + val enter_inline_fragment : t -> ctx -> inline_fragment spanning -> unit + val exit_inline_fragment : t -> ctx -> inline_fragment spanning -> unit + val enter_null_value : t -> ctx -> unit spanning -> unit + val exit_null_value : t -> ctx -> unit spanning -> unit + val enter_int_value : t -> ctx -> int spanning -> unit + val exit_int_value : t -> ctx -> int spanning -> unit + val enter_float_value : t -> ctx -> float spanning -> unit + val exit_float_value : t -> ctx -> float spanning -> unit + val enter_string_value : t -> ctx -> string spanning -> unit + val exit_string_value : t -> ctx -> string spanning -> unit + val enter_bool_value : t -> ctx -> bool spanning -> unit + val exit_bool_value : t -> ctx -> bool spanning -> unit + val enter_enum_value : t -> ctx -> string spanning -> unit + val exit_enum_value : t -> ctx -> string spanning -> unit + val enter_variable_value : t -> ctx -> string spanning -> unit + val exit_variable_value : t -> ctx -> string spanning -> unit + val enter_list_value : t -> ctx -> input_value spanning list spanning -> unit + val exit_list_value : t -> ctx -> input_value spanning list spanning -> unit + + val enter_object_value : + t -> ctx -> (string spanning * input_value spanning) list spanning -> unit + + val exit_object_value : + t -> ctx -> (string spanning * input_value spanning) list spanning -> unit + + val enter_object_field : + t -> ctx -> string spanning * input_value spanning -> unit + + val exit_object_field : + t -> ctx -> string spanning * input_value spanning -> unit +end + +module AbstractVisitor = struct + let enter_document _self _ctx _ = () + let exit_document _self _ctx _ = () + let enter_operation_definition _self _ctx _ = () + let exit_operation_definition _self _ctx _ = () + let enter_fragment_definition _self _ctx _ = () + let exit_fragment_definition _self _ctx _ = () + let enter_variable_definition _self _ctx _ = () + let exit_variable_definition _self _ctx _ = () + let enter_directive _self _ctx _ = () + let exit_directive _self _ctx _ = () + let enter_argument _self _ctx _ = () + let exit_argument _self _ctx _ = () + let enter_selection_set _self _ctx _ = () + let exit_selection_set _self _ctx _ = () + let enter_field _self _ctx _ = () + let exit_field _self _ctx _ = () + let enter_fragment_spread _self _ctx _ = () + let exit_fragment_spread _self _ctx _ = () + let enter_inline_fragment _self _ctx _ = () + let exit_inline_fragment _self _ctx _ = () + let enter_null_value _self _ctx _ = () + let exit_null_value _self _ctx _ = () + let enter_int_value _self _ctx _ = () + let exit_int_value _self _ctx _ = () + let enter_float_value _self _ctx _ = () + let exit_float_value _self _ctx _ = () + let enter_string_value _self _ctx _ = () + let exit_string_value _self _ctx _ = () + let enter_bool_value _self _ctx _ = () + let exit_bool_value _self _ctx _ = () + let enter_enum_value _self _ctx _ = () + let exit_enum_value _self _ctx _ = () + let enter_variable_value _self _ctx _ = () + let exit_variable_value _self _ctx _ = () + let enter_list_value _self _ctx _ = () + let exit_list_value _self _ctx _ = () + let enter_object_value _self _ctx _ = () + let exit_object_value _self _ctx _ = () + let enter_object_field _self _ctx _ = () + let exit_object_field _self _ctx _ = () +end + +module Context = struct + let push_type ctx type_ref = + { + ctx with + type_stack = + Option.flat_map + (fun type_ref -> + Schema.lookup_type ctx.schema (Schema.innermost_name type_ref)) + type_ref + :: ctx.type_stack; + type_literal_stack = type_ref :: ctx.type_literal_stack; + } + + let push_input_type ctx type_ref = + { + ctx with + input_type_stack = + Option.flat_map + (fun type_ref -> + Schema.lookup_type ctx.schema (Schema.innermost_name type_ref)) + type_ref + :: ctx.input_type_stack; + input_type_literal_stack = type_ref :: ctx.input_type_literal_stack; + } + + let push_parent_type ctx = + let top = match ctx.type_stack with t :: _ -> t | [] -> None in + { ctx with parent_type_stack = top :: ctx.parent_type_stack } + + let parent_type ctx = + match ctx.parent_type_stack with t :: _ -> t | [] -> None + + let current_input_type_literal ctx = + match ctx.input_type_literal_stack with t :: _ -> t | [] -> None + + let push_error ctx loc msg = + ctx.errors := (ctx.map_loc loc, msg) :: !(ctx.errors) + + let push_warning ctx loc msg = + ctx.warnings := (ctx.map_loc loc, msg) :: !(ctx.warnings) +end + +let rec as_schema_type_ref = function + | Tr_named { item; _ } -> Schema.Named item + | Tr_list { item; _ } -> Schema.List (as_schema_type_ref item) + | Tr_non_null_named { item; _ } -> Schema.NonNull (Schema.Named item) + | Tr_non_null_list { item; _ } -> + Schema.NonNull (Schema.List (as_schema_type_ref item)) + +module Visitor (V : VisitorSig) = struct + let enter_input_value self ctx value = + match value.item with + | Iv_null -> V.enter_null_value self ctx (Source_pos.replace value ()) + | Iv_int i -> V.enter_int_value self ctx (Source_pos.replace value i) + | Iv_float f -> V.enter_float_value self ctx (Source_pos.replace value f) + | Iv_string s -> V.enter_string_value self ctx (Source_pos.replace value s) + | Iv_boolean b -> V.enter_bool_value self ctx (Source_pos.replace value b) + | Iv_enum e -> V.enter_enum_value self ctx (Source_pos.replace value e) + | Iv_variable v -> + V.enter_variable_value self ctx (Source_pos.replace value v) + | Iv_list l -> V.enter_list_value self ctx (Source_pos.replace value l) + | Iv_object o -> V.enter_object_value self ctx (Source_pos.replace value o) + + let exit_input_value self ctx value = + match value.item with + | Iv_null -> V.exit_null_value self ctx (Source_pos.replace value ()) + | Iv_int i -> V.exit_int_value self ctx (Source_pos.replace value i) + | Iv_float f -> V.exit_float_value self ctx (Source_pos.replace value f) + | Iv_string s -> V.exit_string_value self ctx (Source_pos.replace value s) + | Iv_boolean b -> V.exit_bool_value self ctx (Source_pos.replace value b) + | Iv_enum e -> V.exit_enum_value self ctx (Source_pos.replace value e) + | Iv_variable v -> + V.exit_variable_value self ctx (Source_pos.replace value v) + | Iv_list l -> V.exit_list_value self ctx (Source_pos.replace value l) + | Iv_object o -> V.exit_object_value self ctx (Source_pos.replace value o) + + let rec visit_input_value self ctx (arg_type : Schema.type_ref option) value = + let () = enter_input_value self ctx value in + let () = + match + ( arg_type + |> Option.map Schema.innermost_name + |> Option.flat_map (Schema.lookup_type ctx.schema), + value.item ) + with + | Some (Scalar _ as ty), _ when ty |> Schema.is_type_default == false -> + () + | _, Iv_object fields -> + List.iter + (fun (key, value) -> + let inner_type = + Context.current_input_type_literal ctx + |> Option.flat_map (function + | Schema.Named name | Schema.NonNull (Schema.Named name) -> + Schema.lookup_type ctx.schema name + | _ -> None) + |> Option.flat_map (fun t -> + try Schema.lookup_input_field t key.item with + | Schema.Invalid_type msg -> + Context.push_error ctx key.span msg; + None + | other -> raise other) + |> Option.map (fun am -> am.Schema.am_arg_type) + in + let ctx = Context.push_input_type ctx inner_type in + let () = V.enter_object_field self ctx (key, value) in + let () = visit_input_value self ctx inner_type value in + V.exit_object_field self ctx (key, value)) + fields + | _, Iv_list items -> + let inner_type = + Context.current_input_type_literal ctx + |> Option.flat_map (function + | Schema.List inner | Schema.NonNull (Schema.List inner) -> + Some inner + | _ -> None) + in + let ctx = Context.push_input_type ctx inner_type in + List.iter (visit_input_value self ctx inner_type) items + | _ -> () + in + exit_input_value self ctx value + + let rec visit_inline_fragment self ctx inline_fragment = + let ctx = + match inline_fragment.item.if_type_condition with + | None -> ctx + | Some { item; _ } -> + Context.push_type ctx (Some (Schema.NonNull (Schema.Named item))) + in + let () = V.enter_inline_fragment self ctx inline_fragment in + let () = visit_directives self ctx inline_fragment.item.if_directives in + let () = + visit_selection_set self ctx inline_fragment.item.if_selection_set + in + V.exit_inline_fragment self ctx inline_fragment + + and visit_fragment_spread self ctx fragment_spread = + let () = V.enter_fragment_spread self ctx fragment_spread in + let () = visit_directives self ctx fragment_spread.item.fs_directives in + V.exit_fragment_spread self ctx fragment_spread + + and visit_field self ctx field = + let meta_field = + Context.parent_type ctx + |> Option.flat_map (fun t -> + Schema.lookup_field t field.item.fd_name.item) + in + let field_type = + Option.map (fun fm -> fm.Schema.fm_field_type) meta_field + in + let field_args = Option.map (fun fm -> fm.Schema.fm_arguments) meta_field in + let ctx = Context.push_type ctx field_type in + let () = V.enter_field self ctx field in + let () = visit_arguments self ctx field_args field.item.fd_arguments in + let () = visit_directives self ctx field.item.fd_directives in + let () = + match field.item.fd_selection_set with + | None -> () + | Some selection_set -> visit_selection_set self ctx selection_set + in + V.exit_field self ctx field + + and visit_selection self ctx = function + | Field field -> visit_field self ctx field + | FragmentSpread fragment_spread -> + visit_fragment_spread self ctx fragment_spread + | InlineFragment inline_fragment -> + visit_inline_fragment self ctx inline_fragment + + and visit_selection_set self ctx selection_set = + let ctx = Context.push_parent_type ctx in + let () = V.enter_selection_set self ctx selection_set in + let () = List.iter (visit_selection self ctx) selection_set.item in + V.exit_selection_set self ctx selection_set + + and visit_arguments self ctx meta_args = function + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, value) -> + let arg_type = + meta_args + |> Option.flat_map (fun meta_args -> + match + List.find (fun am -> am.Schema.am_name = name.item) meta_args + with + | am -> Some am + | exception Not_found -> None) + |> Option.map (fun am -> am.Schema.am_arg_type) + in + let ctx = Context.push_input_type ctx arg_type in + let () = V.enter_argument self ctx (name, arg_type, value) in + let () = visit_input_value self ctx arg_type value in + V.exit_argument self ctx (name, value)) + item + + and visit_directives self ctx = + List.iter (fun directive -> + let meta_args = + Schema.lookup_directive ctx.schema directive.item.d_name.item + |> Option.map (fun d -> d.Schema.dm_arguments) + in + let () = V.enter_directive self ctx directive in + let () = visit_arguments self ctx meta_args directive.item.d_arguments in + V.exit_directive self ctx directive) + + let visit_variable_definitions self ctx = function + | None -> () + | Some { item; _ } -> + List.iter + (fun (name, def) -> + let ctx = + Context.push_input_type ctx + (Some (as_schema_type_ref def.vd_type.item)) + in + let () = V.enter_variable_definition self ctx (name, def) in + let () = + match def.vd_default_value with + | None -> () + | Some value -> + visit_input_value self ctx + (Some (def.vd_type.item |> Type_utils.to_schema_type_ref)) + value + in + V.exit_variable_definition self ctx (name, def)) + item + + let visit_operation_definition self ctx operation = + let () = + visit_variable_definitions self ctx operation.o_variable_definitions + in + let () = visit_directives self ctx operation.o_directives in + visit_selection_set self ctx operation.o_selection_set + + let visit_fragment_definition self ctx fragment = + let () = visit_directives self ctx fragment.fg_directives in + visit_selection_set self ctx fragment.fg_selection_set + + let visit_definition self ctx def = + let def_type = + Schema.NonNull + (Schema.Named + (match def with + | Operation { item = { o_type = Query; _ }; _ } -> + Schema.query_type ctx.schema |> Schema.type_name + | Operation { item = { o_type = Mutation; _ }; _ } -> + Schema.mutation_type ctx.schema + |> Option.unsafe_unwrap ~reason:"Can't find mutation type" + |> Schema.type_name + | Operation { item = { o_type = Subscription; _ }; _ } -> + Schema.subscription_type ctx.schema + |> Option.unsafe_unwrap ~reason:"Can't find subscription type" + |> Schema.type_name + | Fragment { item = { fg_type_condition = { item; _ }; _ }; _ } -> + item)) + in + let ctx = Context.push_type ctx (Some def_type) in + match def with + | Operation operation -> + let () = V.enter_operation_definition self ctx operation in + let () = visit_operation_definition self ctx operation.item in + V.exit_operation_definition self ctx operation + | Fragment fragment -> + let () = V.enter_fragment_definition self ctx fragment in + let () = visit_fragment_definition self ctx fragment.item in + V.exit_fragment_definition self ctx fragment + + let visit_document ctx doc = + let self = V.make_self () in + let () = V.enter_document self ctx doc in + let () = List.iter (visit_definition self ctx) doc in + let () = V.exit_document self ctx doc in + self +end + +let find_fragments doc = + let open Graphql_ast in + let open Source_pos in + let lookup = Hashtbl.create 1 in + let () = + List.iter + (function + | Fragment fragment -> + Hashtbl.add lookup fragment.item.fg_name.item fragment.item + | _ -> ()) + doc + in + lookup + +let make_context config document = + { + map_loc = config.Generator_utils.map_loc; + fragments = find_fragments document; + schema = config.Generator_utils.schema; + errors = ref []; + warnings = ref []; + type_stack = []; + type_literal_stack = []; + input_type_stack = []; + input_type_literal_stack = []; + parent_type_stack = []; + } diff --git a/src/graphql_compiler/type_utils.ml b/src/graphql_compiler/type_utils.ml new file mode 100644 index 00000000..590f6fd0 --- /dev/null +++ b/src/graphql_compiler/type_utils.ml @@ -0,0 +1,171 @@ +open Graphql_ast +open Source_pos +open Schema + +type native_type_ref = + | Ntr_named of string + | Ntr_nullable of native_type_ref + | Ntr_list of native_type_ref + +let rec to_native_type_ref tr = + match tr with + | NonNull (Named n) -> Ntr_named n + | NonNull (List l) -> Ntr_list (to_native_type_ref l) + | NonNull i -> to_native_type_ref i + | List l -> Ntr_nullable (Ntr_list (to_native_type_ref l)) + | Named n -> Ntr_nullable (Ntr_named n) + +let rec to_schema_type_ref tr = + match tr with + | Tr_list l -> List (to_schema_type_ref l.item) + | Tr_named n -> Named n.item + | Tr_non_null_list l -> NonNull (List (to_schema_type_ref l.item)) + | Tr_non_null_named n -> NonNull (Named n.item) + +let is_nullable = function + | Ntr_named _ | Ntr_list _ -> false + | Ntr_nullable _ -> true + +module Generic = struct + type t = + | ID + | String + | Int + | Float + | Boolean + | Null + | CustomScalar + | Object + | InputObject + | Enum + | Interface + | Union + | EmptyList + + type tree = T of t | NonNull of tree | List of tree + + let string_of_t = function + | ID -> "ID" + | String -> "String" + | Int -> "Int" + | Float -> "Float" + | Boolean -> "Boolean" + | Object -> "Object" + | InputObject -> "InputObject" + | Enum -> "Enum" + | Interface -> "Interface" + | Union -> "Union" + | Null -> "Null" + | CustomScalar -> "CustomScalar" + | EmptyList -> "EmptyList" + + let rec string_of_tree = function + | T t -> t |> string_of_t + | NonNull (List t) -> "[" ^ string_of_tree t ^ "]!" + | NonNull t -> string_of_tree t ^ "!" + | List t -> "[" ^ string_of_tree t ^ "]" + + let eq (t1 : t) (t2 : t) = + match (t1, t2) with + | ID, String | String, ID | Object, InputObject | InputObject, Object -> + true + | t1, t2 when t1 == t2 -> true + | _ -> false + + let eq_tree (t1 : tree) (t2 : tree) = + t1 |> string_of_tree == (t2 |> string_of_tree) + + type apply_result = Ok | Unequal | RequiredMismatch + + let rec can_apply (to_ : tree) (from : tree) = + match (to_, from) with + | T CustomScalar, T _ -> Ok + | T CustomScalar, NonNull _ -> Ok + | NonNull t1, NonNull t2 | List t1, List t2 | List t1, NonNull (List t2) -> + can_apply t1 t2 + | T t1, T t2 | T t1, NonNull (T t2) -> ( + match eq t1 t2 with true -> Ok | false -> Unequal) + | List _, T EmptyList + | List _, NonNull (T EmptyList) + | NonNull (List _), T EmptyList -> + Ok + | NonNull _, T _ | NonNull _, List _ -> RequiredMismatch + | _ -> Unequal + + let from_schema_tm (ty : Schema.type_meta) = + match ty with + | Scalar { sm_name = "ID" } -> ID + | Scalar { sm_name = "String" } -> String + | Scalar { sm_name = "Int" } -> Int + | Scalar { sm_name = "Float" } -> Float + | Scalar { sm_name = "Boolean" } -> Boolean + | Scalar _ -> CustomScalar + | Object _ -> Object + | InputObject _ -> InputObject + | Enum _ -> Enum + | Interface _ -> Interface + | Union _ -> Union + + let rec from_schema_tr ~(schema : Schema.t) (tr : Schema.type_ref) = + match tr with + | Named name -> + T + (name |> Schema.lookup_type schema |> Option.map from_schema_tm + |> Option.get_or_else Null) + | NonNull tr -> NonNull (tr |> from_schema_tr ~schema) + | List tr -> List (tr |> from_schema_tr ~schema) + + let rec from_graphql_ast_tr ~(schema : Schema.t) (tr : Graphql_ast.type_ref) = + match tr with + | Tr_named name -> + T + (name.item |> Schema.lookup_type schema |> Option.map from_schema_tm + |> Option.get_or_else Null) + | Tr_non_null_named name -> + NonNull (Tr_named name |> from_graphql_ast_tr ~schema) + | Tr_non_null_list name -> + NonNull (Tr_list name |> from_graphql_ast_tr ~schema) + | Tr_list t -> List (t.item |> from_graphql_ast_tr ~schema) + + let rec from_graphql_ast_iv + ?(arguments : (string, tree) Hashtbl.t = Hashtbl.create 0) + ~(schema : Schema.t) (iv : Graphql_ast.input_value) = + match iv with + | Iv_null -> NonNull (T Null) + | Iv_int _ -> NonNull (T Int) + | Iv_float _ -> NonNull (T Float) + | Iv_string _ -> NonNull (T String) + | Iv_boolean _ -> NonNull (T Boolean) + | Iv_enum _ -> NonNull (T Enum) + | Iv_variable variable_name -> ( + try Hashtbl.find arguments variable_name with Not_found -> T Null) + | Iv_list (inner :: _) -> + NonNull (List (inner.item |> from_graphql_ast_iv ~arguments ~schema)) + | Iv_list [] -> NonNull (T EmptyList) + | Iv_object _ -> NonNull (T InputObject) + + type error = + | MismatchedTypes of string * string + | MismatchedRequiredVar of string * string + | RequiredFieldMissing of string * string + | RequiredVariableMissing of string * string + + let generate_error (error : error) = + match error with + | MismatchedTypes (expected, received) -> + Printf.sprintf "Invalid argument. Expected \"%s\" but received \"%s\"." + expected received + | MismatchedRequiredVar (arg_name, val_name) -> + Printf.sprintf + "Invalid argument. Trying to apply the nullable variable \"$%s\" to \ + the required argument \"%s\"." + val_name arg_name + | RequiredFieldMissing (arg_name, key_name) -> + Printf.sprintf + "Invalid argument. The field \"%s\" on argument \"%s\" is missing." + key_name arg_name + | RequiredVariableMissing (arg_name, variable_name) -> + Printf.sprintf + "Invalid argument. The variable \"$%s\" on argument \"%s\" is missing." + variable_name arg_name +end diff --git a/src/graphql_compiler/validations.ml b/src/graphql_compiler/validations.ml new file mode 100644 index 00000000..728090fe --- /dev/null +++ b/src/graphql_compiler/validations.ml @@ -0,0 +1,25 @@ +open Traversal_utils + +module AllRulesImpl = + Multi_visitor.Visitor + (Rule_no_invalid_default_values.Visitor) + (Multi_visitor.Visitor + (Rule_no_unused_variables.Visitor) + (Multi_visitor.Visitor + (Rule_no_undefined_variables.Visitor) + (Multi_visitor.Visitor + (Rule_no_invalid_input_object_values.Visitor) + (Multi_visitor.Visitor + (Rule_all_required_arguments.Visitor) + (Multi_visitor.Visitor + (Rule_known_argument_names.Visitor) + (Multi_visitor.Visitor + (Rule_deprecated_fields.Visitor) + (Multi_visitor.NullVisitor))))))) + +module AllRules = Visitor (AllRulesImpl) + +let run_validators config document = + let ctx = make_context config document in + let _ = AllRules.visit_document ctx document in + ((match !(ctx.errors) with [] -> None | errs -> Some errs), !(ctx.warnings)) diff --git a/src/json/dune b/src/json/dune new file mode 100644 index 00000000..5ea499e2 --- /dev/null +++ b/src/json/dune @@ -0,0 +1,7 @@ +(ocamllex json_read) + +(library + (name json) + (public_name graphql_ppx.json) + (flags + (:standard -w -9))) diff --git a/src/json/json.ml b/src/json/json.ml new file mode 100644 index 00000000..c34619d5 --- /dev/null +++ b/src/json/json.ml @@ -0,0 +1,14 @@ +(* Vendor of Yojson.Basic *) + +include Json_type +include Json_common + +module Util = struct + include Json_util +end + +module Read = struct + include Json_read +end + +include Json_monomorphic diff --git a/src/json/json.mli b/src/json/json.mli new file mode 100644 index 00000000..ba23ce6a --- /dev/null +++ b/src/json/json.mli @@ -0,0 +1,510 @@ +type t = + [ `Null + | `Bool of bool + | `Int of int + | `Float of float + | `String of string + | `Assoc of (string * t) list + | `List of t list ] + +exception Json_error of string + +val json_error : string -> 'a + +type lexer_state = { + buf : Buffer.t; (** Buffer used to accumulate substrings *) + mutable lnum : int; (** Current line number (counting from 1) *) + mutable bol : int; + (** Absolute position of the first character of the current line + (counting from 0) *) + mutable fname : string option; + (** Name referencing the input file in error messages *) +} + +module Lexer_state : sig + type t = lexer_state = { + buf : Buffer.t; + mutable lnum : int; + mutable bol : int; + mutable fname : string option; + } +end + +val init_lexer : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> unit -> lexer_state +(** Create a fresh lexer_state record. *) + +(**/**) +(* begin undocumented section *) + +exception End_of_array +exception End_of_object +exception End_of_tuple +exception End_of_input + +(* end undocumented section *) +(**/**) + +(** {2 JSON pretty-printing} *) + +val pretty_print : ?std:bool -> Format.formatter -> t -> unit +(** Pretty-print into a {!Format.formatter}. + See [to_string] for the role of the optional [std] argument. + + @since 1.3.1 *) + +val pretty_to_string : ?std:bool -> t -> string +(** Pretty-print into a string. + See [to_string] for the role of the optional [std] argument. + *) + +val pretty_to_channel : ?std:bool -> out_channel -> t -> unit +(** Pretty-print to a channel. + See [to_string] for the role of the optional [std] argument. + *) + +module Util : sig + (** + This module provides combinators for extracting fields from JSON + values. This approach is recommended for reading a few fields + from data returned by public APIs. However for more complex applications + we recommend {{:https://github.com/ahrefs/atd}Atdgen}. + + Here is some sample JSON data: +{v +{ + "id": "398eb027", + "name": "John Doe", + "pages": [ + { + "id": 1, + "title": "The Art of Flipping Coins", + "url": "http://example.com/398eb027/1" + }, + { + "id": 2, + "deleted": true + }, + { + "id": 3, + "title": "Artichoke Salad", + "url": "http://example.com/398eb027/3" + }, + { + "id": 4, + "title": "Flying Bananas", + "url": "http://example.com/398eb027/4" + } + ] +} +v} + + In order to extract the "id" field, assuming it is mandatory, + we would use the following OCaml code that operates on single JSON + nodes: +{v +open Json.Util +... + let id = json |> member "id" |> to_string in + ... +v} + + In order to extract all the "title" fields, we would write the following + OCaml code that operates on lists of JSON nodes, skipping + undefined nodes and nodes of unexpected type: +{v +open Json.Util + +let extract_titles (json : t) : string list = + [json] + |> filter_member "pages" + |> flatten + |> filter_member "title" + |> filter_string +v} +*) + + exception Type_error of string * t + (** Raised when the JSON value is not of the correct type to support an + operation, e.g. [member] on an [`Int]. The string message explains the + mismatch. *) + + exception Undefined of string * t + (** Raised when the equivalent JavaScript operation on the JSON value would + return undefined. Currently this only happens when an array index is out + of bounds. *) + + val keys : t -> string list + (** Returns all the key names in the given JSON object *) + + val values : t -> t list + (** Return all the value in the given JSON object *) + + val combine : t -> t -> t + (** Combine two JSON Objects together *) + + val member : string -> t -> t + (** [member k obj] returns the value associated with the key [k] in the JSON + object [obj], or [`Null] if [k] is not present in [obj]. *) + + val index : int -> t -> t + (** [index i arr] returns the value at index [i] in the JSON array [arr]. + Negative indices count from the end of the list (so -1 is the last + element). *) + + val map : (t -> t) -> t -> t + (** [map f arr] calls the function [f] on each element of the JSON array + [arr], and returns a JSON array containing the results. *) + + val to_assoc : t -> (string * t) list + (** Extract the items of a JSON object or raise [Type_error]. *) + + val to_option : (t -> 'a) -> t -> 'a option + (** Return [None] if the JSON value is null or map the JSON value + to [Some] value using the provided function. *) + + val to_bool : t -> bool + (** Extract a boolean value or raise [Type_error]. *) + + val to_bool_option : t -> bool option + (** Extract [Some] boolean value, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + + val to_number : t -> float + (** Extract a number or raise [Type_error]. *) + + val to_number_option : t -> float option + (** Extract [Some] number, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + + val to_float : t -> float + (** Extract a float value or raise [Type_error]. + [to_number] is generally preferred as it also works with int literals. *) + + val to_float_option : t -> float option + (** Extract [Some] float value, + return [None] if the value is null, + or raise [Type_error] otherwise. + [to_number_option] is generally preferred as it also works + with int literals. *) + + val to_int : t -> int + (** Extract an int from a JSON int or raise [Type_error]. *) + + val to_int_option : t -> int option + (** Extract [Some] int from a JSON int, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + + val to_list : t -> t list + (** Extract a list from JSON array or raise [Type_error]. *) + + val to_string : t -> string + (** Extract a string from a JSON string or raise [Type_error]. *) + + val to_string_option : t -> string option + (** Extract [Some] string from a JSON string, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + + val convert_each : (t -> 'a) -> t -> 'a list + (** The conversion functions above cannot be used with [map], because they do + not return JSON values. This convenience function [convert_each to_f arr] + is equivalent to [List.map to_f (to_list arr)]. *) + + (** {3 Exception-free filters} *) + + (** + The following functions operate on lists of JSON nodes. + None of them raises an exception when a certain kind of node is expected + but no node or the wrong kind of node is found. + Instead of raising an exception, nodes that are not as expected + are simply ignored. +*) + + val filter_map : ('a -> 'b option) -> 'a list -> 'b list + (** [filter_map f l] maps each element of the list [l] to an optional value + using function [f] and unwraps the resulting values. *) + + val flatten : t list -> t list + (** Expects JSON arrays and returns all their elements as a single + list. [flatten l] is equivalent to [List.flatten (filter_list l)]. *) + + val filter_index : int -> t list -> t list + (** Expects JSON arrays and returns all their elements existing at the given + position. *) + + val filter_list : t list -> t list list + (** Expects JSON arrays and unwraps them. *) + + val filter_member : string -> t list -> t list + (** Expects JSON objects and returns all the fields of the given name + (at most one field per object). *) + + val filter_assoc : t list -> (string * t) list list + (** Expects JSON objects and unwraps them. *) + + val filter_bool : t list -> bool list + (** Expects JSON booleans and unwraps them. *) + + val filter_int : t list -> int list + (** Expects JSON integers ([`Int] nodes) and unwraps them. *) + + val filter_float : t list -> float list + (** Expects JSON floats ([`Float] nodes) and unwraps them. *) + + val filter_number : t list -> float list + (** Expects JSON numbers ([`Int] or [`Float]) and unwraps them. + Ints are converted to floats. *) + + val filter_string : t list -> string list + (** Expects JSON strings and unwraps them. *) +end + +module Read : sig + val prettify : ?std:bool -> string -> string + (** Combined parser and pretty-printer. + See [to_string] for the role of the optional [std] argument. *) + + val compact : ?std:bool -> string -> string + (** Combined parser and printer. + See [to_string] for the role of the optional [std] argument. *) + + (** {2 JSON readers} *) + + exception Finally of exn * exn + (** Exception describing a failure in both finalizer and parsing. *) + + val from_string : ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t + (** Read a JSON value from a string. + @param buf use this buffer at will during parsing instead of creating + a new one. + @param fname data file name to be used in error messages. It does + not have to be a real file. + @param lnum number of the first line of input. Default is 1. + *) + + val from_channel : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> in_channel -> t + (** Read a JSON value from a channel. + See [from_string] for the meaning of the optional arguments. *) + + val from_file : ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t + (** Read a JSON value from a file. + See [from_string] for the meaning of the optional arguments. *) + + type lexer_state = Json_common.lexer_state + (** This alias is provided for backward compatibility. + *) + + val init_lexer : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> unit -> lexer_state + (** This alias is provided for backward compatibility. *) + + val from_lexbuf : lexer_state -> ?stream:bool -> Lexing.lexbuf -> t + (** Read a JSON value from a lexbuf. + A valid initial [lexer_state] can be created with [init_lexer]. + See [from_string] for the meaning of the optional arguments. + + @param stream indicates whether more data may follow. The default value + is false and indicates that only JSON whitespace can be found between + the end of the JSON value and the end of the input. *) + + val stream_from_string : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t Stream.t + (** Input a sequence of JSON values from a string. + Whitespace between JSON values is fine but not required. + See [from_string] for the meaning of the optional arguments. *) + + val stream_from_channel : + ?buf:Buffer.t -> + ?fin:(unit -> unit) -> + ?fname:string -> + ?lnum:int -> + in_channel -> + t Stream.t + (** Input a sequence of JSON values from a channel. + Whitespace between JSON values is fine but not required. + @param fin finalization function executed once when the end of the + stream is reached either because there is no more input or because + the input could not be parsed, raising an exception. + @raise Finally When the parsing and the finalizer both raised, [Finally (exn, fin_exn)] + is raised, [exn] being the parsing exception and [fin_exn] the finalizer one. + + See [from_string] for the meaning of the other optional arguments. *) + + val stream_from_file : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t Stream.t + (** Input a sequence of JSON values from a file. + Whitespace between JSON values is fine but not required. + + See [from_string] for the meaning of the optional arguments. *) + + val stream_from_lexbuf : + lexer_state -> ?fin:(unit -> unit) -> Lexing.lexbuf -> t Stream.t + (** Input a sequence of JSON values from a lexbuf. + A valid initial [lexer_state] can be created with [init_lexer]. + Whitespace between JSON values is fine but not required. + @raise Finally When the parsing and the finalizer both raised, [Finally (exn, fin_exn)] + is raised, [exn] being the parsing exception and [fin_exn] the finalizer one. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. *) + + type json_line = [ `Json of t | `Exn of exn ] + (** The type of values resulting from a parsing attempt of a JSON value. *) + + val linestream_from_channel : + ?buf:Buffer.t -> + ?fin:(unit -> unit) -> + ?fname:string -> + ?lnum:int -> + in_channel -> + json_line Stream.t + (** Input a sequence of JSON values, one per line, from a channel. + Exceptions raised when reading malformed lines are caught + and represented using [`Exn]. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. + See [from_string] for the meaning of the other optional arguments. *) + + val linestream_from_file : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> json_line Stream.t + (** Input a sequence of JSON values, one per line, from a file. + Exceptions raised when reading malformed lines are caught + and represented using [`Exn]. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. + See [from_string] for the meaning of the other optional arguments. *) + + val read_t : lexer_state -> Lexing.lexbuf -> t + (** Read a JSON value from the given lexer_state and lexing buffer and return it. + Provided as a reader function for atdgen. +*) + + (**/**) + (* begin undocumented section *) + + val finish_string : lexer_state -> Lexing.lexbuf -> string + val read_string : lexer_state -> Lexing.lexbuf -> string + val read_ident : lexer_state -> Lexing.lexbuf -> string + + val map_string : + lexer_state -> (string -> int -> int -> 'a) -> Lexing.lexbuf -> 'a + (* equivalent to finish_string *) + + val map_ident : + lexer_state -> (string -> int -> int -> 'a) -> Lexing.lexbuf -> 'a + (* equivalent to read_ident *) + + type variant_kind = [ `Edgy_bracket | `Square_bracket | `Double_quote ] + + val start_any_variant : lexer_state -> Lexing.lexbuf -> variant_kind + val finish_variant : lexer_state -> Lexing.lexbuf -> t option + val finish_skip_variant : lexer_state -> Lexing.lexbuf -> unit + val read_lt : lexer_state -> Lexing.lexbuf -> unit + val read_gt : lexer_state -> Lexing.lexbuf -> unit + val read_comma : lexer_state -> Lexing.lexbuf -> unit + val finish_stringlit : lexer_state -> Lexing.lexbuf -> string + val finish_skip_stringlit : lexer_state -> Lexing.lexbuf -> unit + val finish_escaped_char : lexer_state -> Lexing.lexbuf -> unit + val finish_comment : lexer_state -> Lexing.lexbuf -> unit + val read_space : lexer_state -> Lexing.lexbuf -> unit + val read_eof : Lexing.lexbuf -> bool + val read_null : lexer_state -> Lexing.lexbuf -> unit + val read_null_if_possible : lexer_state -> Lexing.lexbuf -> bool + val read_bool : lexer_state -> Lexing.lexbuf -> bool + val read_int : lexer_state -> Lexing.lexbuf -> int + val read_int8 : lexer_state -> Lexing.lexbuf -> char + val read_int32 : lexer_state -> Lexing.lexbuf -> int32 + val read_int64 : lexer_state -> Lexing.lexbuf -> int64 + val read_number : lexer_state -> Lexing.lexbuf -> float + val skip_ident : lexer_state -> Lexing.lexbuf -> unit + + val read_sequence : + ('a -> lexer_state -> Lexing.lexbuf -> 'a) -> + 'a -> + lexer_state -> + Lexing.lexbuf -> + 'a + + val read_list : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a list + + val read_list_rev : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a list + + val read_array_end : Lexing.lexbuf -> unit + val read_array_sep : lexer_state -> Lexing.lexbuf -> unit + + val read_array : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a array + + val read_tuple : + (int -> 'a -> lexer_state -> Lexing.lexbuf -> 'a) -> + 'a -> + lexer_state -> + Lexing.lexbuf -> + 'a + + val start_any_tuple : lexer_state -> Lexing.lexbuf -> bool + val read_lpar : lexer_state -> Lexing.lexbuf -> unit + val read_rpar : lexer_state -> Lexing.lexbuf -> unit + val read_tuple_end : Lexing.lexbuf -> unit + val read_tuple_end2 : lexer_state -> bool -> Lexing.lexbuf -> unit + val read_tuple_sep : lexer_state -> Lexing.lexbuf -> unit + val read_tuple_sep2 : lexer_state -> bool -> Lexing.lexbuf -> unit + val read_lbr : lexer_state -> Lexing.lexbuf -> unit + val read_rbr : lexer_state -> Lexing.lexbuf -> unit + + val read_fields : + ('acc -> string -> lexer_state -> Lexing.lexbuf -> 'acc) -> + 'acc -> + lexer_state -> + Lexing.lexbuf -> + 'acc + + val read_abstract_fields : + (lexer_state -> Lexing.lexbuf -> 'key) -> + ('acc -> 'key -> lexer_state -> Lexing.lexbuf -> 'acc) -> + 'acc -> + lexer_state -> + Lexing.lexbuf -> + 'acc + + val read_lcurl : lexer_state -> Lexing.lexbuf -> unit + val read_object_end : Lexing.lexbuf -> unit + val read_object_sep : lexer_state -> Lexing.lexbuf -> unit + val read_colon : lexer_state -> Lexing.lexbuf -> unit + val read_json : lexer_state -> Lexing.lexbuf -> t + val skip_json : lexer_state -> Lexing.lexbuf -> unit + val buffer_json : lexer_state -> Lexing.lexbuf -> unit + val validate_json : 'path -> t -> 'error option +end + +val pp : Format.formatter -> t -> unit +(** Pretty printer, useful for debugging *) + +val show : t -> string +(** Convert value to string, useful for debugging *) + +val equal : t -> t -> bool +(** [equal a b] is the monomorphic equality. + Determines whether two JSON values are considered equal. In the case of + JSON objects, the order of the keys does not matter, except for + duplicate keys which will be considered equal as long as they are in the + same input order. + *) diff --git a/src/json/json_common.ml b/src/json/json_common.ml new file mode 100644 index 00000000..41acfa32 --- /dev/null +++ b/src/json/json_common.ml @@ -0,0 +1,123 @@ +open Json_type + +(* Not necessary anymore? *) +(* type in_param = { string_buf : Buffer.t } *) +(* let create_in_param ?(len = 256) () = { string_buf = Buffer.create len } *) + +let utf8_of_code buf x = + let add = Buffer.add_char in + + (* Straight <= doesn't work with signed 31-bit ints *) + let maxbits n x = x lsr n = 0 in + + if maxbits 7 x then (* 7 *) + add buf (Char.chr x) + else if maxbits 11 x then ( + (* 5 + 6 *) + add buf (Char.chr (0b11000000 lor ((x lsr 6) land 0b00011111))); + add buf (Char.chr (0b10000000 lor (x land 0b00111111)))) + else if maxbits 16 x then ( + (* 4 + 6 + 6 *) + add buf (Char.chr (0b11100000 lor ((x lsr 12) land 0b00001111))); + add buf (Char.chr (0b10000000 lor ((x lsr 6) land 0b00111111))); + add buf (Char.chr (0b10000000 lor (x land 0b00111111)))) + else if maxbits 21 x then ( + (* 3 + 6 + 6 + 6 *) + add buf (Char.chr (0b11110000 lor ((x lsr 18) land 0b00000111))); + add buf (Char.chr (0b10000000 lor ((x lsr 12) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 6) land 0b00111111))); + add buf (Char.chr (0b10000000 lor (x land 0b00111111)))) + else if maxbits 26 x then ( + (* 2 + 6 + 6 + 6 + 6 *) + add buf (Char.chr (0b11111000 lor ((x lsr 24) land 0b00000011))); + add buf (Char.chr (0b10000000 lor ((x lsr 18) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 12) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 6) land 0b00111111))); + add buf (Char.chr (0b10000000 lor (x land 0b00111111)))) + else ( + assert (maxbits 31 x); + (* 1 + 6 + 6 + 6 + 6 + 6 *) + add buf (Char.chr (0b11111100 lor ((x lsr 30) land 0b00000001))); + add buf (Char.chr (0b10000000 lor ((x lsr 24) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 18) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 12) land 0b00111111))); + add buf (Char.chr (0b10000000 lor ((x lsr 6) land 0b00111111))); + add buf (Char.chr (0b10000000 lor (x land 0b00111111)))) + +let code_of_surrogate_pair i j = + let high10 = i - 0xD800 in + let low10 = j - 0xDC00 in + 0x10000 + ((high10 lsl 10) lor low10) + +let utf8_of_surrogate_pair buf i j = + utf8_of_code buf (code_of_surrogate_pair i j) + +type lexer_state = { + buf : Buffer.t; (* Buffer used to accumulate substrings *) + mutable lnum : int; (* Current line number (starting from 1) *) + mutable bol : int; + (* Absolute position of the first character of the current line + (starting from 0) *) + mutable fname : string option; (* Name describing the input file *) +} + +module Lexer_state = struct + type t = lexer_state = { + buf : Buffer.t; + mutable lnum : int; + mutable bol : int; + mutable fname : string option; + } +end + +let init_lexer ?buf ?fname ?(lnum = 1) () = + let buf = match buf with None -> Buffer.create 256 | Some buf -> buf in + { buf; lnum; bol = 0; fname } + +module Pretty = struct + let pp_list sep ppx out l = + let pp_sep out () = Format.fprintf out "%s@ " sep in + Format.pp_print_list ~pp_sep ppx out l + + let rec format std (out : Format.formatter) (x : t) : unit = + match x with + | `Null -> Format.pp_print_string out "null" + | `Bool x -> Format.pp_print_bool out x + | `Int x -> Format.pp_print_string out (Json_write.json_string_of_int x) + | `Float x -> + let s = + if std then Json_write.std_json_string_of_float x + else Json_write.json_string_of_float x + in + Format.pp_print_string out s + | `String s -> + Format.pp_print_string out (Json_write.json_string_of_string s) + | `List [] -> Format.pp_print_string out "[]" + | `List l -> + Format.fprintf out "[@;<1 0>@[%a@]@;<1 -2>]" + (pp_list "," (format std)) + l + | `Assoc [] -> Format.pp_print_string out "{}" + | `Assoc l -> + Format.fprintf out "{@;<1 0>%a@;<1 -2>}" + (pp_list "," (format_field std)) + l + + and format_field std out (name, x) = + Format.fprintf out "@[%s: %a@]" + (Json_write.json_string_of_string name) + (format std) x + + let pp ?(std = false) out x = + Format.fprintf out "@[%a@]" (format std) (x :> t) + + let to_string ?std x = Format.asprintf "%a" (pp ?std) x + + let to_channel ?std oc x = + let fmt = Format.formatter_of_out_channel oc in + Format.fprintf fmt "%a@?" (pp ?std) x +end + +let pretty_print ?std out x = Pretty.pp ?std out x +let pretty_to_string ?std x = Pretty.to_string ?std x +let pretty_to_channel ?std oc x = Pretty.to_channel ?std oc x diff --git a/src/json/json_monomorphic.ml b/src/json/json_monomorphic.ml new file mode 100644 index 00000000..310815b1 --- /dev/null +++ b/src/json/json_monomorphic.ml @@ -0,0 +1,77 @@ +let rec pp fmt = function + | `Null -> Format.pp_print_string fmt "`Null" + | `Bool x -> + Format.fprintf fmt "`Bool (@["; + Format.fprintf fmt "%B" x; + Format.fprintf fmt "@])" + | `Int x -> + Format.fprintf fmt "`Int (@["; + Format.fprintf fmt "%d" x; + Format.fprintf fmt "@])" + | `Float x -> + Format.fprintf fmt "`Float (@["; + Format.fprintf fmt "%F" x; + Format.fprintf fmt "@])" + | `String x -> + Format.fprintf fmt "`String (@["; + Format.fprintf fmt "%S" x; + Format.fprintf fmt "@])" + | `Assoc xs -> + Format.fprintf fmt "`Assoc (@["; + Format.fprintf fmt "@[<2>["; + ignore + (List.fold_left + (fun sep (key, value) -> + if sep then Format.fprintf fmt ";@ "; + Format.fprintf fmt "(@["; + Format.fprintf fmt "%S" key; + Format.fprintf fmt ",@ "; + pp fmt value; + Format.fprintf fmt "@])"; + true) + false xs); + Format.fprintf fmt "@,]@]"; + Format.fprintf fmt "@])" + | `List xs -> + Format.fprintf fmt "`List (@["; + Format.fprintf fmt "@[<2>["; + ignore + (List.fold_left + (fun sep x -> + if sep then Format.fprintf fmt ";@ "; + pp fmt x; + true) + false xs); + Format.fprintf fmt "@,]@]"; + Format.fprintf fmt "@])" + +let show x = Format.asprintf "%a" pp x + +let rec equal a b = + match (a, b) with + | `Null, `Null -> true + | `Bool a, `Bool b -> a = b + | `Int a, `Int b -> a = b + | `Float a, `Float b -> a = b + | `String a, `String b -> a = b + | `Assoc xs, `Assoc ys -> ( + let compare_keys (key, _) (key', _) = String.compare key key' in + let xs = List.stable_sort compare_keys xs in + let ys = List.stable_sort compare_keys ys in + match + List.for_all2 + (fun (key, value) (key', value') -> + match key = key' with false -> false | true -> equal value value') + xs ys + with + | result -> result + | exception Invalid_argument _ -> + (* the lists were of different lengths, thus unequal *) + false) + | `List xs, `List ys -> ( + match List.for_all2 equal xs ys with + | result -> result + | exception Invalid_argument _ -> + (* the lists were of different lengths, thus unequal *) + false) + | _ -> false diff --git a/src/json/json_read.mli b/src/json/json_read.mli new file mode 100644 index 00000000..f23f52ee --- /dev/null +++ b/src/json/json_read.mli @@ -0,0 +1,231 @@ +open Json_type + +val prettify : ?std:bool -> string -> string +(** Combined parser and pretty-printer. + See [to_string] for the role of the optional [std] argument. *) + +val compact : ?std:bool -> string -> string +(** Combined parser and printer. + See [to_string] for the role of the optional [std] argument. *) + +(** {2 JSON readers} *) + +exception Finally of exn * exn +(** Exception describing a failure in both finalizer and parsing. *) + +val from_string : ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t +(** Read a JSON value from a string. + @param buf use this buffer at will during parsing instead of creating + a new one. + @param fname data file name to be used in error messages. It does + not have to be a real file. + @param lnum number of the first line of input. Default is 1. + *) + +val from_channel : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> in_channel -> t +(** Read a JSON value from a channel. + See [from_string] for the meaning of the optional arguments. *) + +val from_file : ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t +(** Read a JSON value from a file. + See [from_string] for the meaning of the optional arguments. *) + +type lexer_state = Json_common.lexer_state +(** This alias is provided for backward compatibility. + *) + +val init_lexer : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> unit -> lexer_state +(** This alias is provided for backward compatibility. *) + +val from_lexbuf : lexer_state -> ?stream:bool -> Lexing.lexbuf -> t +(** Read a JSON value from a lexbuf. + A valid initial [lexer_state] can be created with [init_lexer]. + See [from_string] for the meaning of the optional arguments. + + @param stream indicates whether more data may follow. The default value + is false and indicates that only JSON whitespace can be found between + the end of the JSON value and the end of the input. *) + +val stream_from_string : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t Stream.t +(** Input a sequence of JSON values from a string. + Whitespace between JSON values is fine but not required. + See [from_string] for the meaning of the optional arguments. *) + +val stream_from_channel : + ?buf:Buffer.t -> + ?fin:(unit -> unit) -> + ?fname:string -> + ?lnum:int -> + in_channel -> + t Stream.t +(** Input a sequence of JSON values from a channel. + Whitespace between JSON values is fine but not required. + @param fin finalization function executed once when the end of the + stream is reached either because there is no more input or because + the input could not be parsed, raising an exception. + @raise Finally When the parsing and the finalizer both raised, [Finally (exn, fin_exn)] + is raised, [exn] being the parsing exception and [fin_exn] the finalizer one. + + See [from_string] for the meaning of the other optional arguments. *) + +val stream_from_file : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> t Stream.t +(** Input a sequence of JSON values from a file. + Whitespace between JSON values is fine but not required. + + See [from_string] for the meaning of the optional arguments. *) + +val stream_from_lexbuf : + lexer_state -> ?fin:(unit -> unit) -> Lexing.lexbuf -> t Stream.t +(** Input a sequence of JSON values from a lexbuf. + A valid initial [lexer_state] can be created with [init_lexer]. + Whitespace between JSON values is fine but not required. + @raise Finally When the parsing and the finalizer both raised, [Finally (exn, fin_exn)] + is raised, [exn] being the parsing exception and [fin_exn] the finalizer one. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. *) + +type json_line = [ `Json of t | `Exn of exn ] +(** The type of values resulting from a parsing attempt of a JSON value. *) + +val linestream_from_channel : + ?buf:Buffer.t -> + ?fin:(unit -> unit) -> + ?fname:string -> + ?lnum:int -> + in_channel -> + json_line Stream.t +(** Input a sequence of JSON values, one per line, from a channel. + Exceptions raised when reading malformed lines are caught + and represented using [`Exn]. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. + See [from_string] for the meaning of the other optional arguments. *) + +val linestream_from_file : + ?buf:Buffer.t -> ?fname:string -> ?lnum:int -> string -> json_line Stream.t +(** Input a sequence of JSON values, one per line, from a file. + Exceptions raised when reading malformed lines are caught + and represented using [`Exn]. + + See [stream_from_channel] for the meaning of the optional [fin] + argument. + See [from_string] for the meaning of the other optional arguments. *) + +val read_t : lexer_state -> Lexing.lexbuf -> t +(** Read a JSON value from the given lexer_state and lexing buffer and return it. + Provided as a reader function for atdgen. +*) + +(**/**) +(* begin undocumented section *) + +val finish_string : lexer_state -> Lexing.lexbuf -> string +val read_string : lexer_state -> Lexing.lexbuf -> string +val read_ident : lexer_state -> Lexing.lexbuf -> string + +val map_string : + lexer_state -> (string -> int -> int -> 'a) -> Lexing.lexbuf -> 'a +(* equivalent to finish_string *) + +val map_ident : + lexer_state -> (string -> int -> int -> 'a) -> Lexing.lexbuf -> 'a +(* equivalent to read_ident *) + +type variant_kind = [ `Edgy_bracket | `Square_bracket | `Double_quote ] + +val start_any_variant : lexer_state -> Lexing.lexbuf -> variant_kind +val finish_variant : lexer_state -> Lexing.lexbuf -> t option +val finish_skip_variant : lexer_state -> Lexing.lexbuf -> unit +val read_lt : lexer_state -> Lexing.lexbuf -> unit +val read_gt : lexer_state -> Lexing.lexbuf -> unit +val read_comma : lexer_state -> Lexing.lexbuf -> unit +val finish_stringlit : lexer_state -> Lexing.lexbuf -> string +val finish_skip_stringlit : lexer_state -> Lexing.lexbuf -> unit +val finish_escaped_char : lexer_state -> Lexing.lexbuf -> unit +val finish_comment : lexer_state -> Lexing.lexbuf -> unit +val read_space : lexer_state -> Lexing.lexbuf -> unit +val read_eof : Lexing.lexbuf -> bool +val read_null : lexer_state -> Lexing.lexbuf -> unit +val read_null_if_possible : lexer_state -> Lexing.lexbuf -> bool +val read_bool : lexer_state -> Lexing.lexbuf -> bool +val read_int : lexer_state -> Lexing.lexbuf -> int +val read_int8 : lexer_state -> Lexing.lexbuf -> char +val read_int32 : lexer_state -> Lexing.lexbuf -> int32 +val read_int64 : lexer_state -> Lexing.lexbuf -> int64 +val read_number : lexer_state -> Lexing.lexbuf -> float +val skip_ident : lexer_state -> Lexing.lexbuf -> unit + +val read_sequence : + ('a -> lexer_state -> Lexing.lexbuf -> 'a) -> + 'a -> + lexer_state -> + Lexing.lexbuf -> + 'a + +val read_list : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a list + +val read_list_rev : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a list + +val read_array_end : Lexing.lexbuf -> unit +val read_array_sep : lexer_state -> Lexing.lexbuf -> unit + +val read_array : + (lexer_state -> Lexing.lexbuf -> 'a) -> + lexer_state -> + Lexing.lexbuf -> + 'a array + +val read_tuple : + (int -> 'a -> lexer_state -> Lexing.lexbuf -> 'a) -> + 'a -> + lexer_state -> + Lexing.lexbuf -> + 'a + +val start_any_tuple : lexer_state -> Lexing.lexbuf -> bool +val read_lpar : lexer_state -> Lexing.lexbuf -> unit +val read_rpar : lexer_state -> Lexing.lexbuf -> unit +val read_tuple_end : Lexing.lexbuf -> unit +val read_tuple_end2 : lexer_state -> bool -> Lexing.lexbuf -> unit +val read_tuple_sep : lexer_state -> Lexing.lexbuf -> unit +val read_tuple_sep2 : lexer_state -> bool -> Lexing.lexbuf -> unit +val read_lbr : lexer_state -> Lexing.lexbuf -> unit +val read_rbr : lexer_state -> Lexing.lexbuf -> unit + +val read_fields : + ('acc -> string -> lexer_state -> Lexing.lexbuf -> 'acc) -> + 'acc -> + lexer_state -> + Lexing.lexbuf -> + 'acc + +val read_abstract_fields : + (lexer_state -> Lexing.lexbuf -> 'key) -> + ('acc -> 'key -> lexer_state -> Lexing.lexbuf -> 'acc) -> + 'acc -> + lexer_state -> + Lexing.lexbuf -> + 'acc + +val read_lcurl : lexer_state -> Lexing.lexbuf -> unit +val read_object_end : Lexing.lexbuf -> unit +val read_object_sep : lexer_state -> Lexing.lexbuf -> unit +val read_colon : lexer_state -> Lexing.lexbuf -> unit +val read_json : lexer_state -> Lexing.lexbuf -> t +val skip_json : lexer_state -> Lexing.lexbuf -> unit +val buffer_json : lexer_state -> Lexing.lexbuf -> unit +val validate_json : 'path -> t -> 'error option diff --git a/src/json/json_read.mll b/src/json/json_read.mll new file mode 100644 index 00000000..659d7513 --- /dev/null +++ b/src/json/json_read.mll @@ -0,0 +1,1068 @@ +{ + open Json_type + open Json_common + module Lexing = + (* + We override Lexing.engine in order to avoid creating a new position + record each time a rule is matched. + This reduces total parsing time by about 31%. + *) + struct + include Lexing + + external c_engine : lex_tables -> int -> lexbuf -> int = "caml_lex_engine" + + let engine tbl state buf = + let result = c_engine tbl state buf in + (* + if result >= 0 then begin + buf.lex_start_p <- buf.lex_curr_p; + buf.lex_curr_p <- {buf.lex_curr_p + with pos_cnum = buf.lex_abs_pos + buf.lex_curr_pos}; + end; + *) + result + end + + open Printf + open Lexing + + (* see description in common.mli *) + type lexer_state = Json_common.lexer_state + (* type lexer_state = { + buf : Buffer.t; + mutable lnum : int; + mutable bol : int; + mutable fname : string option; + } *) + + let dec c = + Char.code c - 48 + + let hex c = + match c with + '0'..'9' -> int_of_char c - int_of_char '0' + | 'a'..'f' -> int_of_char c - int_of_char 'a' + 10 + | 'A'..'F' -> int_of_char c - int_of_char 'A' + 10 + | _ -> assert false + + let custom_error descr v lexbuf = + let offs = lexbuf.lex_abs_pos - 1 in + let bol = v.bol in + let pos1 = offs + lexbuf.lex_start_pos - bol - 1 in + let pos2 = max pos1 (offs + lexbuf.lex_curr_pos - bol) in + let file_line = + match v.fname with + None -> "Line" + | Some s -> + sprintf "File %s, line" s + in + let bytes = + if pos1 = pos2 then + sprintf "byte %i" (pos1+1) + else + sprintf "bytes %i-%i" (pos1+1) (pos2+1) + in + let msg = sprintf "%s %i, %s:\n%s" file_line v.lnum bytes descr in + json_error msg + + + let lexer_error descr v lexbuf = + custom_error + (sprintf "%s '%s'" descr (Lexing.lexeme lexbuf)) + v lexbuf + + let read_junk = ref (fun _ -> assert false) + + let long_error descr v lexbuf = + let junk = Lexing.lexeme lexbuf in + let extra_junk = !read_junk lexbuf in + custom_error + (sprintf "%s '%s%s'" descr junk extra_junk) + v lexbuf + + let min10 = min_int / 10 - (if min_int mod 10 = 0 then 0 else 1) + let max10 = max_int / 10 + (if max_int mod 10 = 0 then 0 else 1) + + exception Int_overflow + + let extract_positive_int lexbuf = + let start = lexbuf.lex_start_pos in + let stop = lexbuf.lex_curr_pos in + let s = lexbuf.lex_buffer in + let n = ref 0 in + for i = start to stop - 1 do + if !n >= max10 then + raise Int_overflow + else + n := 10 * !n + dec (Bytes.get s i) + done; + if !n < 0 then + raise Int_overflow + else + !n + + let make_positive_int v lexbuf = + try `Int (extract_positive_int lexbuf) + with Int_overflow -> + lexer_error "Int overflow" v lexbuf + + let extract_negative_int lexbuf = + let start = lexbuf.lex_start_pos + 1 in + let stop = lexbuf.lex_curr_pos in + let s = lexbuf.lex_buffer in + let n = ref 0 in + for i = start to stop - 1 do + if !n <= min10 then + raise Int_overflow + else + n := 10 * !n - dec (Bytes.get s i) + done; + if !n > 0 then + raise Int_overflow + else + !n + + let make_negative_int v lexbuf = + try `Int (extract_negative_int lexbuf) + with Int_overflow -> + lexer_error "Int overflow" v lexbuf + + + let newline v lexbuf = + v.lnum <- v.lnum + 1; + v.bol <- lexbuf.lex_abs_pos + lexbuf.lex_curr_pos + + let add_lexeme buf lexbuf = + let len = lexbuf.lex_curr_pos - lexbuf.lex_start_pos in + Buffer.add_subbytes buf lexbuf.lex_buffer lexbuf.lex_start_pos len + + let map_lexeme f lexbuf = + let len = lexbuf.lex_curr_pos - lexbuf.lex_start_pos in + f (Bytes.sub_string lexbuf.lex_buffer lexbuf.lex_start_pos len) lexbuf.lex_start_pos len + + type variant_kind = [ `Edgy_bracket | `Square_bracket | `Double_quote ] +} + +let space = [' ' '\t' '\r']+ + +let digit = ['0'-'9'] +let nonzero = ['1'-'9'] +let digits = digit+ +let frac = '.' digits +let e = ['e' 'E']['+' '-']? +let exp = e digits + +let positive_int = (digit | nonzero digits) +let float = '-'? positive_int (frac | exp | frac exp) +let number = '-'? positive_int (frac | exp | frac exp)? + +let hex = [ '0'-'9' 'a'-'f' 'A'-'F' ] + +let ident = ['a'-'z' 'A'-'Z' '_']['a'-'z' 'A'-'Z' '_' '0'-'9']* + +let optjunk4 = (eof | _ (eof | _ (eof | _ (eof | _)))) +let optjunk8 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk4))))) +let optjunk12 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk8))))) +let optjunk16 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk12))))) +let optjunk20 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk16))))) +let optjunk24 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk20))))) +let optjunk28 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk24))))) +let optjunk32 = (eof | _ (eof | _ (eof | _ (eof | _ (eof | optjunk28))))) +let junk = optjunk32 + +rule read_json v = parse + | "true" { `Bool true } + | "false" { `Bool false } + | "null" { `Null } + | "NaN" { + `Float nan + } + | "Infinity" { + `Float infinity + } + | "-Infinity" { + `Float neg_infinity + } + | '"' { + Buffer.clear v.buf; + `String (finish_string v lexbuf) + } + | positive_int { make_positive_int v lexbuf } + | '-' positive_int { make_negative_int v lexbuf } + | float { + `Float (float_of_string (lexeme lexbuf)) + } + + | '{' { let acc = ref [] in + try + read_space v lexbuf; + read_object_end lexbuf; + let field_name = read_ident v lexbuf in + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + acc := (field_name, read_json v lexbuf) :: !acc; + while true do + read_space v lexbuf; + read_object_sep v lexbuf; + read_space v lexbuf; + let field_name = read_ident v lexbuf in + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + acc := (field_name, read_json v lexbuf) :: !acc; + done; + assert false + with End_of_object -> + `Assoc (List.rev !acc) + } + + | '[' { let acc = ref [] in + try + read_space v lexbuf; + read_array_end lexbuf; + acc := read_json v lexbuf :: !acc; + while true do + read_space v lexbuf; + read_array_sep v lexbuf; + read_space v lexbuf; + acc := read_json v lexbuf :: !acc; + done; + assert false + with End_of_array -> + `List (List.rev !acc) + } + + | '(' { + long_error "Invalid token" v lexbuf + } + + | '<' { + long_error "Invalid token" v lexbuf + } + + | "//"[^'\n']* { read_json v lexbuf } + | "/*" { finish_comment v lexbuf; read_json v lexbuf } + | "\n" { newline v lexbuf; read_json v lexbuf } + | space { read_json v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + | _ { long_error "Invalid token" v lexbuf } + + +and finish_string v = parse + '"' { Buffer.contents v.buf } + | '\\' { finish_escaped_char v lexbuf; + finish_string v lexbuf } + | [^ '"' '\\']+ { add_lexeme v.buf lexbuf; + finish_string v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and map_string v f = parse + '"' { let b = v.buf in + f (Buffer.contents b) 0 (Buffer.length b) } + | '\\' { finish_escaped_char v lexbuf; + map_string v f lexbuf } + | [^ '"' '\\']+ { add_lexeme v.buf lexbuf; + map_string v f lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_escaped_char v = parse + '"' + | '\\' + | '/' as c { Buffer.add_char v.buf c } + | 'b' { Buffer.add_char v.buf '\b' } + | 'f' { Buffer.add_char v.buf '\012' } + | 'n' { Buffer.add_char v.buf '\n' } + | 'r' { Buffer.add_char v.buf '\r' } + | 't' { Buffer.add_char v.buf '\t' } + | 'u' (hex as a) (hex as b) (hex as c) (hex as d) + { let x = + (hex a lsl 12) lor (hex b lsl 8) lor (hex c lsl 4) lor hex d + in + if x >= 0xD800 && x <= 0xDBFF then + finish_surrogate_pair v x lexbuf + else + Json_common.utf8_of_code v.buf x + } + | _ { long_error "Invalid escape sequence" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_surrogate_pair v x = parse + | "\\u" (hex as a) (hex as b) (hex as c) (hex as d) + { let y = + (hex a lsl 12) lor (hex b lsl 8) lor (hex c lsl 4) lor hex d + in + if y >= 0xDC00 && y <= 0xDFFF then + utf8_of_surrogate_pair v.buf x y + else + long_error "Invalid low surrogate for code point beyond U+FFFF" + v lexbuf + } + | _ { long_error "Missing escape sequence representing low surrogate \ + for code point beyond U+FFFF" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_stringlit v = parse + ( '\\' (['"' '\\' '/' 'b' 'f' 'n' 'r' 't'] | 'u' hex hex hex hex) + | [^'"' '\\'] )* '"' + { let len = lexbuf.lex_curr_pos - lexbuf.lex_start_pos in + let s = Bytes.create (len+1) in + Bytes.set s 0 '"'; + Bytes.blit lexbuf.lex_buffer lexbuf.lex_start_pos s 1 len; + Bytes.to_string s + } + | _ { long_error "Invalid string literal" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_variant v = parse + ':' { let x = read_json v lexbuf in + read_space v lexbuf; + read_gt v lexbuf; + Some x } + | '>' { None } + | _ { long_error "Expected ':' or '>' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_lt v = parse + '<' { () } + | _ { long_error "Expected '<' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_gt v = parse + '>' { () } + | _ { long_error "Expected '>' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_comma v = parse + ',' { () } + | _ { long_error "Expected ',' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and start_any_variant v = parse + '<' { `Edgy_bracket } + | '"' { Buffer.clear v.buf; + `Double_quote } + | '[' { `Square_bracket } + | _ { long_error "Expected '<', '\"' or '[' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_comment v = parse + | "*/" { () } + | eof { long_error "Unterminated comment" v lexbuf } + | '\n' { newline v lexbuf; finish_comment v lexbuf } + | _ { finish_comment v lexbuf } + + + + +(* Readers expecting a particular JSON construct *) + +and read_eof = parse + eof { true } + | "" { false } + +and read_space v = parse + | "//"[^'\n']* ('\n'|eof) { newline v lexbuf; read_space v lexbuf } + | "/*" { finish_comment v lexbuf; read_space v lexbuf } + | '\n' { newline v lexbuf; read_space v lexbuf } + | [' ' '\t' '\r']+ { read_space v lexbuf } + | "" { () } + +and read_null v = parse + "null" { () } + | _ { long_error "Expected 'null' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_null_if_possible v = parse + "null" { true } + | "" { false } + +and read_bool v = parse + "true" { true } + | "false" { false } + + (* tolerate booleans passed as strings without \u obfuscation *) + | "\"true\"" { true } + | "\"false\"" { false } + + | _ { long_error "Expected 'true' or 'false' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_int v = parse + positive_int { try extract_positive_int lexbuf + with Int_overflow -> + lexer_error "Int overflow" v lexbuf } + | '-' positive_int { try extract_negative_int lexbuf + with Int_overflow -> + lexer_error "Int overflow" v lexbuf } + | '"' { (* Support for double-quoted "ints" *) + Buffer.clear v.buf; + let s = finish_string v lexbuf in + try + (* Any OCaml-compliant int will pass, + including hexadecimal and octal notations, + and embedded underscores *) + int_of_string s + with _ -> + custom_error + "Expected an integer but found a string that \ + doesn't even represent an integer" + v lexbuf + } + | _ { long_error "Expected integer but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_int32 v = parse + '-'? positive_int { try Int32.of_string (Lexing.lexeme lexbuf) + with _ -> + lexer_error "Int32 overflow" v lexbuf } + | '"' { (* Support for double-quoted "ints" *) + Buffer.clear v.buf; + let s = finish_string v lexbuf in + try + (* Any OCaml-compliant int will pass, + including hexadecimal and octal notations, + and embedded underscores *) + Int32.of_string s + with _ -> + custom_error + "Expected an int32 but found a string that \ + doesn't even represent an integer" + v lexbuf + } + | _ { long_error "Expected int32 but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_int64 v = parse + '-'? positive_int { try Int64.of_string (Lexing.lexeme lexbuf) + with _ -> + lexer_error "Int32 overflow" v lexbuf } + | '"' { (* Support for double-quoted "ints" *) + Buffer.clear v.buf; + let s = finish_string v lexbuf in + try + (* Any OCaml-compliant int will pass, + including hexadecimal and octal notations, + and embedded underscores *) + Int64.of_string s + with _ -> + custom_error + "Expected an int64 but found a string that \ + doesn't even represent an integer" + v lexbuf + } + | _ { long_error "Expected int64 but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_number v = parse + | "NaN" { nan } + | "Infinity" { infinity } + | "-Infinity" { neg_infinity } + | number { float_of_string (lexeme lexbuf) } + | '"' { Buffer.clear v.buf; + let s = finish_string v lexbuf in + try + (* Any OCaml-compliant float will pass, + including hexadecimal and octal notations, + and embedded underscores. *) + float_of_string s + with _ -> + match s with + "NaN" -> nan + | "Infinity" -> infinity + | "-Infinity" -> neg_infinity + | _ -> + custom_error + "Expected a number but found a string that \ + doesn't even represent a number" + v lexbuf + } + | _ { long_error "Expected number but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_string v = parse + '"' { Buffer.clear v.buf; + finish_string v lexbuf } + | _ { long_error "Expected '\"' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_ident v = parse + '"' { Buffer.clear v.buf; + finish_string v lexbuf } + | ident as s + { s } + | _ { long_error "Expected string or identifier but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and map_ident v f = parse + '"' { Buffer.clear v.buf; + map_string v f lexbuf } + | ident + { map_lexeme f lexbuf } + | _ { long_error "Expected string or identifier but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_sequence read_cell init_acc v = parse + '[' { let acc = ref init_acc in + try + read_space v lexbuf; + read_array_end lexbuf; + acc := read_cell !acc v lexbuf; + while true do + read_space v lexbuf; + read_array_sep v lexbuf; + read_space v lexbuf; + acc := read_cell !acc v lexbuf; + done; + assert false + with End_of_array -> + !acc + } + | _ { long_error "Expected '[' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_list_rev read_cell v = parse + '[' { let acc = ref [] in + try + read_space v lexbuf; + read_array_end lexbuf; + acc := read_cell v lexbuf :: !acc; + while true do + read_space v lexbuf; + read_array_sep v lexbuf; + read_space v lexbuf; + acc := read_cell v lexbuf :: !acc; + done; + assert false + with End_of_array -> + !acc + } + | _ { long_error "Expected '[' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_array_end = parse + ']' { raise End_of_array } + | "" { () } + +and read_array_sep v = parse + ',' { () } + | ']' { raise End_of_array } + | _ { long_error "Expected ',' or ']' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + + +and read_tuple read_cell init_acc v = parse + '(' { + long_error "Invalid token" v lexbuf + } + | _ { long_error "Expected ')' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_tuple_end = parse + ')' { raise End_of_tuple } + | "" { () } + +and read_tuple_end2 v std = parse + ')' { if std then + long_error "Expected ')' or '' but found" v lexbuf + else + raise End_of_tuple } + | ']' { if std then + raise End_of_tuple + else + long_error "Expected ']' or '' but found" v lexbuf } + | "" { () } + +and read_tuple_sep v = parse + ',' { () } + | ')' { raise End_of_tuple } + | _ { long_error "Expected ',' or ')' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_tuple_sep2 v std = parse + ',' { () } + | ')' { if std then + long_error "Expected ',' or ']' but found" v lexbuf + else + raise End_of_tuple } + | ']' { if std then + raise End_of_tuple + else + long_error "Expected ',' or ')' but found" v lexbuf } + | _ { long_error "Expected ',' or ')' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +(* Read a JSON object, reading the keys using a custom parser *) +and read_abstract_fields read_key read_field init_acc v = parse + '{' { let acc = ref init_acc in + try + read_space v lexbuf; + read_object_end lexbuf; + let field_name = read_key v lexbuf in + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + acc := read_field !acc field_name v lexbuf; + while true do + read_space v lexbuf; + read_object_sep v lexbuf; + read_space v lexbuf; + let field_name = read_key v lexbuf in + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + acc := read_field !acc field_name v lexbuf; + done; + assert false + with End_of_object -> + !acc + } + | _ { long_error "Expected '{' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_lcurl v = parse + '{' { () } + | _ { long_error "Expected '{' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_object_end = parse + '}' { raise End_of_object } + | "" { () } + +and read_object_sep v = parse + ',' { () } + | '}' { raise End_of_object } + | _ { long_error "Expected ',' or '}' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_colon v = parse + ':' { () } + | _ { long_error "Expected ':' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and start_any_tuple v = parse + '(' { false } + | '[' { true } + | _ { long_error "Expected '(' or '[' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_lpar v = parse + '(' { () } + | _ { long_error "Expected '(' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_rpar v = parse + ')' { () } + | _ { long_error "Expected ')' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_lbr v = parse + '[' { () } + | _ { long_error "Expected '[' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and read_rbr v = parse + ']' { () } + | _ { long_error "Expected ']' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +(*** And now pretty much the same thing repeated, + only for the purpose of skipping ignored field values ***) + +and skip_json v = parse + | "true" { () } + | "false" { () } + | "null" { () } + | "NaN" { () } + | "Infinity" { () } + | "-Infinity" { () } + | '"' { finish_skip_stringlit v lexbuf } + | '-'? positive_int { () } + | float { () } + + | '{' { try + read_space v lexbuf; + read_object_end lexbuf; + skip_ident v lexbuf; + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + skip_json v lexbuf; + while true do + read_space v lexbuf; + read_object_sep v lexbuf; + read_space v lexbuf; + skip_ident v lexbuf; + read_space v lexbuf; + read_colon v lexbuf; + read_space v lexbuf; + skip_json v lexbuf; + done; + assert false + with End_of_object -> + () + } + + | '[' { try + read_space v lexbuf; + read_array_end lexbuf; + skip_json v lexbuf; + while true do + read_space v lexbuf; + read_array_sep v lexbuf; + read_space v lexbuf; + skip_json v lexbuf; + done; + assert false + with End_of_array -> + () + } + + | '(' { + long_error "Invalid token" v lexbuf + } + + | '<' { + long_error "Invalid token" v lexbuf + } + + | "//"[^'\n']* { skip_json v lexbuf } + | "/*" { finish_comment v lexbuf; skip_json v lexbuf } + | "\n" { newline v lexbuf; skip_json v lexbuf } + | space { skip_json v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + | _ { long_error "Invalid token" v lexbuf } + + +and finish_skip_stringlit v = parse + ( '\\' (['"' '\\' '/' 'b' 'f' 'n' 'r' 't'] | 'u' hex hex hex hex) + | [^'"' '\\'] )* '"' + { () } + | _ { long_error "Invalid string literal" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_skip_variant v = parse + ':' { skip_json v lexbuf; + read_space v lexbuf; + read_gt v lexbuf } + | '>' { () } + | _ { long_error "Expected ':' or '>' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and skip_ident v = parse + '"' { finish_skip_stringlit v lexbuf } + | ident { () } + | _ { long_error "Expected string or identifier but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +(*** And now pretty much the same thing repeated, + only for the purpose of buffering deferred field values ***) + +and buffer_json v = parse + | "true" + | "false" + | "null" + | "NaN" + | "Infinity" + | "-Infinity" + | '-'? positive_int + | float { add_lexeme v.buf lexbuf } + + | '"' { finish_buffer_stringlit v lexbuf } + | '{' { try + Buffer.add_char v.buf '{'; + buffer_space v lexbuf; + buffer_object_end v lexbuf; + buffer_ident v lexbuf; + buffer_space v lexbuf; + buffer_colon v lexbuf; + buffer_space v lexbuf; + buffer_json v lexbuf; + while true do + buffer_space v lexbuf; + buffer_object_sep v lexbuf; + buffer_space v lexbuf; + buffer_ident v lexbuf; + buffer_space v lexbuf; + buffer_colon v lexbuf; + buffer_space v lexbuf; + buffer_json v lexbuf; + done; + assert false + with End_of_object -> + () + } + + | '[' { try + Buffer.add_char v.buf '['; + buffer_space v lexbuf; + buffer_array_end v lexbuf; + buffer_json v lexbuf; + while true do + buffer_space v lexbuf; + buffer_array_sep v lexbuf; + buffer_space v lexbuf; + buffer_json v lexbuf; + done; + assert false + with End_of_array -> + () + } + + | '(' { + long_error "Invalid token" v lexbuf + } + + | '<' { + long_error "Invalid token" v lexbuf + } + + | "//"[^'\n']* { add_lexeme v.buf lexbuf; buffer_json v lexbuf } + | "/*" { Buffer.add_string v.buf "/*"; + finish_buffer_comment v lexbuf; + buffer_json v lexbuf } + | "\n" { Buffer.add_char v.buf '\n'; + newline v lexbuf; + buffer_json v lexbuf } + | space { add_lexeme v.buf lexbuf; buffer_json v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + | _ { long_error "Invalid token" v lexbuf } + + +and finish_buffer_stringlit v = parse + ( '\\' (['"' '\\' '/' 'b' 'f' 'n' 'r' 't'] | 'u' hex hex hex hex) + | [^'"' '\\'] )* '"' + { Buffer.add_char v.buf '"'; + add_lexeme v.buf lexbuf + } + | _ { long_error "Invalid string literal" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + + +and buffer_ident v = parse + '"' { finish_buffer_stringlit v lexbuf } + | ident { add_lexeme v.buf lexbuf } + | _ { long_error "Expected string or identifier but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and buffer_space v = parse + | "//"[^'\n']* ('\n'|eof) { + add_lexeme v.buf lexbuf; + newline v lexbuf; + buffer_space v lexbuf } + | "/*" { + Buffer.add_string v.buf "/*"; + finish_buffer_comment v lexbuf; + buffer_space v lexbuf } + | '\n' { + Buffer.add_char v.buf '\n'; + newline v lexbuf; + buffer_space v lexbuf } + | [' ' '\t' '\r']+ { + add_lexeme v.buf lexbuf; + buffer_space v lexbuf } + | "" { () } + +and buffer_object_end v = parse + '}' { + Buffer.add_char v.buf '}'; + raise End_of_object } + | "" { () } + +and buffer_object_sep v = parse + ',' { Buffer.add_char v.buf ',' } + | '}' { Buffer.add_char v.buf '}'; raise End_of_object } + | _ { long_error "Expected ',' or '}' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and buffer_array_end v = parse + ']' { Buffer.add_char v.buf ']'; raise End_of_array } + | "" { () } + +and buffer_array_sep v = parse + ',' { Buffer.add_char v.buf ',' } + | ']' { Buffer.add_char v.buf ']'; raise End_of_array } + | _ { long_error "Expected ',' or ']' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and buffer_colon v = parse + ':' { Buffer.add_char v.buf ':' } + | _ { long_error "Expected ':' but found" v lexbuf } + | eof { custom_error "Unexpected end of input" v lexbuf } + +and finish_buffer_comment v = parse + | "*/" { Buffer.add_string v.buf "*/" } + | eof { long_error "Unterminated comment" v lexbuf } + | '\n' { Buffer.add_char v.buf '\n'; + newline v lexbuf; + finish_buffer_comment v lexbuf } + | _ { add_lexeme v.buf lexbuf; finish_buffer_comment v lexbuf } + +and junk = parse + junk { Lexing.lexeme lexbuf } + +{ + let _ = (read_json : lexer_state -> Lexing.lexbuf -> t) + + let read_t = read_json + + let () = + read_junk := junk + + let read_int8 v lexbuf = + let n = read_int v lexbuf in + if n < 0 || n > 255 then + lexer_error "Int8 overflow" v lexbuf + else + char_of_int n + + let read_list read_cell v lexbuf = + List.rev (read_list_rev read_cell v lexbuf) + + let array_of_rev_list l = + match l with + [] -> [| |] + | x :: tl -> + let len = List.length l in + let a = Array.make len x in + let r = ref tl in + for i = len - 2 downto 0 do + a.(i) <- List.hd !r; + r := List.tl !r + done; + a + + let read_array read_cell v lexbuf = + let l = read_list_rev read_cell v lexbuf in + array_of_rev_list l + + (* Read a JSON object, reading the keys into OCaml strings + (provided for backward compatibility) *) + let read_fields read_field init_acc v = + read_abstract_fields read_ident read_field init_acc v + + let finish v lexbuf = + read_space v lexbuf; + if not (read_eof lexbuf) then + long_error "Junk after end of JSON value:" v lexbuf + + let init_lexer = init_lexer + + let from_lexbuf v ?(stream = false) lexbuf = + read_space v lexbuf; + + let x = + if read_eof lexbuf then + raise End_of_input + else + read_json v lexbuf + in + + if not stream then + finish v lexbuf; + + x + + + let from_string ?buf ?fname ?lnum s = + try + let lexbuf = Lexing.from_string s in + let v = init_lexer ?buf ?fname ?lnum () in + from_lexbuf v lexbuf + with End_of_input -> + json_error "Blank input data" + + let from_channel ?buf ?fname ?lnum ic = + try + let lexbuf = Lexing.from_channel ic in + let v = init_lexer ?buf ?fname ?lnum () in + from_lexbuf v lexbuf + with End_of_input -> + json_error "Blank input data" + + let from_file ?buf ?fname ?lnum file = + let ic = open_in file in + try + let x = from_channel ?buf ?fname ?lnum ic in + close_in ic; + x + with e -> + close_in_noerr ic; + raise e + + exception Finally of exn * exn + + let stream_from_lexbuf v ?(fin = fun () -> ()) lexbuf = + let stream = Some true in + let f _i = + try Some (from_lexbuf v ?stream lexbuf) + with + End_of_input -> + fin (); + None + | e -> + (try fin () with fin_e -> raise (Finally (e, fin_e))); + raise e + in + Stream.from f + + let stream_from_string ?buf ?fname ?lnum s = + let v = init_lexer ?buf ?fname ?lnum () in + stream_from_lexbuf v (Lexing.from_string s) + + let stream_from_channel ?buf ?fin ?fname ?lnum ic = + let lexbuf = Lexing.from_channel ic in + let v = init_lexer ?buf ?fname ?lnum () in + stream_from_lexbuf v ?fin lexbuf + + let stream_from_file ?buf ?fname ?lnum file = + let ic = open_in file in + let fin () = close_in ic in + let fname = + match fname with + None -> Some file + | x -> x + in + let lexbuf = Lexing.from_channel ic in + let v = init_lexer ?buf ?fname ?lnum () in + stream_from_lexbuf v ~fin lexbuf + + type json_line = [ `Json of t | `Exn of exn ] + + let linestream_from_channel + ?buf ?(fin = fun () -> ()) ?fname ?lnum:(lnum0 = 1) ic = + let buf = + match buf with + None -> Some (Buffer.create 256) + | Some _ -> buf + in + let f i = + try + let line = input_line ic in + let lnum = lnum0 + i in + Some (`Json (from_string ?buf ?fname ~lnum line)) + with + End_of_file -> fin (); None + | e -> Some (`Exn e) + in + Stream.from f + + let linestream_from_file ?buf ?fname ?lnum file = + let ic = open_in file in + let fin () = close_in ic in + let fname = + match fname with + None -> Some file + | x -> x + in + linestream_from_channel ?buf ~fin ?fname ?lnum ic + + let prettify ?std s = + Json_common.pretty_to_string ?std (from_string s) + + let compact ?std:_ s = + Json_common.pretty_to_string (from_string s) + + let validate_json _path _value = None +} diff --git a/src/json/json_type.ml b/src/json/json_type.ml new file mode 100644 index 00000000..aa94c4b4 --- /dev/null +++ b/src/json/json_type.ml @@ -0,0 +1,18 @@ +type t = + [ `Null + | `Bool of bool + | `Int of int + | `Float of float + | `String of string + | `Assoc of (string * t) list + | `List of t list ] + +(* Common *) +exception Json_error of string + +let json_error s = raise (Json_error s) + +exception End_of_array +exception End_of_object +exception End_of_tuple +exception End_of_input diff --git a/src/json/json_util.ml b/src/json/json_util.ml new file mode 100644 index 00000000..2436ac30 --- /dev/null +++ b/src/json/json_util.ml @@ -0,0 +1,141 @@ +open Json_type + +exception Type_error of string * t + +let typeof = function + | `Assoc _ -> "object" + | `Bool _ -> "bool" + | `Float _ -> "float" + | `Int _ -> "int" + | `List _ -> "array" + | `Null -> "null" + | `String _ -> "string" + +let typerr msg js = raise (Type_error (msg ^ typeof js, js)) + +exception Undefined of string * t + +let assoc name obj = try List.assoc name obj with Not_found -> `Null + +let member name = function + | `Assoc obj -> assoc name obj + | js -> typerr ("Can't get member '" ^ name ^ "' of non-object type ") js + +let index i = function + | `List l as js -> + let len = List.length l in + let wrapped_index = if i < 0 then len + i else i in + if wrapped_index < 0 || wrapped_index >= len then + raise (Undefined ("Index " ^ string_of_int i ^ " out of bounds", js)) + else List.nth l wrapped_index + | js -> + typerr ("Can't get index " ^ string_of_int i ^ " of non-array type ") js + +let map f = function + | `List l -> `List (List.map f l) + | js -> typerr "Can't map function over non-array type " js + +let to_assoc = function + | `Assoc obj -> obj + | js -> typerr "Expected object, got " js + +let to_option f = function `Null -> None | x -> Some (f x) +let to_bool = function `Bool b -> b | js -> typerr "Expected bool, got " js + +let to_bool_option = function + | `Bool b -> Some b + | `Null -> None + | js -> typerr "Expected bool or null, got " js + +let to_number = function + | `Int i -> float i + | `Float f -> f + | js -> typerr "Expected number, got " js + +let to_number_option = function + | `Int i -> Some (float i) + | `Float f -> Some f + | `Null -> None + | js -> typerr "Expected number or null, got " js + +let to_float = function `Float f -> f | js -> typerr "Expected float, got " js + +let to_float_option = function + | `Float f -> Some f + | `Null -> None + | js -> typerr "Expected float or null, got " js + +let to_int = function `Int i -> i | js -> typerr "Expected int, got " js + +let to_int_option = function + | `Int i -> Some i + | `Null -> None + | js -> typerr "Expected int or null, got " js + +let to_list = function `List l -> l | js -> typerr "Expected array, got " js + +let to_string = function + | `String s -> s + | js -> typerr "Expected string, got " js + +let to_string_option = function + | `String s -> Some s + | `Null -> None + | js -> typerr "Expected string or null, got " js + +let convert_each f = function + | `List l -> List.map f l + | js -> typerr "Can't convert each element of non-array type " js + +let rec rev_filter_map f acc l = + match l with + | [] -> acc + | x :: tl -> ( + match f x with + | None -> rev_filter_map f acc tl + | Some y -> rev_filter_map f (y :: acc) tl) + +let filter_map f l = List.rev (rev_filter_map f [] l) + +let rec rev_flatten acc l = + match l with + | [] -> acc + | x :: tl -> ( + match x with + | `List l2 -> rev_flatten (List.rev_append l2 acc) tl + | _ -> rev_flatten acc tl) + +let flatten l = List.rev (rev_flatten [] l) + +let filter_index i l = + filter_map + (function + | `List l -> ( try Some (List.nth l i) with _ -> None) | _ -> None) + l + +let filter_list l = filter_map (function `List l -> Some l | _ -> None) l + +let filter_member k l = + filter_map + (function + | `Assoc l -> ( try Some (List.assoc k l) with _ -> None) | _ -> None) + l + +let filter_assoc l = filter_map (function `Assoc l -> Some l | _ -> None) l +let filter_bool l = filter_map (function `Bool x -> Some x | _ -> None) l +let filter_int l = filter_map (function `Int x -> Some x | _ -> None) l +let filter_float l = filter_map (function `Float x -> Some x | _ -> None) l + +let filter_number l = + filter_map + (function `Int x -> Some (float x) | `Float x -> Some x | _ -> None) + l + +let filter_string l = filter_map (function `String x -> Some x | _ -> None) l +let keys o = to_assoc o |> List.map (fun (key, _) -> key) +let values o = to_assoc o |> List.map (fun (_, value) -> value) + +let combine (first : t) (second : t) = + match (first, second) with + | `Assoc a, `Assoc b -> (`Assoc (a @ b) : t) + | _a, _b -> raise (Invalid_argument "Expected two objects, check inputs") diff --git a/src/json/json_util.mli b/src/json/json_util.mli new file mode 100644 index 00000000..7691eb7e --- /dev/null +++ b/src/json/json_util.mli @@ -0,0 +1,198 @@ +open Json_type +(** + This module provides combinators for extracting fields from JSON + values. This approach is recommended for reading a few fields + from data returned by public APIs. However for more complex applications + we recommend {{:https://github.com/ahrefs/atd}Atdgen}. + + Here is some sample JSON data: +{v +{ + "id": "398eb027", + "name": "John Doe", + "pages": [ + { + "id": 1, + "title": "The Art of Flipping Coins", + "url": "http://example.com/398eb027/1" + }, + { + "id": 2, + "deleted": true + }, + { + "id": 3, + "title": "Artichoke Salad", + "url": "http://example.com/398eb027/3" + }, + { + "id": 4, + "title": "Flying Bananas", + "url": "http://example.com/398eb027/4" + } + ] +} +v} + + In order to extract the "id" field, assuming it is mandatory, + we would use the following OCaml code that operates on single JSON + nodes: +{v +open Json.Util +... + let id = json |> member "id" |> to_string in + ... +v} + + In order to extract all the "title" fields, we would write the following + OCaml code that operates on lists of JSON nodes, skipping + undefined nodes and nodes of unexpected type: +{v +open Json.Util + +let extract_titles (json : t) : string list = + [json] + |> filter_member "pages" + |> flatten + |> filter_member "title" + |> filter_string +v} +*) + +exception Type_error of string * t +(** Raised when the JSON value is not of the correct type to support an + operation, e.g. [member] on an [`Int]. The string message explains the + mismatch. *) + +exception Undefined of string * t +(** Raised when the equivalent JavaScript operation on the JSON value would + return undefined. Currently this only happens when an array index is out + of bounds. *) + +val keys : t -> string list +(** Returns all the key names in the given JSON object *) + +val values : t -> t list +(** Return all the value in the given JSON object *) + +val combine : t -> t -> t +(** Combine two JSON Objects together *) + +val member : string -> t -> t +(** [member k obj] returns the value associated with the key [k] in the JSON + object [obj], or [`Null] if [k] is not present in [obj]. *) + +val index : int -> t -> t +(** [index i arr] returns the value at index [i] in the JSON array [arr]. + Negative indices count from the end of the list (so -1 is the last + element). *) + +val map : (t -> t) -> t -> t +(** [map f arr] calls the function [f] on each element of the JSON array + [arr], and returns a JSON array containing the results. *) + +val to_assoc : t -> (string * t) list +(** Extract the items of a JSON object or raise [Type_error]. *) + +val to_option : (t -> 'a) -> t -> 'a option +(** Return [None] if the JSON value is null or map the JSON value + to [Some] value using the provided function. *) + +val to_bool : t -> bool +(** Extract a boolean value or raise [Type_error]. *) + +val to_bool_option : t -> bool option +(** Extract [Some] boolean value, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + +val to_number : t -> float +(** Extract a number or raise [Type_error]. *) + +val to_number_option : t -> float option +(** Extract [Some] number, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + +val to_float : t -> float +(** Extract a float value or raise [Type_error]. + [to_number] is generally preferred as it also works with int literals. *) + +val to_float_option : t -> float option +(** Extract [Some] float value, + return [None] if the value is null, + or raise [Type_error] otherwise. + [to_number_option] is generally preferred as it also works + with int literals. *) + +val to_int : t -> int +(** Extract an int from a JSON int or raise [Type_error]. *) + +val to_int_option : t -> int option +(** Extract [Some] int from a JSON int, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + +val to_list : t -> t list +(** Extract a list from JSON array or raise [Type_error]. *) + +val to_string : t -> string +(** Extract a string from a JSON string or raise [Type_error]. *) + +val to_string_option : t -> string option +(** Extract [Some] string from a JSON string, + return [None] if the value is null, + or raise [Type_error] otherwise. *) + +val convert_each : (t -> 'a) -> t -> 'a list +(** The conversion functions above cannot be used with [map], because they do + not return JSON values. This convenience function [convert_each to_f arr] + is equivalent to [List.map to_f (to_list arr)]. *) + +(** {3 Exception-free filters} *) + +(** + The following functions operate on lists of JSON nodes. + None of them raises an exception when a certain kind of node is expected + but no node or the wrong kind of node is found. + Instead of raising an exception, nodes that are not as expected + are simply ignored. +*) + +val filter_map : ('a -> 'b option) -> 'a list -> 'b list +(** [filter_map f l] maps each element of the list [l] to an optional value + using function [f] and unwraps the resulting values. *) + +val flatten : t list -> t list +(** Expects JSON arrays and returns all their elements as a single + list. [flatten l] is equivalent to [List.flatten (filter_list l)]. *) + +val filter_index : int -> t list -> t list +(** Expects JSON arrays and returns all their elements existing at the given + position. *) + +val filter_list : t list -> t list list +(** Expects JSON arrays and unwraps them. *) + +val filter_member : string -> t list -> t list +(** Expects JSON objects and returns all the fields of the given name + (at most one field per object). *) + +val filter_assoc : t list -> (string * t) list list +(** Expects JSON objects and unwraps them. *) + +val filter_bool : t list -> bool list +(** Expects JSON booleans and unwraps them. *) + +val filter_int : t list -> int list +(** Expects JSON integers ([`Int] nodes) and unwraps them. *) + +val filter_float : t list -> float list +(** Expects JSON floats ([`Float] nodes) and unwraps them. *) + +val filter_number : t list -> float list +(** Expects JSON numbers ([`Int] or [`Float]) and unwraps them. + Ints are converted to floats. *) + +val filter_string : t list -> string list +(** Expects JSON strings and unwraps them. *) diff --git a/src/json/json_write.ml b/src/json/json_write.ml new file mode 100644 index 00000000..3abc2db8 --- /dev/null +++ b/src/json/json_write.ml @@ -0,0 +1,366 @@ +open Json_type + +(* Write *) +let hex n = Char.chr (if n < 10 then n + 48 else n + 87) + +let write_special src start stop ob str = + Buffer.add_substring ob src !start (stop - !start); + Buffer.add_string ob str; + start := stop + 1 + +let write_control_char src start stop ob c = + Buffer.add_substring ob src !start (stop - !start); + Buffer.add_string ob "\\u00"; + Buffer.add_char ob (hex (Char.code c lsr 4)); + Buffer.add_char ob (hex (Char.code c land 0xf)); + start := stop + 1 + +let finish_string src start ob = + try Buffer.add_substring ob src !start (String.length src - !start) + with exc -> + Printf.eprintf "src=%S start=%i len=%i\n%!" src !start + (String.length src - !start); + raise exc + +let write_string_body ob s = + let start = ref 0 in + for i = 0 to String.length s - 1 do + match s.[i] with + | '"' -> write_special s start i ob "\\\"" + | '\\' -> write_special s start i ob "\\\\" + | '\b' -> write_special s start i ob "\\b" + | '\012' -> write_special s start i ob "\\f" + | '\n' -> write_special s start i ob "\\n" + | '\r' -> write_special s start i ob "\\r" + | '\t' -> write_special s start i ob "\\t" + | ('\x00' .. '\x1F' | '\x7F') as c -> write_control_char s start i ob c + | _ -> () + done; + finish_string s start ob + +let write_string ob s = + Buffer.add_char ob '"'; + write_string_body ob s; + Buffer.add_char ob '"' + +let json_string_of_string s = + let ob = Buffer.create 10 in + write_string ob s; + Buffer.contents ob + +let test_string () = + let s = Bytes.create 256 in + for i = 0 to 255 do + Bytes.set s i (Char.chr i) + done; + json_string_of_string (Bytes.to_string s) + +let write_null ob () = Buffer.add_string ob "null" +let write_bool ob x = Buffer.add_string ob (if x then "true" else "false") + +let max_digits = + max + (String.length (string_of_int max_int)) + (String.length (string_of_int min_int)) + +let dec n = Char.chr (n + 48) + +let rec write_digits s x = + if x = 0 then () + else + let d = x mod 10 in + write_digits s (x / 10); + Buffer.add_char s (dec (abs d)) + +let write_int ob x = + if x > 0 then write_digits ob x + else if x < 0 then ( + Buffer.add_char ob '-'; + write_digits ob x) + else Buffer.add_char ob '0' + +let json_string_of_int i = string_of_int i + +(* + Ensure that the float is not printed as an int. + This is not required by JSON, but useful in order to guarantee + reversibility. + *) +let float_needs_period s = + try + for i = 0 to String.length s - 1 do + match s.[i] with '0' .. '9' | '-' -> () | _ -> raise Exit + done; + true + with Exit -> false + +(* + Both write_float_fast and write_float guarantee + that a sufficient number of digits are printed in order to + allow reversibility. + + The _fast version is faster but often produces unnecessarily long numbers. + *) +let write_float_fast ob x = + match classify_float x with + | FP_nan -> Buffer.add_string ob "NaN" + | FP_infinite -> + Buffer.add_string ob (if x > 0. then "Infinity" else "-Infinity") + | _ -> + let s = Printf.sprintf "%.17g" x in + Buffer.add_string ob s; + if float_needs_period s then Buffer.add_string ob ".0" + +let write_float ob x = + match classify_float x with + | FP_nan -> Buffer.add_string ob "NaN" + | FP_infinite -> + Buffer.add_string ob (if x > 0. then "Infinity" else "-Infinity") + | _ -> + let s1 = Printf.sprintf "%.16g" x in + let s = if float_of_string s1 = x then s1 else Printf.sprintf "%.17g" x in + Buffer.add_string ob s; + if float_needs_period s then Buffer.add_string ob ".0" + +let write_normal_float_prec significant_figures ob x = + let open Printf in + let s = + match significant_figures with + | 1 -> sprintf "%.1g" x + | 2 -> sprintf "%.2g" x + | 3 -> sprintf "%.3g" x + | 4 -> sprintf "%.4g" x + | 5 -> sprintf "%.5g" x + | 6 -> sprintf "%.6g" x + | 7 -> sprintf "%.7g" x + | 8 -> sprintf "%.8g" x + | 9 -> sprintf "%.9g" x + | 10 -> sprintf "%.10g" x + | 11 -> sprintf "%.11g" x + | 12 -> sprintf "%.12g" x + | 13 -> sprintf "%.13g" x + | 14 -> sprintf "%.14g" x + | 15 -> sprintf "%.15g" x + | 16 -> sprintf "%.16g" x + | _ -> sprintf "%.17g" x + in + Buffer.add_string ob s; + if float_needs_period s then Buffer.add_string ob ".0" + +let write_float_prec significant_figures ob x = + match classify_float x with + | FP_nan -> Buffer.add_string ob "NaN" + | FP_infinite -> + Buffer.add_string ob (if x > 0. then "Infinity" else "-Infinity") + | _ -> write_normal_float_prec significant_figures ob x + +let json_string_of_float x = + let ob = Buffer.create 20 in + write_float ob x; + Buffer.contents ob + +let write_std_float_fast ob x = + match classify_float x with + | FP_nan -> json_error "NaN value not allowed in standard JSON" + | FP_infinite -> + json_error + (if x > 0. then "Infinity value not allowed in standard JSON" + else "-Infinity value not allowed in standard JSON") + | _ -> + let s = Printf.sprintf "%.17g" x in + Buffer.add_string ob s; + if float_needs_period s then Buffer.add_string ob ".0" + +let write_std_float ob x = + match classify_float x with + | FP_nan -> json_error "NaN value not allowed in standard JSON" + | FP_infinite -> + json_error + (if x > 0. then "Infinity value not allowed in standard JSON" + else "-Infinity value not allowed in standard JSON") + | _ -> + let s1 = Printf.sprintf "%.16g" x in + let s = if float_of_string s1 = x then s1 else Printf.sprintf "%.17g" x in + Buffer.add_string ob s; + if float_needs_period s then Buffer.add_string ob ".0" + +let write_std_float_prec significant_figures ob x = + match classify_float x with + | FP_nan -> json_error "NaN value not allowed in standard JSON" + | FP_infinite -> + json_error + (if x > 0. then "Infinity value not allowed in standard JSON" + else "-Infinity value not allowed in standard JSON") + | _ -> write_normal_float_prec significant_figures ob x + +let std_json_string_of_float x = + let ob = Buffer.create 20 in + write_std_float ob x; + Buffer.contents ob + +let test_float () = + let l = [ 0.; 1.; -1. ] in + let l = l @ List.map (fun x -> (2. *. x) +. 1.) l in + let l = l @ List.map (fun x -> x /. sqrt 2.) l in + let l = l @ List.map (fun x -> x *. sqrt 3.) l in + let l = l @ List.map cos l in + let l = l @ List.map (fun x -> x *. 1.23e50) l in + let l = l @ [ infinity; neg_infinity ] in + List.iter + (fun x -> + let s = Printf.sprintf "%.17g" x in + let y = float_of_string s in + Printf.printf "%g %g %S %B\n" x y s (x = y)) + l + +(* + let () = test_float () + *) + +let write_intlit = Buffer.add_string +let write_floatlit = Buffer.add_string +let write_stringlit = Buffer.add_string + +let rec iter2_aux f_elt f_sep x = function + | [] -> () + | y :: l -> + f_sep x; + f_elt x y; + iter2_aux f_elt f_sep x l + +let iter2 f_elt f_sep x = function + | [] -> () + | y :: l -> + f_elt x y; + iter2_aux f_elt f_sep x l + +let f_sep ob = Buffer.add_char ob ',' + +let rec write_json ob (x : t) = + match x with + | `Null -> write_null ob () + | `Bool b -> write_bool ob b + | `Int i -> write_int ob i + | `Float f -> write_float ob f + | `String s -> write_string ob s + | `Assoc l -> write_assoc ob l + | `List l -> write_list ob l + +and write_assoc ob l = + let f_elt ob (s, x) = + write_string ob s; + Buffer.add_char ob ':'; + write_json ob x + in + Buffer.add_char ob '{'; + iter2 f_elt f_sep ob l; + Buffer.add_char ob '}' + +and write_list ob l = + Buffer.add_char ob '['; + iter2 write_json f_sep ob l; + Buffer.add_char ob ']' + +let write_t = write_json + +let rec write_std_json ob (x : t) = + match x with + | `Null -> write_null ob () + | `Bool b -> write_bool ob b + | `Int i -> write_int ob i + | `Float f -> write_std_float ob f + | `String s -> write_string ob s + | `Assoc l -> write_std_assoc ob l + | `List l -> write_std_list ob l + +and write_std_assoc ob l = + let f_elt ob (s, x) = + write_string ob s; + Buffer.add_char ob ':'; + write_std_json ob x + in + Buffer.add_char ob '{'; + iter2 f_elt f_sep ob l; + Buffer.add_char ob '}' + +and write_std_list ob l = + Buffer.add_char ob '['; + iter2 write_std_json f_sep ob l; + Buffer.add_char ob ']' + +and write_std_tuple ob l = + Buffer.add_char ob '['; + iter2 write_std_json f_sep ob l; + Buffer.add_char ob ']' + +let to_buffer ?(std = false) ob x = + if std then write_std_json ob x else write_json ob x + +let to_string ?buf ?(len = 256) ?std x = + let ob = + match buf with + | None -> Buffer.create len + | Some ob -> + Buffer.clear ob; + ob + in + to_buffer ?std ob x; + let s = Buffer.contents ob in + Buffer.clear ob; + s + +let to_channel ?buf ?(len = 4096) ?std oc x = + let ob = match buf with None -> Buffer.create len | Some ob -> ob in + to_buffer ?std ob x; + Buffer.output_buffer oc ob + +let to_output ?buf ?(len = 4096) ?std out x = + let ob = match buf with None -> Buffer.create len | Some ob -> ob in + to_buffer ?std ob x; + out#output (Buffer.contents ob) 0 (Buffer.length ob); + () + +let to_file ?len ?std ?(newline = true) file x = + let oc = open_out file in + try + to_channel ?len ?std oc x; + if newline then output_string oc "\n"; + close_out oc + with e -> + close_out_noerr oc; + raise e + +let stream_to_buffer ?std ob st = Stream.iter (to_buffer ?std ob) st + +let stream_to_string ?buf ?(len = 256) ?std st = + let ob = + match buf with + | None -> Buffer.create len + | Some ob -> + Buffer.clear ob; + ob + in + stream_to_buffer ?std ob st; + let s = Buffer.contents ob in + Buffer.clear ob; + s + +let stream_to_channel ?buf ?(len = 2096) ?std st = + let ob = match buf with None -> Buffer.create len | Some ob -> ob in + stream_to_buffer ?std ob st + +let stream_to_file ?len ?std file st = + let oc = open_out file in + try + stream_to_channel ?len ?std st; + close_out oc + with e -> + close_out_noerr oc; + raise e + +let rec sort = function + | `Assoc l -> + let l = List.rev (List.rev_map (fun (k, v) -> (k, sort v)) l) in + `Assoc (List.stable_sort (fun (a, _) (b, _) -> String.compare a b) l) + | `List l -> `List (List.rev (List.rev_map sort l)) + | x -> x diff --git a/src/bucklescript/dune b/src/ppx/dune similarity index 78% rename from src/bucklescript/dune rename to src/ppx/dune index 99194260..5a8c7908 100644 --- a/src/bucklescript/dune +++ b/src/ppx/dune @@ -3,7 +3,7 @@ (public_name graphql_ppx) (kind ppx_rewriter) (ppx_runtime_libraries graphql_ppx.graphql_ppx_runtime) - (libraries reason graphql_ppx.base ppxlib) + (libraries graphql_ppx.graphql_compiler ppxlib json) (flags (:standard -w -9)) (preprocess diff --git a/src/ppx/graphql_ppx.ml b/src/ppx/graphql_ppx.ml new file mode 100644 index 00000000..38c58fcd --- /dev/null +++ b/src/ppx/graphql_ppx.ml @@ -0,0 +1,1105 @@ +open Graphql_compiler +open Source_pos +open Output_utils +open Ppxlib + +let filter_map f = + let rec aux accu = function + | [] -> List.rev accu + | x :: l -> ( + match f x with None -> aux accu l | Some v -> aux (v :: accu) l) + in + aux [] + +let add_loc delimLength base span = + let _, _, col = Ocaml_common.Location.get_pos_info base.loc_start in + let pos_bol_start = + base.loc_start.pos_bol + col + delimLength + (fst span).index + - (fst span).col + in + let pos_bol_end = + base.loc_start.pos_bol + col + delimLength + (snd span).index + - (snd span).col + in + let start = pos_bol_start + (fst span).col in + let end_ = pos_bol_end + (snd span).col in + { + loc_start = + { + pos_fname = base.loc_start.pos_fname; + pos_lnum = base.loc_start.pos_lnum + (fst span).line; + pos_bol = pos_bol_start; + pos_cnum = start; + }; + loc_end = + { + pos_fname = base.loc_start.pos_fname; + pos_lnum = base.loc_start.pos_lnum + (snd span).line; + pos_bol = pos_bol_end; + pos_cnum = end_; + }; + loc_ghost = false; + } + +let fmt_lex_err err = + let open Graphql_lexer in + match err with + | Unknown_character ch -> Printf.sprintf "Unknown character %c" ch + | Unexpected_character ch -> Printf.sprintf "Unexpected character %c" ch + | Unterminated_string -> Printf.sprintf "Unterminated string literal" + | Unknown_character_in_string ch -> + Printf.sprintf "Unknown character in string literal: %c" ch + | Unknown_escape_sequence s -> + Printf.sprintf "Unknown escape sequence in string literal: %s" s + | Unexpected_end_of_file -> Printf.sprintf "Unexpected end of query" + | Invalid_number -> Printf.sprintf "Invalid number" + +let fmt_parse_err err = + let open Graphql_parser in + match err with + | Unexpected_token t -> + Printf.sprintf "Unexpected token %s" (Graphql_lexer.string_of_token t) + | Unexpected_end_of_file -> "Unexpected end of query" + | Lexer_error err -> fmt_lex_err err + +let make_error_expr loc message = + let error = Ocaml_common.Location.error ~loc message in + let ext = Ocaml_common.Ast_mapper.extension_of_error error in + let extension = Ocaml_common.Ast_helper.Exp.extension ~loc ext in + To_ppxlib.copy_expression extension + +let extract_schema_from_config config_fields = + let open Asttypes in + let open Parsetree in + let maybe_schema_field = + try + Some + (List.find + (fun config_field -> + match config_field with + | ( { txt = Longident.Lident "schema"; _ }, + { pexp_desc = Pexp_constant (Pconst_string (_, _, _)); _ } ) -> + true + | _ -> false) + config_fields) + with _ -> None + in + match maybe_schema_field with + | Some + (_, { pexp_desc = Pexp_constant (Pconst_string (schema_name, _, _)); _ }) + -> + Some schema_name + | _ -> None + +let extract_template_tag_from_config config_fields = + let open Asttypes in + let open Parsetree in + let maybe_template_tag_field = + try + Some + (List.find + (fun config_field -> + match config_field with + | ( { txt = Longident.Lident "templateTag"; _ }, + { pexp_desc = Pexp_constant (Pconst_string (_, _, _)); _ } ) + | ( { txt = Longident.Lident "templateTag"; _ }, + { pexp_desc = Pexp_ident { txt = _ }; _ } ) -> + true + | _ -> false) + config_fields) + with _ -> None + in + match maybe_template_tag_field with + | Some (_, { pexp_desc = Pexp_constant (Pconst_string (template_tag, _, _)) }) + -> + Some template_tag + | Some (_, { pexp_desc = Pexp_ident { txt = lident } }) -> + Some + (Ocaml_common.Longident.flatten lident + |> List.fold_left + (fun acc elem -> if acc = "" then elem else acc ^ "." ^ elem) + "") + | _ -> None + +let extract_bool_from_config name config_fields = + let open Asttypes in + let open Parsetree in + let maybe_field_value = + try + Some + (List.find + (fun config_field -> + match config_field with + | ( { txt = Longident.Lident matched_name; _ }, + { + pexp_desc = + Pexp_construct ({ txt = Longident.Lident _value }, _); + _; + } ) + when matched_name = name -> + true + | _ -> false) + config_fields) + with _ -> None + in + match maybe_field_value with + | Some + ( _, + { pexp_desc = Pexp_construct ({ txt = Longident.Lident value }, _); _ } + ) -> ( + match value with "true" -> Some true | "false" -> Some false | _ -> None) + | _ -> None + +let extract_string_from_config name config_fields = + let open Asttypes in + let open Parsetree in + let maybe_string_field = + try + Some + (List.find + (fun config_field -> + match config_field with + | ( { txt = Longident.Lident matched_name; _ }, + { pexp_desc = Pexp_constant (Pconst_string (_, _, _)); _ } ) + when matched_name = name -> + true + | _ -> false) + config_fields) + with _ -> None + in + match maybe_string_field with + | Some (_, { pexp_desc = Pexp_constant (Pconst_string (value, _, _)); _ }) -> + Some value + | _ -> None + +let extract_template_tag_location_from_config = + extract_string_from_config "templateTagLocation" + +let extract_template_tag_import_from_config = + extract_string_from_config "templateTagImport" + +let extract_template_tag_return_type_from_config = + extract_string_from_config "templateTagReturnType" + +let extract_extend_from_config = extract_string_from_config "extend" + +let extract_fragment_in_query_from_config config_fields = + let open Ppx_config in + match extract_string_from_config "fragmentInQuery" config_fields with + | Some "include" -> Some Include + | Some "exclude" -> Some Exclude + | _ -> None + +let extract_records_from_config = extract_bool_from_config "records" +let extract_objects_from_config = extract_bool_from_config "objects" +let extract_inline_from_config = extract_bool_from_config "inline" +let extract_apollo_mode_from_config = extract_bool_from_config "apolloMode" + +let extract_future_added_value_from_config = + extract_bool_from_config "futureAddedValue" + +let extract_tagged_template_config = extract_bool_from_config "taggedTemplate" + +type query_config = Result_decoder.query_config + +let get_query_config_from_trailing_record fields = + let open Result_decoder in + { + schema = extract_schema_from_config fields; + records = extract_records_from_config fields; + objects = extract_objects_from_config fields; + inline = extract_inline_from_config fields; + template_tag = extract_template_tag_from_config fields; + template_tag_import = extract_template_tag_import_from_config fields; + template_tag_location = extract_template_tag_location_from_config fields; + template_tag_return_type = + extract_template_tag_return_type_from_config fields; + tagged_template = extract_tagged_template_config fields; + future_added_value = extract_future_added_value_from_config fields; + extend = extract_extend_from_config fields; + fragment_in_query = extract_fragment_in_query_from_config fields; + apollo_mode = extract_apollo_mode_from_config fields; + template_tag_is_function = None; + } + +let empty_query_config = + let open Result_decoder in + { + schema = None; + records = None; + objects = None; + inline = None; + tagged_template = None; + template_tag = None; + template_tag_location = None; + template_tag_import = None; + template_tag_return_type = None; + template_tag_is_function = None; + future_added_value = None; + extend = None; + fragment_in_query = None; + apollo_mode = None; + } + +let get_with_default value default_value = + match value with Some value -> Some value | None -> default_value + +let run_validations config definition = + match Validations.run_validators config [ definition ] with + | Some errs, _ -> + Some + (errs |> List.rev + |> List.map (fun (loc, msg) -> + let loc = conv_loc loc in + [%stri [%e make_error_expr loc msg]])) + | None, warnings -> + warnings + |> List.iter (fun (loc, message) -> + let loc = conv_loc loc in + Ocaml_common.Location.print_warning loc + !Ocaml_common.Location.formatter_for_warnings + (Ocaml_common.Warnings.Preprocessor message)); + None + +let rewrite_definition_interface ~(query_config : query_config) ~loc ~delim + ~query ~module_name () = + let lexer = Graphql_lexer.make query in + let delimLength = + match delim with Some s -> 2 + String.length s | None -> 1 + in + match Graphql_lexer.consume lexer with + | Result.Error e -> + Location.raise_errorf + ~loc:(add_loc delimLength loc e.span) + "%s" (fmt_lex_err e.item) + | Result.Ok tokens -> ( + let parser = Graphql_parser.make tokens in + match Graphql_parser_document.parse_document parser with + | Result.Error e -> + Location.raise_errorf + ~loc:(add_loc delimLength loc e.span) + "%s" (fmt_parse_err e.item) + | Result.Ok document -> + let document_with_config = + Result_decoder.generate_config ~json_read_fn:Json.Read.from_file + ~map_loc:(fun source_pos -> + conv_loc_from_ast (add_loc delimLength loc source_pos)) + ~delimiter:delim ~initial_query_config:query_config document + in + document_with_config |> Result_decoder.unify_document_schema + |> Output_module.generate_module_interfaces module_name) + +let rewrite_definition ~(query_config : query_config) ~loc ~delim ~query + ~module_name ~module_type () = + let lexer = Graphql_lexer.make query in + let delimLength = + match delim with Some s -> 2 + String.length s | None -> 1 + in + match Graphql_lexer.consume lexer with + | Result.Error e -> + Location.raise_errorf + ~loc:(add_loc delimLength loc e.span) + "%s" (fmt_lex_err e.item) + | Result.Ok tokens -> ( + let parser = Graphql_parser.make tokens in + match Graphql_parser_document.parse_document parser with + | Result.Error e -> + Location.raise_errorf + ~loc:(add_loc delimLength loc e.span) + "%s" (fmt_parse_err e.item) + | Result.Ok document -> ( + let document_with_config = + Result_decoder.generate_config ~json_read_fn:Json.Read.from_file + ~map_loc:(fun source_pos -> + conv_loc_from_ast (add_loc delimLength loc source_pos)) + ~delimiter:delim ~initial_query_config:query_config document + in + let errors = + document_with_config + |> List.fold_left + (fun acc (definition, config) -> + match run_validations config definition with + | Some error -> error :: acc + | None -> acc) + [] + |> List.rev + in + match errors with + | [] -> ( + try + document_with_config |> Result_decoder.unify_document_schema + |> Output_module.generate_modules module_name module_type + with + | Output_module.Cant_find_fragment_type_with_loc + (location, fragment_type) + -> + [ + [%stri + [%e + make_error_expr + (Output_utils.conv_loc location) + ("Can't find fragment type: " ^ fragment_type)]]; + ]) + | errors -> errors |> List.concat)) +;; + +Rescript_config.read_config () + +let get_module_bindings structure = + structure + |> filter_map (function + | { Parsetree.pstr_desc = Pstr_module module_binding } -> + Some module_binding + | _ -> None) + +let get_module_declarations signature = + signature + |> filter_map (function + | { Parsetree.psig_desc = Psig_module module_declaration } -> + Some module_declaration + | _ -> None) + +class mapper = + object (self) + inherit Ast_traverse.map as super + + method! signature sign = + sign + |> List.fold_left + (fun acc item -> + match item with + | { + psig_desc = + Psig_module + { + pmd_name = { txt = module_name }; + pmd_type = + { + pmty_desc = + Pmty_extension ({ txt = "graphql"; loc }, pstr); + }; + }; + } -> ( + match pstr with + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant (Pconst_string (query, _, delim)); + _; + }, + _ ); + _; + }; + ] -> + List.append + (rewrite_definition_interface + ~query_config:empty_query_config ~loc ~delim ~query + ~module_name () + |> List.rev) + acc + | _ -> + Location.raise_errorf ~loc + "[%%graphql] accepts a string, e.g. [%%graphql {| { query \ + |}]") + | { psig_desc = Psig_recmodule module_declarations } as pstr -> + { + pstr with + psig_desc = + Psig_recmodule + (module_declarations + |> List.fold_left + (fun acc -> function + | { + pmd_name = { txt = name }; + pmd_type = + { + pmty_desc = + Pmty_extension + ({ txt = "graphql"; loc }, pstr); + }; + } + | { + pmd_name = { txt = name }; + pmd_type = + { + pmty_desc = + Pmty_extension ({ txt = "gql"; loc }, pstr); + }; + } -> ( + match pstr with + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant + (Pconst_string + (query, _, delim)); + _; + }, + _ ); + _; + }; + ] -> + List.append + (get_module_declarations + (rewrite_definition_interface + ~query_config:empty_query_config ~loc + ~delim ~query ~module_name:name ()) + |> List.rev) + acc + | _ -> + Location.raise_errorf ~loc + "[%%graphql] accepts a string, e.g. \ + [%%graphql {| { query |}]") + | other -> other :: acc) + [] + |> List.rev); + } + :: acc + | other -> super#signature_item other :: acc) + [] + |> List.rev + + method! structure struc = + struc + |> List.fold_left + (fun acc -> function + | ({ + pstr_desc = + Pstr_module + { + pmb_name = { txt = _ }; + pmb_expr = + { + pmod_desc = + Pmod_extension ({ txt = "graphql"; loc }, pstr); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_module + { + pmb_name = { txt = _ }; + pmb_expr = + { + pmod_desc = + Pmod_extension ({ txt = "gql"; loc }, pstr); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_module + { + pmb_name = { txt = _ }; + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( { + pmod_desc = + Pmod_extension + ({ txt = "graphql"; loc }, pstr); + _; + }, + _ ); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_module + { + pmb_name = { txt = _ }; + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( { + pmod_desc = + Pmod_extension ({ txt = "gql"; loc }, pstr); + _; + }, + _ ); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_eval + ( { + pexp_desc = + Pexp_extension ({ txt = "graphql"; loc }, pstr); + }, + _ ); + } as item) + | ({ + pstr_desc = + Pstr_eval + ( { + pexp_desc = Pexp_extension ({ txt = "gql"; loc }, pstr); + }, + _ ); + } as item) + | ({ + pstr_desc = + Pstr_include + { + pincl_mod = + { + pmod_desc = + Pmod_extension ({ txt = "graphql"; loc }, pstr); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_include + { + pincl_mod = + { + pmod_desc = + Pmod_extension ({ txt = "gql"; loc }, pstr); + }; + }; + } as item) + | ({ + pstr_desc = + Pstr_value + ( _, + [ + { + pvb_pat = { ppat_desc = _ }; + pvb_expr = + { + pexp_desc = + Pexp_extension ({ txt = "graphql"; loc }, pstr); + }; + }; + ] ); + } as item) + | ({ + pstr_desc = + Pstr_value + ( _, + [ + { + pvb_pat = { ppat_desc = _ }; + pvb_expr = + { + pexp_desc = + Pexp_extension ({ txt = "gql"; loc }, pstr); + }; + }; + ] ); + } as item) -> ( + let inline = + match item with + | { pstr_desc = Pstr_include _ } -> Some true + | _ -> None + in + let module_name = + match item with + | { pstr_desc = Pstr_module { pmb_name = { txt = name } } } -> + name + | _ -> None + in + let module_type = + match item with + | { + pstr_desc = + Pstr_module + { + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( _, + { + pmty_loc; + pmty_attributes; + pmty_desc = + Pmty_extension + ( { txt = "graphql"; _ }, + PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant + (Pconst_string + ( query, + _, + delim )); + _; + }, + _ ); + _; + }; + ] ); + } ); + }; + _; + }; + } + | { + pstr_desc = + Pstr_module + { + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( _, + { + pmty_loc; + pmty_attributes; + pmty_desc = + Pmty_extension + ( { txt = "gql"; _ }, + PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant + (Pconst_string + ( query, + _, + delim )); + _; + }, + _ ); + _; + }; + ] ); + } ); + }; + _; + }; + } -> + Some + { + pmty_loc; + pmty_attributes; + pmty_desc = + Pmty_signature + (rewrite_definition_interface + ~query_config:empty_query_config ~loc ~delim + ~query ~module_name:None ()); + } + | { + pstr_desc = + Pstr_module + { + pmb_expr = + { pmod_desc = Pmod_constraint (_, module_type) }; + _; + }; + } -> + Some module_type + | _ -> None + in + match pstr with + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant (Pconst_string (query, _, delim)); + _; + }, + _ ); + _; + }; + { + pstr_desc = + Pstr_eval + ({ pexp_desc = Pexp_record (fields, None); _ }, _); + _; + }; + ] -> + let query_config = + get_query_config_from_trailing_record fields + in + List.append + (rewrite_definition + ~query_config: + { + query_config with + inline = + (match inline with + | None -> query_config.inline + | Some inline -> Some inline); + } + ~loc ~delim ~query ~module_name ~module_type () + |> List.rev) + acc + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant (Pconst_string (query, _, delim)); + _; + }, + _ ); + _; + }; + ] -> + List.append + (rewrite_definition + ~query_config:{ empty_query_config with inline } + ~loc ~delim ~query ~module_name ~module_type () + |> List.rev) + acc + | _ -> + Location.raise_errorf ~loc + "[%%graphql] accepts a string, e.g. [%%graphql {| { query \ + |}]") + | { pstr_desc = Pstr_recmodule module_bindings } as pstr -> + { + pstr with + pstr_desc = + Pstr_recmodule + (module_bindings + |> List.fold_left + (fun acc -> function + | { + pmb_name = { txt = name }; + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( { + pmod_desc = + Pmod_extension + ({ txt = "graphql"; loc }, pstr); + _; + }, + _ ); + } as module_expr; + } + | { + pmb_name = { txt = name }; + pmb_expr = + { + pmod_desc = + Pmod_constraint + ( { + pmod_desc = + Pmod_extension + ({ txt = "gql"; loc }, pstr); + _; + }, + _ ); + } as module_expr; + } + | { + pmb_name = { txt = name }; + pmb_expr = + { + pmod_desc = + Pmod_extension + ({ txt = "graphql"; loc }, pstr); + } as module_expr; + } + | { + pmb_name = { txt = name }; + pmb_expr = + { + pmod_desc = + Pmod_extension ({ txt = "gql"; loc }, pstr); + } as module_expr; + } -> ( + let module_name = name in + let module_type = + match module_expr with + | { + pmod_desc = + Pmod_constraint + ( _, + { + pmty_desc = Pmty_signature signature; + pmty_loc; + pmty_attributes; + } ); + } -> + Some + { + pmty_desc = + Pmty_signature + (self#signature signature); + pmty_loc; + pmty_attributes; + } + | { + pmod_desc = Pmod_constraint (_, module_type); + } -> + Some module_type + | _ -> None + in + match pstr with + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant + (Pconst_string + (query, _, delim)); + _; + }, + _ ); + _; + }; + { + pstr_desc = + Pstr_eval + ( { + pexp_desc = + Pexp_record (fields, None); + _; + }, + _ ); + _; + }; + ] -> + List.append + (get_module_bindings + (rewrite_definition + ~query_config: + (get_query_config_from_trailing_record + fields) + ~loc ~delim ~query ~module_name + ~module_type ()) + |> List.rev) + acc + | PStr + [ + { + pstr_desc = + Pstr_eval + ( { + pexp_loc = loc; + pexp_desc = + Pexp_constant + (Pconst_string + (query, _, delim)); + _; + }, + _ ); + _; + }; + ] -> + List.append + (get_module_bindings + (rewrite_definition + ~query_config:empty_query_config ~loc + ~delim ~query ~module_name ~module_type + ()) + |> List.rev) + acc + | _ -> + Location.raise_errorf ~loc + "[%%graphql] accepts a string, e.g. \ + [%%graphql {| { query |}]") + | other -> other :: acc) + [] + |> List.rev); + } + :: acc + | other -> super#structure_item other :: acc) + [] + |> List.rev + end + +let structure_mapper s = (new mapper)#structure s +let signature_mapper s = (new mapper)#signature s +let argKey = ref "" + +let args = + [ + ( "-custom-field", + Arg.Tuple + [ + Arg.String (fun key -> argKey := key); + Arg.String + (fun moduleKey -> + Hashtbl.add (Ppx_config.custom_fields ()) !argKey moduleKey); + ], + "Adds a global custom field decoder/serializer (format: -custom-field \ + ScalarType Module)" ); + ( "-verbose", + Arg.Unit + (fun () -> + Ppx_config.update_config (fun current -> + { current with verbose_logging = true })), + "Defines if logging should be verbose or not" ); + ( "-apollo-mode", + Arg.Unit + (fun () -> + Ppx_config.update_config (fun current -> + { current with apollo_mode = true })), + "Automatically add __typename everywhere (necessary for apollo)" ); + ( "-schema", + Arg.String + (fun schema_file -> + Ppx_config.update_config (fun current -> { current with schema_file })), + "" ); + ( "-ast-out", + Arg.Bool + (fun ast_out -> + Ppx_config.update_config (fun current -> + { + current with + output_mode = + (match ast_out with + | true -> Ppx_config.Apollo_AST + | false -> Ppx_config.String); + })), + "Defines if output string or AST" ); + ( "-future-added-value", + Arg.Bool + (fun future_added_value -> + Ppx_config.update_config (fun current -> + { current with future_added_value })), + "Omits the `FutureAddedValue variant for enums if set to false" ); + ( "-verbose-errors", + Arg.Unit + (fun () -> + Ppx_config.update_config (fun current -> + { current with verbose_error_handling = true })), + "Verbose error handling. If not defined NODE_ENV will be used" ); + ( "-template-tag", + Arg.String + (fun template_tag -> + Ppx_config.update_config (fun current -> + { current with template_tag = Some template_tag })), + "Template tag to use" ); + ( "-template-tag-import", + Arg.String + (fun template_tag_import -> + Ppx_config.update_config (fun current -> + { current with template_tag_import = Some template_tag_import })), + "the import to use for the template tag (default is \"default\")" ); + ( "-template-tag-location", + Arg.String + (fun template_tag_location -> + Ppx_config.update_config (fun current -> + { current with template_tag_location = Some template_tag_location })), + "the import location for the template tag" ); + ( "-template-tag-return-type", + Arg.String + (fun template_tag_return_type -> + Ppx_config.update_config (fun current -> + { + current with + template_tag_return_type = Some template_tag_return_type; + })), + "the import location for the template tag" ); + ( "-fragment-in-query", + Arg.String + (function + | "exclude" -> + Ppx_config.update_config (fun current -> + { current with fragment_in_query = Exclude }) + | _ -> + Ppx_config.update_config (fun current -> + { current with fragment_in_query = Include })), + "Include the full fragment in the query (either 'include' or 'exclude')" + ); + ( "-extend-query", + Arg.String + (fun extend_query -> + Ppx_config.update_config (fun current -> + { current with extend_query = Some extend_query })), + "extend queries with the following functor" ); + ( "-extend-query-no-required-variables", + Arg.String + (fun extend_query_no_required_variables -> + Ppx_config.update_config (fun current -> + { + current with + extend_query_no_required_variables = + Some extend_query_no_required_variables; + })), + "extend queries having no required variables with the following functor" + ); + ( "-extend-mutation", + Arg.String + (fun extend_mutation -> + Ppx_config.update_config (fun current -> + { current with extend_mutation = Some extend_mutation })), + "extend mutations with the following functor" ); + ( "-extend-mutation-no-required-variables", + Arg.String + (fun extend_mutation_no_required_variables -> + Ppx_config.update_config (fun current -> + { + current with + extend_mutation_no_required_variables = + Some extend_mutation_no_required_variables; + })), + "extend mutations having no required variables with the following functor" + ); + ( "-extend-subscription", + Arg.String + (fun extend_subscription -> + Ppx_config.update_config (fun current -> + { current with extend_subscription = Some extend_subscription })), + "extend subscriptions with the following functor" ); + ( "-extend-subscription-no-required-variables", + Arg.String + (fun extend_subscription_no_required_variables -> + Ppx_config.update_config (fun current -> + { + current with + extend_subscription_no_required_variables = + Some extend_subscription_no_required_variables; + })), + "extend subscriptions having no required variables with the following \ + functor" ); + ( "-extend-fragment", + Arg.String + (fun extend_fragment -> + Ppx_config.update_config (fun current -> + { current with extend_fragment = Some extend_fragment })), + "extend fragments with the following functor" ); + ( "-native", + Arg.Unit + (fun () -> + Ppx_config.update_config (fun current -> + { current with native = true })), + "native mode (non-ReScript)" ); + ] + +let () = + List.iter (fun (k, spec, doc) -> Ppxlib.Driver.add_arg k spec ~doc) args; + Ppxlib.Driver.register_transformation ~preprocess_impl:structure_mapper + ~preprocess_intf:signature_mapper "graphql" diff --git a/src/ppx/output_module.ml b/src/ppx/output_module.ml new file mode 100644 index 00000000..2552c50b --- /dev/null +++ b/src/ppx/output_module.ml @@ -0,0 +1,1069 @@ +open Graphql_compiler +open Result_structure +open Generator_utils +open Extract_type_definitions +open Output_utils +open Ppxlib + +exception Cant_find_fragment_type_with_loc of Source_pos.ast_location * string + +type operation_type = Graphql_ast.operation_type +type operation_options = { has_required_variables : bool } +type definition = Fragment | Operation of operation_type * operation_options + +module StringSet = Set.Make (String) + +module VariableFinderImpl = struct + type t = StringSet.t ref + + let make_self _ = ref StringSet.empty + + include Traversal_utils.AbstractVisitor + + let enter_variable_value self _ v = + self := StringSet.add v.Source_pos.item !self + + let from_self (self : t) : StringSet.t = !self +end + +let constraint_on_type exp type_name = + Ast_helper.Exp.constraint_ exp + (base_type_name + (match type_name with None -> "string" | Some type_name -> type_name)) + +module VariableFinder = Traversal_utils.Visitor (VariableFinderImpl) + +let find_variables config document = + let ctx = Traversal_utils.make_context config document in + VariableFinderImpl.from_self (VariableFinder.visit_document ctx document) + +let pretty_print (query : string) : string = + let indent = ref 1 in + let str = + query |> String.split_on_char '\n' + |> List.map (fun l -> String.trim l) + |> List.filter (fun l -> l <> "") + |> List.map (fun line -> + let prevIndent = !indent in + String.iter + (function + | '{' -> indent := !indent + 1 + | '}' -> indent := !indent - 1 + | _ -> ()) + line; + let currIndent = + match prevIndent < !indent with + | true -> prevIndent + | false -> !indent + in + let currIndent = + match currIndent < 1 with true -> 1 | false -> currIndent + in + let line = String.make (currIndent * 2) ' ' ^ line in + line) + |> String.concat "\n" + in + str ^ "\n" + +let compress_parts (parts : Graphql_printer.t array) = + let open Graphql_printer in + parts |> Array.to_list + |> List.fold_left + (fun acc curr -> + match (acc, curr) with + | String s1 :: rest, String s2 -> String (s1 ^ s2) :: rest + | acc, curr -> curr :: acc) + [] + |> List.rev |> Array.of_list + +let make_fragment_query f = + Ast_helper.Exp.ident + { Location.txt = Longident.parse (f ^ ".query"); loc = Location.none } + +let emit_printed_template_query (parts : Graphql_printer.t array) config = + let open Graphql_printer in + let fragment_query_refs = + match config.fragment_in_query with + | Include -> + parts + |> Array.fold_left + (fun acc -> function + | String _ -> acc + | FragmentNameRef _ -> acc + | FragmentQueryRef f -> f :: acc) + [] + |> List.rev + | Exclude -> [] + in + let query = + Array.fold_left + (fun acc -> function + | String s -> acc ^ s + | FragmentNameRef f -> acc ^ f + | FragmentQueryRef _ -> acc) + "" parts + in + let fragment_names = + fragment_query_refs |> List.mapi (fun i _frag -> "frag_" ^ string_of_int i) + in + let fragments = + fragment_names |> List.map (fun name -> "${" ^ name ^ "}\n") + in + query :: fragments |> List.fold_left (fun acc el -> acc ^ el) "" + +let emit_printed_query parts config = + let open Graphql_printer in + let make_string s = + Ast_helper.Exp.constant (Parsetree.Pconst_string (s, Location.none, None)) + in + let join part1 part2 = + Ast_helper.Exp.apply + (Ast_helper.Exp.ident + { Location.txt = Longident.parse "^"; loc = Location.none }) + [ (Nolabel, part1); (Nolabel, part2) ] + in + let query = + Array.fold_left + (fun acc -> function + | String s -> acc ^ s + | FragmentNameRef f -> acc ^ f + | FragmentQueryRef _ -> acc) + "" parts + in + let fragment_query_refs = + match config.fragment_in_query with + | Include -> + parts + |> Array.fold_left + (fun acc -> function + | String _ -> acc + | FragmentNameRef _ -> acc + | FragmentQueryRef f -> make_fragment_query f :: acc) + [] + |> List.rev + | Exclude -> [] + in + fragment_query_refs + |> List.fold_left (fun acc el -> join acc el) (make_string query) + +let rec list_literal = function + | [] -> + Ast_helper.Exp.construct + { txt = Longident.Lident "[]"; loc = Location.none } + None + | value :: values -> + Ast_helper.Exp.construct + { txt = Longident.Lident "::"; loc = Location.none } + (Some (Ast_helper.Exp.tuple [ value; list_literal values ])) + +let loc = Location.none + +let rec emit_json config = function + | `Assoc vs -> + let pairs = + Ast_helper.Exp.array + (vs + |> List.map (fun (key, value) -> + Ast_helper.Exp.tuple + [ + Ast_helper.Exp.constant + (Pconst_string (key, Location.none, None)); + emit_json config value; + ])) + in + [%expr Js.Json.object_ (Js.Dict.fromArray [%e pairs])] + | `List ls -> + let values = Ast_helper.Exp.array (List.map (emit_json config) ls) in + [%expr Js.Json.array [%e values]] + | `Bool true -> [%expr Js.Json.boolean true] + | `Bool false -> [%expr Js.Json.boolean false] + | `Null -> [%expr Obj.magic Js.Undefined.empty] + | `String s -> + [%expr + Js.Json.string + [%e Ast_helper.Exp.constant (Pconst_string (s, Location.none, None))]] + | `Int i -> + [%expr + Js.Json.number + [%e Ast_helper.Exp.constant (Pconst_float (string_of_int i, None))]] + | `StringExpr parts -> + [%expr Js.Json.string [%e emit_printed_query parts config]] + +let wrap_template_tag ?import ?location ?template_tag source = + match (import, location, template_tag) with + | None, Some location, _ | Some "default", Some location, _ -> + "require(\"" ^ location ^ "\")" ^ "`\n" ^ source ^ "`" + | Some import, Some location, _ -> + "require(\"" ^ location ^ "\")." ^ import ^ "`\n" ^ source ^ "`" + | _, _, Some template_tag -> template_tag ^ "`\n" ^ source ^ "`" + | _ -> source + +let wrap_structure_raw contents = + Ast_helper.Str.extension + ( { txt = "raw"; loc = Location.none }, + PStr + [ + { + pstr_desc = + Pstr_eval + ( Ast_helper.Exp.constant + (Parsetree.Pconst_string (contents, Location.none, None)), + [] ); + pstr_loc = Location.none; + }; + ] ) + +let wrap_raw contents = + Ast_helper.Exp.extension + ( { txt = "raw"; loc = Location.none }, + PStr + [ + { + pstr_desc = + Pstr_eval + ( Ast_helper.Exp.constant + (Parsetree.Pconst_string (contents, Location.none, None)), + [] ); + pstr_loc = Location.none; + }; + ] ) + +let make_printed_query config document = + let source = Graphql_printer.print_document config.schema document in + match Ppx_config.output_mode () with + | Ppx_config.Apollo_AST -> + Ast_serializer_apollo.serialize_document source document |> emit_json config + | Ppx_config.String -> ( + match (config.template_tag_is_function, config.template_tag) with + | Some true, (_, location, _) when location <> None -> + let source_list = source |> Array.to_list in + Ast_helper.Exp.apply + (Ast_helper.Exp.ident + { Location.txt = Longident.Lident "graphql"; loc = Location.none }) + (( Nolabel, + Ast_helper.Exp.array + (emit_printed_query + (source_list + |> List.filter (function + | Graphql_printer.FragmentQueryRef _ -> false + | _ -> true) + |> Array.of_list) + config + :: (source_list + |> filter_map (function + | Graphql_printer.FragmentQueryRef _ -> Some [%expr ""] + | _ -> None))) ) + :: (source_list + |> filter_map (function + | Graphql_printer.FragmentQueryRef x -> + Some (Nolabel, make_fragment_query x) + | _ -> None))) + | _, (template_tag, location, import) + when template_tag <> None || location <> None -> + let open Graphql_printer in + let fragments = + source + |> Array.fold_left + (fun acc -> function + | String _ -> acc + | FragmentNameRef _ -> acc + | FragmentQueryRef f -> f :: acc) + [] + |> List.rev + in + let template_tag = + wrap_template_tag ?template_tag ?location ?import + (pretty_print (emit_printed_template_query source config)) + in + constraint_on_type + (match (config.fragment_in_query, fragments) with + | Exclude, _ | _, [] -> wrap_raw template_tag + | Include, fragments -> + let fragment_names = + fragments |> List.mapi (fun i _frag -> "frag_" ^ string_of_int i) + in + let frag_fun = + "(" + ^ (List.tl fragment_names + |> List.fold_left + (fun acc el -> acc ^ ", " ^ el) + (List.hd fragment_names)) + ^ ") => " + in + Ast_helper.Exp.apply + (wrap_raw (frag_fun ^ template_tag)) + (fragments |> List.map (fun f -> (Nolabel, make_fragment_query f)))) + config.template_tag_return_type + | _ -> emit_printed_query source config) + +let signature_module name signature = + { + psig_loc = Location.none; + psig_desc = + Psig_module + { + pmd_loc = Location.none; + pmd_name = + { + txt = Some (Generator_utils.capitalize_ascii name); + loc = Location.none; + }; + pmd_type = Ast_helper.Mty.signature signature; + pmd_attributes = []; + }; + } + +let wrap_module ~loc:_ ?module_type (name : string) contents = + let loc = Location.none in + { + pstr_desc = + Pstr_module + { + pmb_name = { txt = Some (Generator_utils.capitalize_ascii name); loc }; + pmb_expr = + (match module_type with + | Some module_type -> + { + pmod_desc = + Pmod_constraint + (Ast_helper.Mod.structure contents, module_type); + pmod_loc = loc; + pmod_attributes = []; + } + | None -> Ast_helper.Mod.structure contents); + pmb_attributes = []; + pmb_loc = loc; + }; + pstr_loc = loc; + } + +let get_functor config definition = + match config.extend with + | Some funct -> Some funct + | None -> ( + match definition with + | Fragment -> Ppx_config.extend_fragment () + | Operation (Query, { has_required_variables = false }) -> ( + match Ppx_config.extend_query_no_required_variables () with + | Some extension -> Some extension + | None -> Ppx_config.extend_query ()) + | Operation (Query, _) -> Ppx_config.extend_query () + | Operation (Mutation, { has_required_variables = false }) -> ( + match Ppx_config.extend_mutation_no_required_variables () with + | Some extension -> Some extension + | None -> Ppx_config.extend_mutation ()) + | Operation (Mutation, _) -> Ppx_config.extend_mutation () + | Operation (Subscription, { has_required_variables = false }) -> ( + match Ppx_config.extend_subscription_no_required_variables () with + | Some extension -> Some extension + | None -> Ppx_config.extend_subscription ()) + | Operation (Subscription, _) -> Ppx_config.extend_subscription ()) + +let wrap_query_module ~loc:module_loc ~module_type definition name contents + config = + let loc = Location.none in + let module_name = + match name with Some name -> name ^ "_inner" | None -> "Inner" + in + let funct = get_functor config definition in + let signature = + match module_type with + | { pmty_desc = Pmty_signature signature } -> signature + | _ -> [] + in + let inner_module = + wrap_module ~module_type ~loc:Location.none module_name contents + in + let contents, module_type = + match funct with + | Some funct -> + let contents = + [ + inner_module; + Ast_helper.Str.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mod.ident { txt = Longident.parse module_name; loc })); + Ast_helper.Str.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mod.apply + (Ast_helper.Mod.ident { txt = Longident.parse funct; loc }) + (Ast_helper.Mod.ident + { txt = Longident.parse module_name; loc }))); + ] + in + let signature = + List.concat + [ + [ signature_module module_name signature ]; + [ + Ast_helper.Sig.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mty.typeof_ + (Ast_helper.Mod.mk + (Pmod_structure + [ + Ast_helper.Str.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mod.ident + { txt = Longident.parse module_name; loc })); + ])))); + ]; + [ + Ast_helper.Sig.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mty.typeof_ + (Ast_helper.Mod.mk + (Pmod_structure + [ + Ast_helper.Str.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mod.apply + (Ast_helper.Mod.ident + { txt = Longident.parse funct; loc }) + (Ast_helper.Mod.ident + { + txt = Longident.parse module_name; + loc; + }))); + ])))); + ]; + ] + in + (contents, Ast_helper.Mty.mk ~loc:module_loc (Pmty_signature signature)) + | None -> (contents, module_type) + in + match (funct, name) with + | Some _, Some name -> + [ wrap_module ~module_type ~loc:module_loc name contents ] + | Some _, None -> contents + | None, Some name -> + [ wrap_module ~module_type ~loc:module_loc name contents ] + | None, None -> contents + +let wrap_query_module_signature ~signature definition name config = + let loc = Location.none in + let module_name = + match name with Some name -> name ^ "_inner" | None -> "Inner" + in + let funct = get_functor config definition in + let signature = + match funct with + | Some funct -> + List.concat + [ + [ signature_module module_name signature ]; + signature; + [ + Ast_helper.Sig.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mty.typeof_ + (Ast_helper.Mod.mk + (Pmod_structure + [ + Ast_helper.Str.include_ + (Ast_helper.Incl.mk + (Ast_helper.Mod.apply + (Ast_helper.Mod.ident + { txt = Longident.parse funct; loc }) + (Ast_helper.Mod.ident + { + txt = Longident.parse module_name; + loc; + }))); + ])))); + ]; + ] + | None -> signature + in + match (funct, name) with + | Some _, Some name -> [ signature_module name signature ] + | Some _, None -> signature + | None, Some name -> [ signature_module name signature ] + | None, None -> signature + +let generate_operation_signature config variable_defs res_structure = + let raw_types = + match config.native with + | true -> [ [%sigi: type t] ] + | false -> + Output_types.generate_type_signature_items config + res_structure true None None + in + let types = + Output_types.generate_type_signature_items config res_structure + false None None + in + let raw_arg_types = + Output_types.generate_arg_type_signature_items true config + variable_defs + in + let arg_types = + Output_types.generate_arg_type_signature_items false config + variable_defs + in + let extracted_args = extract_args config variable_defs in + let serialize_variable_signatures = + Output_serializer.generate_serialize_variable_signatures + extracted_args + in + let variable_constructor_signatures = + Output_serializer.generate_variable_constructor_signatures + extracted_args + in + let has_required_variables = has_required_variables extracted_args in + [ + [ [%sigi: [@@@ocaml.warning "-32-30"]] ]; + [ signature_module "Raw" (List.append raw_types raw_arg_types) ]; + types; + arg_types; + [ + [%sigi: + val query : + [%t + base_type_name + (match (config.template_tag, config.template_tag_return_type) with + | (Some _, _, _), Some return_type + | (_, Some _, _), Some return_type -> + return_type + | _ -> "string")] + [@@ocaml.doc " The GraphQL query "]]; + [%sigi: + val parse : Raw.t -> t + [@@ocaml.doc + " Parse the JSON-compatible GraphQL data to ReasonML data types "]]; + [%sigi: + val serialize : t -> Raw.t + [@@ocaml.doc + " Serialize the ReasonML GraphQL data that was parsed using the \ + parse\n\ + function back to the original JSON compatible data "]]; + ]; + serialize_variable_signatures; + (match variable_constructor_signatures with + | [] -> [ [%sigi: val makeVariables : unit -> t_variables] ] + | signatures -> signatures); + (match has_required_variables with + | true -> [] + | false -> [ [%sigi: val makeDefaultVariables : unit -> t_variables] ]); + (match config.native with + | true -> + [ + [%sigi: + external unsafe_fromJson : Graphql_ppx_runtime.Json.t -> Raw.t + = "%identity"]; + [%sigi: + external toJson : Raw.t -> Graphql_ppx_runtime.Json.t = "%identity"]; + [%sigi: + external variablesToJson : + Raw.t_variables -> Graphql_ppx_runtime.Json.t = "%identity"]; + ] + | false -> + [ + [%sigi: external unsafe_fromJson : Js.Json.t -> Raw.t = "%identity"]; + [%sigi: external toJson : Raw.t -> Js.Json.t = "%identity"]; + [%sigi: + external variablesToJson : Raw.t_variables -> Js.Json.t = "%identity"]; + ]); + ] + |> List.concat + +let rec create_arity_fn arity typ = + match arity with + | 0 -> typ + | arity -> Ast_helper.Typ.arrow Nolabel typ (create_arity_fn (arity - 1) typ) + +let graphql_external (config : output_config) document = + match config with + | { + template_tag = import, Some location, _; + template_tag_return_type; + template_tag_is_function = Some true; + } -> + let return_type = + match template_tag_return_type with + | None -> "string" + | Some return_type -> return_type + in + let import = + match import with None -> "default" | Some import -> import + in + let arity = + Graphql_printer.print_document config.schema document + |> Array.fold_left + (fun arity el -> + match el with + | Graphql_printer.FragmentQueryRef _ -> arity + 1 + | _ -> arity) + 0 + in + [ + Ast_helper.Str.primitive + (Ast_helper.Val.mk + ~attrs: + [ + Ast_helper.Attr.mk + { txt = "bs.module"; loc = Location.none } + (PStr [ Ast_helper.Str.eval (const_str_expr location) ]); + ] + ~prim:[ import ] + { txt = "graphql"; loc = Location.none } + (Ast_helper.Typ.arrow Nolabel [%type: string array] + (create_arity_fn arity (base_type_name return_type)))); + ] + | _ -> [] + +let generate_operation_implementation config variable_defs _has_error operation + res_structure = + let parse_fn = + Output_parser.generate_parser config [] + (Graphql_ast.Operation operation) res_structure + in + let serialize_fn = + Output_serializer.generate_serializer config [] + (Graphql_ast.Operation operation) None res_structure + in + let types = + Output_types.generate_type_structure_items config res_structure + false None None + in + let raw_types = + match config.native with + | true -> [ [%stri type t = Graphql_ppx_runtime.Json.t] ] + | false -> + Output_types.generate_type_structure_items config + res_structure true None None + in + let arg_types = + Output_types.generate_arg_type_structure_items false config + variable_defs + in + let raw_arg_types = + Output_types.generate_arg_type_structure_items true config + variable_defs + in + let extracted_args = extract_args config variable_defs in + let serialize_variable_functions = + Output_serializer.generate_serialize_variables extracted_args + in + let variable_constructors = + Output_serializer.generate_variable_constructors extracted_args + in + let has_required_variables = has_required_variables extracted_args in + let document = [ Graphql_ast.Operation operation ] in + let printed_query = make_printed_query config document in + let contents = + List.concat + [ + [ [%stri [@@@ocaml.warning "-32-30"]] ]; + [ + wrap_module ~loc:Location.none "Raw" + (List.append raw_types raw_arg_types); + ]; + types; + arg_types; + graphql_external config document; + [ + [%stri let query = [%e printed_query]]; + [%stri let parse = (fun value -> [%e parse_fn] : Raw.t -> t)]; + [%stri let serialize = (fun value -> [%e serialize_fn] : t -> Raw.t)]; + ]; + [ serialize_variable_functions ]; + (match variable_constructors with + | None -> [ [%stri let makeVariables () = ()] ] + | Some c -> [ c ]); + (match has_required_variables with + | true -> [] + | false -> [ [%stri let makeDefaultVariables () = makeVariables ()] ]); + (match config.native with + | true -> + [ + [%stri + external unsafe_fromJson : Graphql_ppx_runtime.Json.t -> Raw.t + = "%identity"]; + [%stri + external toJson : Raw.t -> Graphql_ppx_runtime.Json.t + = "%identity"]; + [%stri + external variablesToJson : + Raw.t_variables -> Graphql_ppx_runtime.Json.t = "%identity"]; + ] + | false -> + [ + [%stri external unsafe_fromJson : Js.Json.t -> Raw.t = "%identity"]; + [%stri external toJson : Raw.t -> Js.Json.t = "%identity"]; + [%stri + external variablesToJson : Raw.t_variables -> Js.Json.t + = "%identity"]; + ]); + ] + in + let name = + match operation with + | { item = { o_name = Some { item = name } } } -> Some name + | _ -> None + in + ( Operation (operation.item.o_type, { has_required_variables }), + name, + contents, + operation.span |> config.map_loc |> conv_loc ) + +let generate_fragment_signature config name variable_definitions _has_error + (fragment : Graphql_ast.fragment Source_pos.spanning) type_name res_structure + = + let types = + Output_types.generate_type_signature_items config res_structure + false type_name + (Some (fragment.item.fg_type_condition.item, fragment.item.fg_name.span)) + in + let raw_types = + match config.native with + | true -> [ [%sigi: type t] ] + | false -> + Output_types.generate_type_signature_items config + res_structure true None + (Some (fragment.item.fg_type_condition.item, fragment.item.fg_name.span)) + in + let rec make_labeled_fun_sig final_type = function + | [] -> final_type + | ({ Source_pos.item = name }, { Graphql_ast.vd_type = { item = type_ref } }) + :: tl -> + Ast_helper.Typ.arrow (Labelled name) + (Ast_helper.Typ.variant + [ + { + prf_desc = + Rtag + ( { + txt = + Output_parser.generate_poly_type_ref_name + type_ref; + loc = Location.none; + }, + true, + [] ); + prf_loc = Location.none; + prf_attributes = []; + }; + ] + Closed None) + (make_labeled_fun_sig final_type tl) + in + let verify_parse = + make_labeled_fun_sig + (Ast_helper.Typ.arrow (Labelled "fragmentName") + (Ast_helper.Typ.variant + [ + { + prf_desc = Rtag ({ txt = name; loc = Location.none }, true, []); + prf_loc = Location.none; + prf_attributes = []; + }; + ] + Closed None) + (Ast_helper.Typ.arrow Nolabel (base_type_name "Raw.t") + (base_type_name "t"))) + (match variable_definitions with + | Some { Source_pos.item = variable_definitions } -> variable_definitions + | None -> []) + in + let verify_name = + Ast_helper.Typ.arrow Nolabel + (Ast_helper.Typ.variant + [ + { + prf_desc = Rtag ({ txt = name; loc = Location.none }, true, []); + prf_loc = Location.none; + prf_attributes = []; + }; + ] + Closed None) + (base_type_name "unit") + in + let type_name = base_type_name (Option.get_or_else "t" type_name) in + List.concat + [ + [ [%sigi: [@@@ocaml.warning "-32-30"]] ]; + [ signature_module "Raw" raw_types ]; + types; + [ + [%sigi: + val query : + [%t + base_type_name + (match + (config.template_tag, config.template_tag_return_type) + with + | (Some _, _, _), Some return_type + | (_, Some _, _), Some return_type -> + return_type + | _ -> "string")] + [@@ocaml.doc " the GraphQL fragment "]]; + [%sigi: + val parse : Raw.t -> [%t type_name] + [@@ocaml.doc + " Parse the raw JSON-compatible GraphQL data into ReasonML data \ + types "]]; + [%sigi: + val serialize : [%t type_name] -> Raw.t + [@@ocaml.doc + " Serialize the ReasonML GraphQL data that was parsed using the \ + parse\n\ + function back to the original JSON-compatible data "]]; + [%sigi: val verifyArgsAndParse : [%t verify_parse]]; + [%sigi: val verifyName : [%t verify_name]]; + ]; + (match config.native with + | true -> + [ + [%sigi: + external unsafe_fromJson : Graphql_ppx_runtime.Json.t -> Raw.t + = "%identity"]; + [%sigi: + external toJson : Raw.t -> Graphql_ppx_runtime.Json.t = "%identity"]; + ] + | false -> + [ + [%sigi: external unsafe_fromJson : Js.Json.t -> Raw.t = "%identity"]; + [%sigi: external toJson : Raw.t -> Js.Json.t = "%identity"]; + ]); + ] + +let generate_fragment_implementation config name + (variable_definitions : + Graphql_ast.variable_definitions Source_pos.spanning option) _has_error + fragment type_name res_structure = + let parse_fn = + Output_parser.generate_parser config [] + (Graphql_ast.Fragment fragment) res_structure + in + let serialize_fn = + Output_serializer.generate_serializer config [] + (Graphql_ast.Fragment fragment) None res_structure + in + let types = + Output_types.generate_type_structure_items config res_structure + false type_name + (Some (fragment.item.fg_type_condition.item, fragment.item.fg_name.span)) + in + let raw_types = + match config.native with + | true -> [ [%stri type t = Graphql_ppx_runtime.Json.t] ] + | false -> + Output_types.generate_type_structure_items config + res_structure true None + (Some (fragment.item.fg_type_condition.item, fragment.item.fg_name.span)) + in + let rec make_labeled_fun body = function + | [] -> body + | ({ Source_pos.item = name }, { Graphql_ast.vd_type = { item = type_ref } }) + :: tl -> + Ast_helper.Exp.fun_ (Labelled name) None + (Ast_helper.Pat.constraint_ + (Ast_helper.Pat.var { txt = "_" ^ name; loc = Location.none }) + (Ast_helper.Typ.variant + [ + { + prf_desc = + Rtag + ( { + txt = + Output_parser + .generate_poly_type_ref_name type_ref; + loc = Location.none; + }, + true, + [] ); + prf_loc = Location.none; + prf_attributes = []; + }; + ] + Closed None)) + (make_labeled_fun body tl) + in + let document = [ Graphql_ast.Fragment fragment ] in + let printed_query = make_printed_query config document in + let verify_parse = + make_labeled_fun + (Ast_helper.Exp.fun_ (Labelled "fragmentName") None + (Ast_helper.Pat.constraint_ + (Ast_helper.Pat.var { txt = "_" ^ name; loc = Location.none }) + (Ast_helper.Typ.variant + [ + { + prf_desc = + Rtag ({ txt = name; loc = Location.none }, true, []); + prf_loc = Location.none; + prf_attributes = []; + }; + ] + Closed None)) + [%expr fun (value : Raw.t) -> parse value]) + (match variable_definitions with + | Some { Source_pos.item = variable_definitions } -> variable_definitions + | None -> []) + in + let verifyName = + Ast_helper.Exp.function_ + [ + Ast_helper.Exp.case + (Ast_helper.Pat.variant name None) + (Ast_helper.Exp.construct + { txt = Longident.Lident "()"; loc = Location.none } + None); + ] + in + let type_name = base_type_name (Option.get_or_else "t" type_name) in + let contents = + [ + [ [%stri [@@@ocaml.warning "-32-30"]] ]; + [ wrap_module ~loc:Location.none "Raw" raw_types ]; + types; + graphql_external config document; + [ + [%stri let query = [%e printed_query]]; + [%stri + let parse = (fun value -> [%e parse_fn] : Raw.t -> [%t type_name])]; + [%stri + let serialize = + (fun value -> [%e serialize_fn] : [%t type_name] -> Raw.t)]; + ]; + [ + [%stri let verifyArgsAndParse = [%e verify_parse]]; + [%stri let verifyName = [%e verifyName]]; + ]; + (match config.native with + | true -> + [ + [%stri + external unsafe_fromJson : Graphql_ppx_runtime.Json.t -> Raw.t + = "%identity"]; + [%stri + external toJson : Raw.t -> Graphql_ppx_runtime.Json.t = "%identity"]; + ] + | false -> + [ + [%stri external unsafe_fromJson : Js.Json.t -> Raw.t = "%identity"]; + [%stri external toJson : Raw.t -> Js.Json.t = "%identity"]; + ]); + ] + |> List.concat + in + ( Fragment, + Some (Generator_utils.capitalize_ascii name), + contents, + fragment.span |> config.map_loc |> conv_loc ) + +let generate_definition config = function + | Def_operation + { variable_definitions = vdefs; has_error; operation; inner = structure } + -> + ( generate_operation_implementation config vdefs has_error operation + structure, + generate_operation_signature config vdefs structure ) + | Def_fragment + { + name; + variable_definitions; + has_error; + fragment; + type_name; + inner = structure; + } -> ( + try + ( generate_fragment_implementation config name variable_definitions + has_error fragment type_name structure, + generate_fragment_signature config name variable_definitions has_error + fragment type_name structure ) + with + | Graphql_printer.Cant_find_fragment_type + (fragment_type : string Source_pos.spanning) + -> + raise + (Cant_find_fragment_type_with_loc + (config.map_loc fragment_type.span, fragment_type.item))) + +let generate_modules module_name module_type operations = + match operations with + | [] -> [] + | [ (operation, config) ] -> ( + match generate_definition config operation with + | (definition, Some name, contents, loc), signature -> + let module_type = + match module_type with + | Some module_type -> module_type + | None -> Ast_helper.Mty.mk (Pmty_signature signature) + in + wrap_query_module ~loc ~module_type definition + (match (config.inline, module_name) with + | true, _ -> None + | _, Some name -> Some name + | _, None -> Some name) + contents config + | (definition, None, contents, loc), signature -> + let module_type = + match module_type with + | Some module_type -> module_type + | None -> Ast_helper.Mty.mk (Pmty_signature signature) + in + wrap_query_module ~loc ~module_type definition module_name contents config + ) + | operations -> ( + let contents = + operations + |> List.map (fun (operation, config) -> + (generate_definition config operation, config)) + |> List.mapi + (fun i (((definition, name, contents, loc), signature), config) -> + let module_type = + match module_type with + | Some module_type -> module_type + | None -> Ast_helper.Mty.mk (Pmty_signature signature) + in + match name with + | Some name -> + wrap_query_module ~loc ~module_type definition (Some name) contents + config + | None -> + wrap_query_module ~loc ~module_type definition + (Some ("Untitled" ^ string_of_int i)) + contents config) + |> List.concat + in + match module_name with + | Some module_name -> + [ wrap_module ~loc:Location.none module_name contents ] + | None -> contents) + +let generate_module_interfaces module_name operations = + match operations with + | [] -> [] + | [ (operation, config) ] -> ( + match generate_definition config operation with + | (definition, Some name, _contents, _loc), signature -> + wrap_query_module_signature ~signature definition + (match (config.inline, module_name) with + | true, _ -> None + | _, Some name -> Some name + | _, None -> Some name) + config + | (definition, None, _contents, _loc), signature -> + wrap_query_module_signature ~signature definition module_name config) + | operations -> ( + let contents = + operations + |> List.map (fun (operation, config) -> + (generate_definition config operation, config)) + |> List.mapi (fun i (((definition, name, _, _), signature), config) -> + match name with + | Some name -> + wrap_query_module_signature ~signature definition (Some name) + config + | None -> + wrap_query_module_signature ~signature definition + (Some ("Untitled" ^ string_of_int i)) + config) + |> List.concat + in + match module_name with + | Some module_name -> [ signature_module module_name contents ] + | None -> contents) diff --git a/src/ppx/output_parser.ml b/src/ppx/output_parser.ml new file mode 100644 index 00000000..163f2ca5 --- /dev/null +++ b/src/ppx/output_parser.ml @@ -0,0 +1,528 @@ +open Graphql_compiler +open Result_structure +open Schema +open Ppxlib +open Generator_utils +open Output_utils +open Output_types +open Extract_type_definitions + +let conv_loc _ = Location.none + +let record_to_object loc record = + Ast_helper.Exp.extension + ({ txt = "bs.obj"; loc = conv_loc loc }, PStr [ [%stri [%e record]] ]) + +let raw_opaque_object interface_fragments fields = + let has_fragments = + fields |> List.exists (function Fr_fragment_spread _ -> true | _ -> false) + in + match (has_fragments, interface_fragments) with + | true, _ -> true + | _, Some (_, []) -> false + | _, Some (_, _) -> true + | _ -> false + +let rec generate_poly_type_ref_name (type_ref : Graphql_ast.type_ref) = + match type_ref with + | Tr_named { item = name } -> name + | Tr_list { item = type_ref } -> + "ListOf_" ^ generate_poly_type_ref_name type_ref + | Tr_non_null_named { item = name } -> "NonNull_" ^ name + | Tr_non_null_list { item = type_ref } -> + "NonNullListOf_" ^ generate_poly_type_ref_name type_ref + +let get_variable_definitions (definition : Graphql_ast.definition) = + match definition with + | Fragment + { item = { fg_variable_definitions = Some { item = definitions } } } + | Operation + { item = { o_variable_definitions = Some { item = definitions } } } -> + let open Graphql_ast in + definitions + |> List.fold_left + (fun acc + ( { Source_pos.item = name; span }, + { vd_type = { item = type_ref; span = type_span } } ) -> + (name, generate_poly_type_ref_name type_ref, span, type_span) :: acc) + [] + | _ -> [] + +let make_error_raiser message = + if Ppx_config.native () then + if Ppx_config.verbose_error_handling () then + [%expr raise (Failure ("graphql-ppx: " ^ [%e message]))] + else [%expr raise (Failure "Unexpected GraphQL query response")] + else if Ppx_config.verbose_error_handling () then + [%expr Js.Exn.raiseError ("graphql-ppx: " ^ [%e message])] + else [%expr Js.Exn.raiseError "Unexpected GraphQL query response"] + +let raw_value loc = ([%expr value] [@metaloc loc]) + +let generate_poly_enum_decoder loc enum_meta omit_future_value = + let enum_match_arms = + enum_meta.em_values + |> List.map (fun { evm_name; _ } -> + Ast_helper.Exp.case (const_str_pat evm_name) + (Ast_helper.Exp.variant (to_valid_ident evm_name) None)) + in + let fallback_arm = + match omit_future_value with + | true -> + Ast_helper.Exp.case (Ast_helper.Pat.any ()) + (Ast_helper.Exp.apply + (Ast_helper.Exp.ident (mknoloc (Longident.parse "raise"))) + [ + ( Nolabel, + Ast_helper.Exp.construct + (mknoloc (Longident.parse "Not_found")) + None ); + ]) + | false -> + Ast_helper.Exp.case + (Ast_helper.Pat.var { loc = conv_loc loc; txt = "other" }) + (Ast_helper.Exp.variant "FutureAddedValue" + (Some + (Ast_helper.Exp.ident + { Location.txt = Longident.parse "other"; loc = conv_loc loc }))) + in + let match_expr = + Ast_helper.Exp.match_ + (match Ppx_config.native () with + | true -> + [%expr value |> Graphql_ppx_runtime.Json.to_string] + [@metaloc conv_loc loc] + | false -> [%expr (Obj.magic value : string)] [@metaloc conv_loc loc]) + (List.concat [ enum_match_arms; [ fallback_arm ] ]) + in + [%expr [%e match_expr]] + +let generate_fragment_parse_fun config loc name arguments definition = + let ident = + Ast_helper.Exp.ident + { + loc = loc |> Output_utils.conv_loc; + txt = Longident.parse (name ^ ".verifyArgsAndParse"); + } + in + let variable_defs = get_variable_definitions definition in + let labeled_args = + variable_defs + |> List.filter (fun (name, _, _, _) -> + arguments |> List.exists (fun arg -> arg = name)) + |> List.map (fun (arg_name, type_, _span, type_span) -> + ( Labelled arg_name, + Ast_helper.Exp.variant + ~loc: + (config.map_loc type_span |> Output_utils.conv_loc) + type_ None )) + in + Ast_helper.Exp.apply + ~loc:(loc |> Output_utils.conv_loc) + ident + (List.append labeled_args + [ + ( Labelled "fragmentName", + Ast_helper.Exp.variant + ~loc:(loc |> Output_utils.conv_loc) + name None ); + ( Nolabel, + match config.native with + | true -> + Ast_helper.Exp.apply + (Ast_helper.Exp.ident + { + loc = Location.none; + txt = Longident.parse (name ^ ".unsafe_fromJson"); + }) + [ (Nolabel, ident_from_string "value") ] + | false -> ident_from_string ~loc:(conv_loc loc) "value" ); + ]) + +let generate_solo_fragment_spread_decoder config loc name arguments definition = + generate_fragment_parse_fun config loc name arguments definition + +let generate_error loc message = + let loc = conv_loc loc in + let error = Ocaml_common.Location.error ~loc message in + let ext = Ocaml_common.Ast_mapper.extension_of_error error in + let extension = Ocaml_common.Ast_helper.Exp.extension ~loc ext in + [%expr + let _value = value in + [%e To_ppxlib.copy_expression extension]] + +let rec generate_nullable_decoder config loc inner path definition = + match config.native with + | true -> + [%expr + match value with + | `Null -> None + | value -> Some [%e generate_parser config path definition inner]] + [@metaloc loc] + | false -> + [%expr + match Js.toOption value with + | Some value -> Some [%e generate_parser config path definition inner] + | None -> None] + [@metaloc loc] + +and generate_array_decoder config loc inner path definition = + match config.native with + | true -> + [%expr + match value with + | `List json_list -> + List.map + (fun value -> [%e generate_parser config path definition inner]) + json_list + |> Array.of_list + | _ -> [||]] + [@metaloc loc] + | false -> + [%expr + value + |> Js.Array.map (fun value -> + [%e generate_parser config path definition inner])] + [@metaloc loc] + +and generate_custom_decoder config loc ident inner path definition = + ([%expr + [%e ident_from_string (ident ^ ".parse")] + [%e generate_parser config path definition inner]] + [@metaloc loc]) + +and generate_object_decoder ~config ~loc ~name:_name ~path ~definition + ~existing_record ~interface_fragments fields = + let do_obj_constructor_base () = + let opaque = raw_opaque_object interface_fragments fields in + let object_type = base_type_name ("Raw." ^ generate_type_name path) in + let get_value = function + | Fr_named_field { name = key; type_ = inner } -> ( + match config.native with + | true -> + [%expr + let value = + Graphql_ppx_runtime.Json.member [%e const_str_expr key] value + in + [%e generate_parser config (key :: path) definition inner]] + [@metaloc conv_loc loc] + | false -> + [%expr + let value = + [%e + match opaque with + | true -> + [%expr + Obj.magic + (Js.Dict.unsafeGet (Obj.magic value) + [%e const_str_expr key])] + | false -> + Ast_helper.Exp.field + (Ast_helper.Exp.constraint_ + (ident_from_string "value") + object_type) + { + loc = Location.none; + Location.txt = Longident.parse (to_valid_ident key); + }] + in + [%e generate_parser config (key :: path) definition inner]] + [@metaloc conv_loc loc]) + | Fr_fragment_spread { loc; name; arguments } -> ( + match Ppx_config.native () with + | true -> + generate_fragment_parse_fun config loc name arguments definition + | false -> + let our_loc = loc in + let loc = conv_loc loc in + ([%expr + let value = + (Obj.magic value : [%t base_type_name ~loc (name ^ ".Raw.t")]) + in + [%e + generate_fragment_parse_fun config our_loc name arguments + definition]] + [@metaloc loc])) + in + let get_record_contents_inline = function + | (Fr_fragment_spread { key } as field) + | (Fr_named_field { name = key } as field) -> + ( { txt = Longident.parse (to_valid_ident key); loc = conv_loc loc }, + get_value field ) + in + let record_fields = List.map get_record_contents_inline fields in + let record_fields = + match interface_fragments with + | None | Some (_, []) -> record_fields + | Some (interface_name, fragments) -> + ( { txt = Longident.Lident "fragment"; loc = Location.none }, + generate_poly_variant_interface_decoder config (conv_loc loc) + interface_name fragments (interface_name :: path) definition ) + :: record_fields + in + Ast_helper.Exp.record record_fields None + in + (Ast_helper.Exp.constraint_ + (do_obj_constructor_base ()) + (base_type_name + (match existing_record with + | None -> generate_type_name path + | Some type_name -> type_name)) [@metaloc loc]) + +and generate_poly_variant_selection_set_decoder config loc name fields path + definition = + let rec generator_loop = function + | (({ item = field } : Result_structure.name), inner) :: next -> ( + let field_name = String.capitalize_ascii field in + let variant_decoder = + Ast_helper.Exp.variant field_name + (Some (generate_parser config (field :: path) definition inner)) + in + match config.native with + | true -> + [%expr + let temp = + Graphql_ppx_runtime.Json.member [%e const_str_expr field] value + in + match temp with + | `Null -> [%e generator_loop next] + | _ -> + let value = temp in + [%e variant_decoder]] + [@metaloc loc] + | false -> + [%expr + let temp = + Js.Dict.unsafeGet (Obj.magic value) [%e const_str_expr field] + in + match Js.Json.decodeNull temp with + | None -> + let value = temp in + [%e variant_decoder] + | Some _ -> [%e generator_loop next]] + [@metaloc loc]) + | [] -> + make_error_raiser + [%expr + "All fields on variant selection set on type " + ^ [%e const_str_expr name] ^ " were null"] + in + match config.native with + | true -> + [%expr + match value with + | `Null -> + [%e + make_error_raiser + [%expr + "Expected type " ^ [%e const_str_expr name] ^ " to be an object"]] + | value -> [%e generator_loop fields]] + [@metaloc loc] + | false -> + [%expr + match Js.Json.decodeObject (Obj.magic value : Js.Json.t) with + | None -> + [%e + make_error_raiser + [%expr + "Expected type " ^ [%e const_str_expr name] ^ " to be an object"]] + | Some value -> [%e generator_loop fields]] + [@metaloc loc] + +and generate_poly_variant_interface_decoder config loc _name fragments path + definition = + let fallback_case = + let name_pattern = Ast_helper.Pat.any () in + Ast_helper.Exp.variant "UnspecifiedFragment" (Some [%expr typename]) + |> Ast_helper.Exp.case name_pattern + in + let fragment_cases = + List.map + (fun (type_name, inner) -> + let name_pattern = const_str_pat type_name in + Ast_helper.Exp.variant type_name + (Some + (match config.native with + | true -> + generate_parser config (type_name :: path) definition inner + | false -> + [%expr + let value = + (Obj.magic value + : [%t + base_type_name + ("Raw." ^ generate_type_name (type_name :: path))]) + in + [%e + generate_parser config (type_name :: path) definition inner]])) + |> Ast_helper.Exp.case name_pattern) + fragments + in + let fallback_case = fallback_case in + let typename_matcher = + Ast_helper.Exp.match_ [%expr typename] + (List.concat [ fragment_cases; [ fallback_case ] ]) + in + match config.native with + | true -> + [%expr + let typename = + (value + |> Graphql_ppx_runtime.Json.member "__typename" + |> Graphql_ppx_runtime.Json.to_string + : string) + in + ([%e typename_matcher] : [%t base_type_name (generate_type_name path)])] + [@metaloc loc] + | false -> + [%expr + let typename = + (Obj.magic (Js.Dict.unsafeGet (Obj.magic value) "__typename") : string) + in + ([%e typename_matcher] : [%t base_type_name (generate_type_name path)])] + [@metaloc loc] + +and generate_poly_variant_union_decoder config loc _name fragments + _exhaustive_flag omit_future_value path definition = + let fragment_cases = + fragments + |> List.map (fun (({ item = type_name } : Result_structure.name), inner) -> + Ast_helper.Exp.case (const_str_pat type_name) + (Ast_helper.Exp.variant type_name + (Some + (match config.native with + | true -> + generate_parser config (type_name :: path) definition inner + | false -> + [%expr + let value = + (Obj.magic value + : [%t + match inner with + | Res_solo_fragment_spread { name } -> + base_type_name (name ^ ".Raw.t") + | _ -> + base_type_name + ("Raw." + ^ generate_type_name (type_name :: path))]) + in + [%e + generate_parser config (type_name :: path) definition + inner]])))) + in + let fallback_case = + if omit_future_value then + Ast_helper.Exp.case (Ast_helper.Pat.any ()) + (Ast_helper.Exp.apply + (Ast_helper.Exp.ident (mknoloc (Longident.parse "raise"))) + [ + ( Nolabel, + Ast_helper.Exp.construct + (mknoloc (Longident.parse "Not_found")) + None ); + ]) + else if Ppx_config.native () then + Ast_helper.Exp.case (Ast_helper.Pat.any ()) + (Ast_helper.Exp.variant "FutureAddedValue" + (Some + [%expr + [%e + Ast_helper.Exp.ident + { + Location.txt = Longident.parse "value"; + loc = Location.none; + }]])) + else + Ast_helper.Exp.case (Ast_helper.Pat.any ()) + (Ast_helper.Exp.variant "FutureAddedValue" + (Some + [%expr + (Obj.magic + [%e + Ast_helper.Exp.ident + { + Location.txt = Longident.parse "value"; + loc = Location.none; + }] + : Js.Json.t)])) + in + let typename_matcher = + Ast_helper.Exp.match_ [%expr typename] + (List.concat [ fragment_cases; [ fallback_case ] ]) + in + if config.native then + [%expr + let typename = + (value + |> Graphql_ppx_runtime.Json.member "__typename" + |> Graphql_ppx_runtime.Json.to_string + : string) + in + ([%e typename_matcher] : [%t base_type_name (generate_type_name path)])] + [@metaloc loc] + else + [%expr + let typename = + (Obj.magic (Js.Dict.unsafeGet (Obj.magic value) "__typename") : string) + in + ([%e typename_matcher] : [%t base_type_name (generate_type_name path)])] + [@metaloc loc] + +and generate_parser config (path : string list) definition = function + | Res_nullable { loc; inner } -> + generate_nullable_decoder config (conv_loc loc) inner path definition + | Res_array { loc; inner } -> + generate_array_decoder config (conv_loc loc) inner path definition + | Res_id { loc } -> ( + let loc = conv_loc loc in + match config.native with + | true -> [%expr Graphql_ppx_runtime.Json.to_string value] [@metaloc loc] + | false -> [%expr value] [@metaloc loc]) + | Res_string { loc } -> ( + let loc = conv_loc loc in + match config.native with + | true -> [%expr Graphql_ppx_runtime.Json.to_string value] [@metaloc loc] + | false -> [%expr value] [@metaloc loc]) + | Res_int { loc } -> ( + let loc = conv_loc loc in + match config.native with + | true -> [%expr Graphql_ppx_runtime.Json.to_int value] [@metaloc loc] + | false -> [%expr value] [@metaloc loc]) + | Res_float { loc } -> ( + let loc = conv_loc loc in + match config.native with + | true -> [%expr Graphql_ppx_runtime.Json.to_float value] [@metaloc loc] + | false -> [%expr value] [@metaloc loc]) + | Res_boolean { loc } -> ( + let loc = conv_loc loc in + match config.native with + | true -> [%expr Graphql_ppx_runtime.Json.to_bool value] [@metaloc loc] + | false -> [%expr value] [@metaloc loc]) + | Res_raw_scalar { loc } -> + let loc = conv_loc loc in + ([%expr value] [@metaloc loc]) + | Res_poly_enum { loc; enum_meta; omit_future_value } -> + generate_poly_enum_decoder (conv_loc loc) enum_meta omit_future_value + | Res_custom_decoder { loc; ident; inner } -> + generate_custom_decoder config (conv_loc loc) ident inner path definition + | Res_record + { loc; name; fields; type_name = existing_record; interface_fragments } -> + generate_object_decoder ~config ~loc:(conv_loc loc) ~name ~path ~definition + ~existing_record ~interface_fragments fields + | Res_object + { loc; name; fields; type_name = existing_record; interface_fragments } -> + generate_object_decoder ~config ~loc:(conv_loc loc) ~name ~path ~definition + ~existing_record ~interface_fragments fields + | Res_poly_variant_union + { loc; name; fragments; exhaustive; omit_future_value } -> + generate_poly_variant_union_decoder config (conv_loc loc) name fragments + exhaustive omit_future_value path definition + | Res_poly_variant_selection_set { loc; name; fragments = fields } -> + generate_poly_variant_selection_set_decoder config (conv_loc loc) name + fields path definition + | Res_poly_variant_interface { loc; name; fragments } -> + generate_poly_variant_interface_decoder config (conv_loc loc) name fragments + (name :: path) definition + | Res_solo_fragment_spread { loc; name; arguments } -> + generate_solo_fragment_spread_decoder config loc name arguments definition + | Res_error { loc; message } -> generate_error loc message diff --git a/src/ppx/output_serializer.ml b/src/ppx/output_serializer.ml new file mode 100644 index 00000000..1188939a --- /dev/null +++ b/src/ppx/output_serializer.ml @@ -0,0 +1,777 @@ +open Graphql_compiler +open Source_pos +open Schema +open Ppxlib +open Output_utils +open Extract_type_definitions +open Result_structure +open Output_types + +let conv_loc _ = Location.none +let raw_value loc = ([%expr value] [@metaloc loc]) + +let raw_opaque_object interface_fragments fields = + let has_fragments = + fields |> List.exists (function Fr_fragment_spread _ -> true | _ -> false) + in + match (has_fragments, interface_fragments) with + | true, _ -> true + | _, Some (_, []) -> false + | _, Some (_, _) -> true + | _ -> false + +let rec list_literal = function + | [] -> + Ast_helper.Exp.construct + { txt = Longident.Lident "[]"; loc = Location.none } + None + | value :: values -> + Ast_helper.Exp.construct + { txt = Longident.Lident "::"; loc = Location.none } + (Some (Ast_helper.Exp.tuple [ value; list_literal values ])) + +let rec serialize_type = function + | Type (Scalar { sm_name = "ID" }) | Type (Scalar { sm_name = "String" }) -> ( + match Ppx_config.native () with + | true -> [%expr fun a -> `String a] + | false -> [%expr fun a -> a]) + | Type (Scalar { sm_name = "Int" }) -> ( + match Ppx_config.native () with + | true -> [%expr fun a -> `Int a] + | false -> [%expr fun a -> a]) + | Type (Scalar { sm_name = "Float" }) -> ( + match Ppx_config.native () with + | true -> [%expr fun a -> `Float a] + | false -> [%expr fun a -> a]) + | Type (Scalar { sm_name = "Boolean" }) -> ( + match Ppx_config.native () with + | true -> [%expr fun a -> `Bool a] + | false -> [%expr fun a -> a]) + | Type (Scalar { sm_name = _ }) -> [%expr fun a -> a] + | Type (InputObject { iom_name }) -> + [%expr + fun a -> [%e ident_from_string ("serializeInputObject" ^ iom_name)] a] + | Type (Enum { em_values }) -> + let case_exp = + Ast_helper.Exp.match_ (ident_from_string "a") + (em_values + |> List.map (fun value -> + Ast_helper.Exp.case + (Ast_helper.Pat.variant value.evm_name None) + (match Ppx_config.native () with + | true -> + [%expr + `String + [%e + Ast_helper.Exp.constant + (Parsetree.Pconst_string + (value.evm_name, Location.none, None))]] + | false -> + Ast_helper.Exp.constant + (Parsetree.Pconst_string (value.evm_name, Location.none, None)))) + ) + in + [%expr fun a -> [%e case_exp]] + | Nullable inner -> ( + match Ppx_config.native () with + | true -> + [%expr + fun a -> + match a with None -> `Null | Some b -> [%e serialize_type inner] b] + | false -> + [%expr + fun a -> + match a with + | None -> Js.Nullable.undefined + | Some b -> Js.Nullable.return ([%e serialize_type inner] b)]) + | List inner -> ( + match Ppx_config.native () with + | true -> + [%expr + fun a -> + `List + (Array.map (fun b -> [%e serialize_type inner] b) a |> Array.to_list)] + | false -> + [%expr fun a -> Js.Array.map (fun b -> [%e serialize_type inner] b) a]) + | Type (Object _) -> [%expr fun v -> None] + | Type (Union _) -> [%expr fun v -> None] + | Type (Interface _) -> [%expr fun v -> None] + | TypeNotFound _ -> [%expr fun v -> None] + +let record_to_object loc record = + Ast_helper.Exp.extension + ({ txt = "bs.obj"; loc = conv_loc loc }, PStr [ [%stri [%e record]] ]) + +let serialize_fun fields type_name = + let arg = "inp" in + let object_ = + match Ppx_config.native () with + | true -> + let assoc_fields = + List.map + (fun (InputField { name; type_ }) -> + [%expr + [%e const_str_expr name], + [%e serialize_type type_] + [%e + Ast_helper.Exp.field + (Ast_helper.Exp.constraint_ (ident_from_string arg) + (base_type_name type_name)) + { + loc = Location.none; + Location.txt = Longident.parse (to_valid_ident name); + }]]) + fields + in + [%expr `Assoc [%e list_literal assoc_fields]] + | false -> + Ast_helper.Exp.record + (fields + |> List.map (fun (InputField { name; type_; loc }) -> + let loc = conv_loc loc in + ( { txt = Longident.parse (to_valid_ident name); loc }, + [%expr + [%e serialize_type type_] + [%e + Ast_helper.Exp.field + (Ast_helper.Exp.constraint_ (ident_from_string arg) + (base_type_name type_name)) + { + loc = Location.none; + Location.txt = Longident.parse (to_valid_ident name); + }]] ))) + None + in + Ast_helper.Exp.fun_ Nolabel None + (Ast_helper.Pat.var ~loc:Location.none { txt = arg; loc = Location.none }) + object_ + +let is_recursive input_objects = List.length input_objects > 1 + +let filter_map f = + let rec aux accu = function + | [] -> List.rev accu + | x :: l -> ( + match f x with None -> aux accu l | Some v -> aux (v :: accu) l) + in + aux [] + +let generate_serialize_variable_signatures (arg_type_defs : arg_type_def list) = + match arg_type_defs with + | [ NoVariables ] -> [%sig: val serializeVariables : unit -> Raw.t_variables] + | arg_type_defs -> + arg_type_defs + |> filter_map (function + | InputObject { name; loc } -> Some (name, loc) + | NoVariables -> None) + |> List.map (fun (name, loc) -> + let type_name = + match name with + | None -> "t_variables" + | Some input_object_name -> "t_variables_" ^ input_object_name + in + Ast_helper.Sig.value + (Ast_helper.Val.mk + { + loc = conv_loc loc; + txt = + (match name with + | None -> "serializeVariables" + | Some input_object_name -> + "serializeInputObject" ^ input_object_name); + } + (Ast_helper.Typ.arrow ~loc:(conv_loc loc) Nolabel + (base_type_name type_name) + (base_type_name ("Raw." ^ type_name))))) + +let generate_serialize_variables (arg_type_defs : arg_type_def list) = + match arg_type_defs with + | [ NoVariables ] -> ( + match Ppx_config.native () with + | true -> [%stri let serializeVariables () = `Null] + | false -> [%stri let serializeVariables () = ()]) + | arg_type_defs -> + Ast_helper.Str.value + (match is_recursive arg_type_defs with + | true -> Recursive + | false -> Nonrecursive) + (arg_type_defs + |> filter_map (function + | InputObject { name; fields; loc } -> Some (name, fields, loc) + | NoVariables -> None) + |> List.map (fun (name, fields, loc) -> + let type_name = + match name with + | None -> "t_variables" + | Some input_object_name -> "t_variables_" ^ input_object_name + in + (Ast_helper.Vb.mk + (Ast_helper.Pat.constraint_ ~loc:(conv_loc loc) + (Ast_helper.Pat.var + { + loc = conv_loc loc; + txt = + (match name with + | None -> "serializeVariables" + | Some input_object_name -> + "serializeInputObject" ^ input_object_name); + }) + (Ast_helper.Typ.arrow ~loc:(conv_loc loc) Nolabel + (base_type_name type_name) + (base_type_name ("Raw." ^ type_name)))) + (serialize_fun fields type_name) [@metaloc conv_loc loc]))) + +let generate_variable_constructors (arg_type_defs : arg_type_def list) = + match arg_type_defs with + | [ NoVariables ] -> None + | _ -> + Some + (Ast_helper.Str.value Nonrecursive + (arg_type_defs + |> filter_map (function + | InputObject { name; fields; loc } -> Some (name, fields, loc) + | NoVariables -> None) + |> List.map (fun (name, fields, loc) -> + let loc = conv_loc loc in + let rec make_labeled_fun body = function + | [] -> [%expr fun () -> [%e body]] [@metaloc loc] + | InputField { name; loc; type_ } :: tl -> + let name_loc = loc |> conv_loc in + Ast_helper.Exp.fun_ ~loc:name_loc + (match type_ with + | List _ | Type _ -> Labelled (to_valid_ident name) + | _ -> Optional (to_valid_ident name)) + None + (Ast_helper.Pat.var ~loc:name_loc + { txt = to_valid_ident name; loc = name_loc }) + (make_labeled_fun body tl) + in + let object_ = + Ast_helper.Exp.record ~loc:(loc |> conv_loc) + (fields + |> List.map (fun (InputField { name; loc }) -> + ( { + Location.txt = Longident.parse (to_valid_ident name); + loc = conv_loc loc; + }, + ident_from_string (to_valid_ident name) ))) + None + in + let body = + Ast_helper.Exp.constraint_ ~loc:(conv_loc loc) object_ + (base_type_name + (match name with + | None -> "t_variables" + | Some input_type_name -> "t_variables_" ^ input_type_name)) + in + match name with + | None -> + let make_variables_body = make_labeled_fun body fields in + [ (name, loc, make_variables_body) ] + | Some _ -> [ (name, loc, make_labeled_fun body fields) ]) + |> List.concat + |> List.map (fun (name, loc, expr) -> + (Ast_helper.Vb.mk + (Ast_helper.Pat.var + { + loc = conv_loc loc; + txt = + (match name with + | None -> "makeVariables" + | Some "make" -> "make" + | Some input_object_name -> + "makeInputObject" ^ input_object_name); + }) + expr [@metaloc conv_loc loc])))) + +let generate_variable_constructor_signatures (arg_type_defs : arg_type_def list) + = + match arg_type_defs with + | [ NoVariables ] -> [] + | _ -> + arg_type_defs + |> filter_map (function + | InputObject { name; fields; loc } -> Some (name, fields, loc) + | NoVariables -> None) + |> List.map (fun (name, fields, loc) -> + let rec make_labeled_fun final_type = function + | [] -> final_type + | InputField { name; loc; type_ } :: tl -> + Ast_helper.Typ.arrow + (match type_ with + | List _ | Type _ -> Labelled (to_valid_ident name) + | _ -> Optional (to_valid_ident name)) + (generate_arg_type ~nulls:false false loc type_) + (make_labeled_fun final_type tl) + in + let final_type = + Ast_helper.Typ.arrow Nolabel (base_type_name "unit") + (base_type_name + (match name with + | None -> "t_variables" + | Some input_type_name -> "t_variables_" ^ input_type_name)) + in + (name, loc, make_labeled_fun final_type fields)) + |> List.map (fun (name, loc, type_) -> + Ast_helper.Sig.value + (Ast_helper.Val.mk + { + loc = conv_loc loc; + txt = + (match name with + | None -> "makeVariables" + | Some "make" -> "make" + | Some input_object_name -> + "makeInputObject" ^ input_object_name); + } + type_)) + +let get_field key existing_record path = + [%expr + [%e + Ast_helper.Exp.field + (Ast_helper.Exp.constraint_ + (ident_from_string "value") + (base_type_name + (match existing_record with + | None -> generate_type_name path + | Some existing -> existing))) + { loc = Location.none; txt = Longident.parse (to_valid_ident key) }]] + +let rec generate_nullable_encoder config loc inner path definition = + match Ppx_config.native () with + | true -> + [%expr + match value with + | Some value -> [%e generate_serializer config path definition None inner] + | None -> `Null] + [@metaloc loc] + | false -> + [%expr + match value with + | Some value -> + Js.Nullable.return + [%e generate_serializer config path definition None inner] + | None -> Js.Nullable.null] + [@metaloc loc] + +and generate_array_encoder config loc inner path definition = + match Ppx_config.native () with + | true -> + [%expr + `List + (value + |> Array.map (fun value -> + [%e generate_serializer config path definition None inner]) + |> Array.to_list)] + [@metaloc loc] + | false -> + [%expr + value + |> Js.Array.map (fun value -> + [%e generate_serializer config path definition None inner])] + [@metaloc loc] + +and generate_poly_enum_encoder loc enum_meta omit_future_value = + let enum_match_arms = + enum_meta.em_values + |> List.map (fun { evm_name; _ } -> + Ast_helper.Exp.case + (Ast_helper.Pat.variant evm_name None) + (match Ppx_config.native () with + | true -> [%expr `String [%e const_str_expr evm_name]] + | false -> const_str_expr evm_name)) + in + let fallback_arm = + Ast_helper.Exp.case + (Ast_helper.Pat.variant "FutureAddedValue" + (Some (Ast_helper.Pat.var { loc; txt = "other" }))) + (match Ppx_config.native () with + | true -> [%expr `String [%e ident_from_string "other"]] + | false -> ident_from_string "other") + in + let match_expr = + Ast_helper.Exp.match_ [%expr value] + (List.concat + [ + enum_match_arms; + (match omit_future_value with + | true -> [] + | false -> [ fallback_arm ]); + ]) + in + [%expr [%e match_expr]] + +and generate_custom_encoder config loc ident inner path definition = + ([%expr + let value = [%e ident_from_string (ident ^ ".serialize")] value in + [%e generate_serializer config path definition None inner]] + [@metaloc loc]) + +and generate_object_encoder config loc _name fields path definition + existing_record typename interface_fragments = + let is_opaque = raw_opaque_object interface_fragments fields in + let do_obj_constructor_base wrap = + match + fields + |> filter_map (function + | Fr_fragment_spread _ -> None + | Fr_named_field { name; type_ } -> Some (name, type_)) + with + | [] -> ( + match Ppx_config.native () with + | true -> [%expr `Assoc []] + | false -> [%expr Js.Dict.empty]) + | fields -> + let record = + Ast_helper.Exp.record + (let fields = + if + typename <> None + && not + (fields + |> List.exists (function + | "__typename", _ -> true + | _ -> false)) + then + ("__typename", Res_string { loc = conv_loc_from_ast loc }) + :: fields + else fields + in + fields + |> List.map (fun (key, _inner) -> + let key_value = + { Location.txt = Longident.parse (to_valid_ident key); loc } + in + match (key, typename) with + | "__typename", Some typename -> + (key_value, const_str_expr typename) + | _ -> (key_value, ident_from_string (to_valid_ident key)))) + None + in + let record = + match wrap with true -> record_to_object loc record | false -> record + in + let bindings = + fields + |> List.map (fun (key, inner) -> + Ast_helper.Vb.mk + (Ast_helper.Pat.var { txt = to_valid_ident key; loc }) + [%expr + let value = [%e get_field key existing_record path] in + [%e + generate_serializer config (key :: path) definition None + inner]]) + |> List.rev + in + Ast_helper.Exp.let_ Nonrecursive bindings record + in + let do_json_encoder () = + match + fields + |> filter_map (function + | Fr_fragment_spread _ -> None + | Fr_named_field { name; type_ } -> Some (name, type_)) + with + | [] -> [%expr `Assoc []] + | fields -> + let assoc_fields = + (if + typename <> None + && not + (fields + |> List.exists (function "__typename", _ -> true | _ -> false)) + then + ("__typename", Res_string { loc = conv_loc_from_ast loc }) :: fields + else fields) + |> List.map (fun (key, _inner) -> + match (key, typename) with + | "__typename", Some typename -> + [%expr "__typename", `String [%e const_str_expr typename]] + | key, _ -> + [%expr + [%e const_str_expr key], + [%e ident_from_string (to_valid_ident key)]]) + in + let assoc = [%expr `Assoc [%e list_literal assoc_fields]] in + let bindings = + fields + |> List.map (fun (key, inner) -> + Ast_helper.Vb.mk + (Ast_helper.Pat.var { txt = to_valid_ident key; loc }) + [%expr + let value = [%e get_field key existing_record path] in + [%e + generate_serializer config (key :: path) definition None + inner]]) + |> List.rev + in + Ast_helper.Exp.let_ Nonrecursive bindings assoc + in + let do_obj_constructor () = + (do_obj_constructor_base true [@metaloc conv_loc loc]) + in + let do_obj_constructor_records () = + match Ppx_config.native () with + | true -> do_json_encoder () + | false -> + Ast_helper.Exp.constraint_ + (do_obj_constructor_base false) + (base_type_name ("Raw." ^ generate_type_name path)) + [@metaloc conv_loc loc] + in + let merge_into_opaque () = + let fields = + fields + |> List.fold_left + (fun acc -> function + | Fr_named_field _ -> acc + | Fr_fragment_spread { key; name } -> + (match Ppx_config.native () with + | true -> + [%expr + [%e ident_from_string (name ^ ".toJson")] + ([%e ident_from_string (name ^ ".serialize")] + [%e get_field key existing_record path])] + | false -> + [%expr + (Obj.magic + ([%e ident_from_string (name ^ ".serialize")] + [%e get_field key existing_record path]) + : Js.Json.t)]) + :: acc) + [] + |> List.rev + in + let fields = + match interface_fragments with + | None | Some (_, []) -> fields + | Some (interface_name, fragments) -> + (match Ppx_config.native () with + | true -> + [%expr + let value = [%e get_field "fragment" None path] in + [%e + generate_poly_variant_interface_encoder config loc interface_name + fragments path definition]] + | false -> + [%expr + let value = [%e get_field "fragment" None path] in + (Obj.magic + [%e + generate_poly_variant_interface_encoder config loc + interface_name fragments path definition] + : Js.Json.t)]) + :: fields + in + match Ppx_config.native () with + | true -> + [%expr + Array.fold_left Graphql_ppx_runtime.deepMerge [%e do_obj_constructor ()] + [%e fields |> Ast_helper.Exp.array]] + | false -> + [%expr + (Obj.magic + (Js.Array.reduce Graphql_ppx_runtime.deepMerge + (Obj.magic [%e do_obj_constructor ()] : Js.Json.t) + [%e fields |> Ast_helper.Exp.array]) + : [%t base_type_name ("Raw." ^ generate_type_name path)])] + in + match is_opaque with + | true -> merge_into_opaque () + | false -> do_obj_constructor_records () + +and generate_poly_variant_union_encoder config _loc _name fragments _exhaustive + omit_future_value path definition = + let fragment_cases = + fragments + |> List.map (fun (({ item = type_name } : Result_structure.name), inner) -> + Ast_helper.Exp.case + (Ast_helper.Pat.variant type_name + (Some (Ast_helper.Pat.var { txt = "value"; loc = Location.none }))) + (match Ppx_config.native () with + | true -> ( + let expr = + generate_serializer config (type_name :: path) definition + (Some type_name) inner + in + match inner with + | Res_solo_fragment_spread _ -> + [%expr + Graphql_ppx_runtime.assign_typename [%e expr] + [%e const_str_expr type_name]] + | _ -> expr) + | false -> ( + let raw_type_name = + base_type_name ("Raw." ^ generate_type_name path) + in + let expr = + [%expr + [%e + generate_serializer config (type_name :: path) definition + (Some type_name) inner]] + in + match inner with + | Res_solo_fragment_spread _ -> + [%expr + (Obj.magic + (Graphql_ppx_runtime.assign_typename + (Obj.magic [%e expr] : Js.Json.t) + [%e const_str_expr type_name]) + : [%t raw_type_name])] + | _ -> [%expr (Obj.magic [%e expr] : [%t raw_type_name])]))) + in + let fallback_case = + Ast_helper.Exp.case + (Ast_helper.Pat.variant "FutureAddedValue" + (Some (Ast_helper.Pat.var { txt = "value"; loc = Location.none }))) + (match Ppx_config.native () with + | true -> [%expr value] + | false -> + [%expr + (Obj.magic value + : [%t base_type_name ("Raw." ^ generate_type_name path)])]) + in + let typename_matcher = + Ast_helper.Exp.match_ [%expr value] + (List.concat + [ + fragment_cases; + (match omit_future_value with + | true -> [] + | false -> [ fallback_case ]); + ]) + in + [%expr [%e typename_matcher]] + +and generate_poly_variant_selection_set_encoder _config _loc _name _fields _path + _definition = + let e = + match Ppx_config.native () with + | true -> [%expr `Null] + | false -> [%expr Obj.magic Js.Json.null] + in + [%expr + let _temp = value in + [%e e]] + +and generate_poly_variant_interface_encoder config _loc name fragments path + definition = + let fragment_cases = + fragments + |> List.map (fun (type_name, inner) -> + Ast_helper.Exp.case + (Ast_helper.Pat.variant type_name + (Some (Ast_helper.Pat.var { txt = "value"; loc = Location.none }))) + (match Ppx_config.native () with + | true -> + generate_serializer config + (type_name :: name :: path) + definition (Some type_name) inner + | false -> + [%expr + (Obj.magic + [%e + generate_serializer config + (type_name :: name :: path) + definition (Some type_name) inner] + : [%t + base_type_name ("Raw." ^ generate_type_name (name :: path))])])) + in + let fallback_case = + Ast_helper.Exp.case + (Ast_helper.Pat.variant "UnspecifiedFragment" + (Some (Ast_helper.Pat.any ()))) + (match Ppx_config.native () with + | true -> [%expr `Assoc []] + | false -> + [%expr + (Obj.magic (Js.Dict.empty ()) + : [%t base_type_name ("Raw." ^ generate_type_name (name :: path))])]) + in + let typename_matcher = + Ast_helper.Exp.match_ [%expr value] + (List.concat [ fragment_cases; [ fallback_case ] ]) + in + [%expr [%e typename_matcher]] + +and generate_solo_fragment_spread_encorder _config _loc name _arguments + _definition = + match Ppx_config.native () with + | true -> + [%expr + [%e ident_from_string (name ^ ".toJson")] + ([%e ident_from_string (name ^ ".serialize")] + [%e ident_from_string "value"])] + | false -> + [%expr + [%e ident_from_string (name ^ ".serialize")] + [%e ident_from_string "value"]] + +and generate_error loc message = + let loc = Output_utils.conv_loc loc in + let ext = + Ocaml_common.Ast_mapper.extension_of_error + (Ocaml_common.Location.error ~loc message) + in + let extension = Ocaml_common.Ast_helper.Exp.extension ~loc ext in + [%expr + let _value = value in + [%e To_ppxlib.copy_expression extension]] + +and generate_serializer (config : Generator_utils.output_config) + (path : string list) (definition : Graphql_ast.definition) typename = function + | Res_nullable { loc; inner } -> + generate_nullable_encoder config (conv_loc loc) inner path definition + | Res_array { loc; inner } -> + generate_array_encoder config (conv_loc loc) inner path definition + | Res_id { loc } -> ( + let loc = conv_loc loc in + match Ppx_config.native () with + | true -> [%expr `String value] [@metaloc loc] + | false -> raw_value loc) + | Res_string { loc } -> ( + let loc = conv_loc loc in + match Ppx_config.native () with + | true -> [%expr `String value] [@metaloc loc] + | false -> raw_value loc) + | Res_int { loc } -> ( + let loc = conv_loc loc in + match Ppx_config.native () with + | true -> [%expr `Int value] [@metaloc loc] + | false -> raw_value loc) + | Res_float { loc } -> ( + let loc = conv_loc loc in + match Ppx_config.native () with + | true -> [%expr `Float value] [@metaloc loc] + | false -> raw_value loc) + | Res_boolean { loc } -> ( + let loc = conv_loc loc in + match Ppx_config.native () with + | true -> [%expr `Bool value] [@metaloc loc] + | false -> raw_value loc) + | Res_raw_scalar { loc } -> raw_value (conv_loc loc) + | Res_poly_enum { loc; enum_meta; omit_future_value } -> + generate_poly_enum_encoder (conv_loc loc) enum_meta omit_future_value + | Res_custom_decoder { loc; ident; inner } -> + generate_custom_encoder config (conv_loc loc) ident inner path definition + | Res_record + { loc; name; fields; type_name = existing_record; interface_fragments } + | Res_object + { loc; name; fields; type_name = existing_record; interface_fragments } -> + generate_object_encoder config (conv_loc loc) name fields path definition + existing_record typename interface_fragments + | Res_poly_variant_union + { loc; name; fragments; exhaustive; omit_future_value } -> + generate_poly_variant_union_encoder config (conv_loc loc) name fragments + exhaustive omit_future_value path definition + | Res_poly_variant_selection_set { loc; name; fragments = fields } -> + generate_poly_variant_selection_set_encoder config (conv_loc loc) name + fields path definition + | Res_poly_variant_interface { loc; name; fragments } -> + generate_poly_variant_interface_encoder config (conv_loc loc) name fragments + path definition + | Res_solo_fragment_spread { loc; name; arguments } -> + generate_solo_fragment_spread_encorder config (conv_loc loc) name arguments + definition + | Res_error { loc; message } -> generate_error loc message diff --git a/src/ppx/output_types.ml b/src/ppx/output_types.ml new file mode 100644 index 00000000..680cbe82 --- /dev/null +++ b/src/ppx/output_types.ml @@ -0,0 +1,781 @@ +open Graphql_compiler +open Result_structure +open Extract_type_definitions +open Source_pos +open Output_utils +open Ppxlib + +let loc = Location.none + +let make_error_raiser message = + if Ppx_config.native () then + if Ppx_config.verbose_error_handling () then + [%expr raise (Failure ("graphql-ppx: " ^ [%e message]))] + else [%expr raise (Failure "Unexpected GraphQL query response")] + else if Ppx_config.verbose_error_handling () then + [%expr Js.Exn.raiseError ("graphql-ppx: " ^ [%e message])] + else [%expr Js.Exn.raiseError "Unexpected GraphQL query response"] + +let const_str_expr s = Ast_helper.Exp.constant (Pconst_string (s, loc, None)) + +let base_type ?(inner = []) ?loc name = + Ast_helper.Typ.constr + { + Location.txt = Longident.parse name; + loc = (match loc with None -> Location.none | Some loc -> loc); + } + inner + +let rec generate_type ?atLoc ~config ~path ~raw = function + | Res_string _ -> base_type ?loc:atLoc "string" + | Res_nullable { inner } -> + if raw then + base_type + ~inner:[ generate_type ~config ~path ~raw inner ] + "Js.Nullable.t" + else + base_type ?loc:atLoc + ~inner:[ generate_type ~config ~path ~raw inner ] + "option" + | Res_array { inner } -> + base_type ?loc:atLoc + ~inner:[ generate_type ~config ~path ~raw inner ] + "array" + | Res_custom_decoder { ident = module_name; inner } -> + if raw then generate_type ~config ~path ~raw inner + else base_type ?loc:atLoc (module_name ^ ".t") + | Res_id _ -> base_type ?loc:atLoc "string" + | Res_int _ -> base_type ?loc:atLoc "int" + | Res_float _ -> base_type ?loc:atLoc "float" + | Res_boolean _ -> base_type ?loc:atLoc "bool" + | Res_raw_scalar _ -> + base_type ?loc:atLoc + (match Ppx_config.native () with + | true -> "Graphql_ppx_runtime.Json.t" + | false -> "Js.Json.t") + | Res_object { type_name } | Res_record { type_name } -> ( + match (type_name, raw) with + | Some type_name, false -> base_type ?loc:atLoc type_name + | _, _ -> base_type ?loc:atLoc (generate_type_name path)) + | Res_poly_variant_selection_set _ | Res_poly_variant_union _ -> + base_type ?loc:atLoc (generate_type_name path) + | Res_poly_variant_interface { name } -> + base_type ?loc:atLoc (generate_type_name (name :: path)) + | Res_solo_fragment_spread { loc; name = module_name; type_name } -> + if raw then + base_type ~loc:(conv_loc loc) (module_name ^ ".Raw.t_" ^ type_name) + else base_type ~loc:(conv_loc loc) (module_name ^ ".t_" ^ type_name) + | Res_error { loc; message = error } -> + Location.raise_errorf ~loc:(conv_loc loc) "%s" error + | Res_poly_enum _ -> base_type ?loc:atLoc (generate_type_name path) + +let wrap_type_declaration ?loc:_ ?manifest inner path = + Ast_helper.Type.mk ~kind:inner ?manifest + { loc = Location.none; txt = generate_type_name path } + +let generate_opaque path (_loc : ast_location option) = + Ast_helper.Type.mk { loc = Location.none; txt = generate_type_name path } + +let raw_opaque_object interface_fragments fields = + let has_fragments = + fields |> List.exists (function Fragment _ -> true | _ -> false) + in + match (has_fragments, interface_fragments) with + | true, _ -> true + | _, Some (_, []) -> false + | _, Some (_, _) -> true + | _ -> false + +let already_has__typename fields = + List.exists + (function Field { path = "__typename" :: _ } -> true | _ -> false) + fields + +let variant_interface_type ~name:interface_name ~config ~fragments ~path + ~(loc : ast_location option) ~raw = + let map_case_ty (name, res) = + { + prf_desc = + Rtag + ( { + txt = name; + loc = + (match loc with + | Some loc -> conv_loc loc + | None -> Location.none); + }, + false, + [ + generate_type ~config + ~path:(name :: interface_name :: path) + ~raw res; + ] ); + prf_loc = + (match loc with Some loc -> conv_loc loc | None -> Location.none); + prf_attributes = []; + } + in + let fallback_case_ty = + { + prf_desc = + Rtag + ( { + txt = "UnspecifiedFragment"; + loc = + (match loc with + | Some loc -> conv_loc loc + | None -> Location.none); + }, + false, + [ base_type_name "string" ] ); + prf_loc = + (match loc with Some loc -> conv_loc loc | None -> Location.none); + prf_attributes = []; + } + in + let fragment_case_tys = fragments |> List.map map_case_ty in + Ast_helper.Typ.variant (fallback_case_ty :: fragment_case_tys) Closed None + +let generate_variant_interface ~emit_locations ~name ~config ~fragments ~path + ~(loc : ast_location) ~raw = + wrap_type_declaration Ptype_abstract + ?manifest: + (match raw with + | true -> None + | false -> + Some + (variant_interface_type ~name ~config ~fragments ~path + ~loc:(match emit_locations with true -> Some loc | false -> None) + ~raw)) + ?loc:(match emit_locations with true -> Some loc | false -> None) + (name :: path) + +let generate_record_type ~config ~obj_path ~raw ~(loc : ast_location) + ~is_variant ~interface_fragments ~emit_locations fields = + let record_fields = + fields + |> List.fold_left + (fun acc -> function + | Fragment { key; loc_key; module_name; type_name } -> + Ast_helper.Type.field + { Location.txt = key; loc = Location.none } + (Ast_helper.Typ.constr + { + Location.txt = + Longident.parse + (module_name ^ ".t" + ^ + match type_name with + | None -> "" + | Some type_name -> "_" ^ type_name); + loc = + (match not raw with + | true -> conv_loc loc_key + | false -> Location.none); + } + []) + :: acc + | Field { path = name :: path; type_; loc_key; loc = _loc_field } -> + let valid_name = to_valid_ident name in + Ast_helper.Type.field + ?loc: + (match emit_locations with + | true -> None + | false -> Some (conv_loc loc_key)) + ~attrs: + (match name = valid_name with + | true -> [] + | false -> + [ + Ast_helper.Attr.mk + { txt = "bs.as"; loc = Location.none } + (PStr [ Ast_helper.Str.eval (const_str_expr name) ]); + ]) + { + Location.txt = valid_name; + loc = + (match emit_locations with + | true -> Location.none + | false -> conv_loc loc_key); + } + (generate_type + ?atLoc: + (match emit_locations with + | true -> None + | false -> Some (conv_loc loc_key)) + ~config ~path:(name :: path) ~raw type_) + :: acc + | Field { path = []; loc } -> + Location.raise_errorf ~loc:(loc |> conv_loc) "No path") + [] + |> List.rev + in + let record_fields = + if raw && is_variant && not (already_has__typename fields) then + Ast_helper.Type.field + { Location.txt = "__typename"; loc = Location.none } + (base_type_name "string") + :: record_fields + else record_fields + in + let record_fields = + match interface_fragments with + | Some (_, []) | None -> record_fields + | Some (interface_name, _fragments) -> + Ast_helper.Type.field + { Location.txt = "fragment"; loc = Location.none } + (base_type (generate_type_name (interface_name :: obj_path))) + :: record_fields + in + match raw && raw_opaque_object interface_fragments fields with + | true -> + generate_opaque obj_path + (match emit_locations with true -> Some loc | false -> None) + | false -> + wrap_type_declaration (Ptype_record record_fields) + ~loc:(match emit_locations with true -> Some loc | false -> None) + obj_path + +let generate_variant_selection ~emit_locations config fields path + (loc : ast_location) raw = + if raw then + generate_opaque path + (match emit_locations with true -> Some loc | false -> None) + else + wrap_type_declaration Ptype_abstract + ~manifest: + (Ast_helper.Typ.variant + (fields + |> List.map (fun ((name : Result_structure.name), res) -> + { + prf_desc = + Rtag + ( { + txt = String.capitalize_ascii name.item; + loc = Location.none; + }, + false, + [ + generate_type + ?atLoc: + (match emit_locations with + | true -> + Some + (conv_loc + (config.Generator_utils.map_loc name.span)) + | false -> None) + ~config ~path:(name.item :: path) ~raw res; + ] ); + prf_loc = Location.none; + prf_attributes = []; + })) + Closed None) + ?loc:(match emit_locations with true -> Some loc | false -> None) + path + +let generate_variant_union ~emit_locations config + (fields : (Result_structure.name * Result_structure.t) list) omit_future_value + path (loc : ast_location) raw = + if raw then + generate_opaque path + (match emit_locations with true -> Some loc | false -> None) + else + let fallback_case_ty = + match omit_future_value with + | true -> [] + | false -> + [ + { + prf_desc = + Rtag + ( { + txt = "FutureAddedValue"; + loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + }, + false, + [ + base_type + (match Ppx_config.native () with + | true -> "Graphql_ppx_runtime.Json.t" + | false -> "Js.Json.t"); + ] ); + prf_loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + prf_attributes = []; + }; + ] + in + let fragment_case_tys = + fields + |> List.map (fun (name, res) -> + { + prf_desc = + Rtag + ( { + txt = name.item; + loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + }, + false, + [ + generate_type + ?atLoc: + (match emit_locations with + | true -> + Some + (conv_loc + (config.Generator_utils.map_loc name.span)) + | false -> None) + ~config ~path:(name.item :: path) ~raw res; + ] ); + prf_loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + prf_attributes = []; + }) + in + wrap_type_declaration Ptype_abstract + ~manifest: + (Ast_helper.Typ.variant + (List.concat [ fallback_case_ty; fragment_case_tys ]) + Closed None) + ?loc: + (match emit_locations with + | true -> Some (conv_loc loc) + | false -> None) + path + +let generate_enum ~emit_locations _config fields path ~(loc : ast_location) raw + omit_future_value = + wrap_type_declaration Ptype_abstract + ~manifest: + (if raw then base_type "string" + else + Ast_helper.Typ.variant + (List.append + (match omit_future_value with + | true -> [] + | false -> + [ + { + prf_desc = + Rtag + ( { + txt = "FutureAddedValue"; + loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + }, + false, + [ base_type "string" ] ); + prf_loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + prf_attributes = []; + }; + ]) + (fields + |> List.map (fun field -> + { + prf_desc = + Rtag + ( { + txt = to_valid_ident field; + loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + }, + true, + [] ); + prf_loc = + (match emit_locations with + | true -> conv_loc loc + | false -> Location.none); + prf_attributes = []; + }))) + Closed None + [@metaloc + match emit_locations with + | true -> conv_loc loc + | false -> Location.none]) + ~loc path + +let generate_object_type ~emit_locations config fields obj_path raw + (loc : ast_location) is_variant interface_fragments = + let object_fields = + fields + |> List.fold_left + (fun acc -> function + | Fragment { key; loc_key; module_name; type_name } -> + { + pof_desc = + Otag + ( { txt = key; loc = Location.none }, + Ast_helper.Typ.constr + { + Location.txt = + Longident.parse + (module_name ^ ".t" + ^ + match type_name with + | None -> "" + | Some type_name -> "_" ^ type_name); + loc = + (match not raw with + | true -> conv_loc loc_key + | false -> Location.none); + } + [] ); + pof_loc = Location.none; + pof_attributes = []; + } + :: acc + | Field { path = name :: path; loc_key; type_ } -> + { + pof_desc = + Otag + ( { txt = to_valid_ident name; loc = Location.none }, + generate_type + ?atLoc: + (match emit_locations with + | true -> None + | false -> Some (conv_loc loc_key)) + ~config ~path:(name :: path) ~raw type_ ); + pof_loc = Location.none; + pof_attributes = []; + } + :: acc + | Field { path = []; loc } -> + Location.raise_errorf ~loc:(loc |> conv_loc) "No path") + [] + |> List.rev + in + let object_fields = + if raw && is_variant && not (already_has__typename fields) then + { + pof_desc = + Otag + ( { txt = to_valid_ident "__typename"; loc = Location.none }, + base_type_name "string" ); + pof_loc = Location.none; + pof_attributes = []; + } + :: object_fields + else object_fields + in + let object_fields = + match interface_fragments with + | Some (_, []) | None -> object_fields + | Some (interface_name, _fragments) -> + { + pof_desc = + Otag + ( { txt = "fragment"; loc = Location.none }, + base_type (generate_type_name (interface_name :: obj_path)) ); + pof_loc = Location.none; + pof_attributes = []; + } + :: object_fields + in + match raw && raw_opaque_object interface_fragments fields with + | true -> + generate_opaque obj_path + (match emit_locations with true -> Some loc | false -> None) + | false -> + wrap_type_declaration + ~manifest: + (Ast_helper.Typ.constr + { Location.txt = Longident.parse "Js.t"; loc = Location.none } + [ Ast_helper.Typ.object_ object_fields Closed ]) + Ptype_abstract + ?loc:(match emit_locations with true -> Some loc | false -> None) + obj_path + +let generate_graphql_object ~(config : Generator_utils.output_config) ~obj_path + ~raw ~emit_locations ~loc ~is_variant ~type_name ~interface_fragments fields = + match type_name with + | Some type_name -> + wrap_type_declaration ~manifest:(base_type type_name) Ptype_abstract + ?loc:(match emit_locations with true -> Some loc | false -> None) + obj_path + | None -> + generate_record_type ~emit_locations ~config ~obj_path ~raw ~loc ~is_variant + ~interface_fragments fields + +let generate_types ~(config : Generator_utils.output_config) ~raw + ~emit_locations ~type_name ~fragment_name res = + extract ~fragment_def:(Option.is_some fragment_name) ~path:[] ~raw res + |> List.map (function + | Object + { fields; path = obj_path; loc; variant_parent; interface_fragments } + -> + generate_graphql_object ~config ~obj_path ~raw ~loc ~emit_locations + ~is_variant:variant_parent ~type_name ~interface_fragments fields + | VariantSelection { loc; path; fields } -> + generate_variant_selection ~emit_locations config fields path loc raw + | VariantUnion { loc; path; fields; omit_future_value } -> + generate_variant_union ~emit_locations config fields omit_future_value + path loc raw + | VariantInterface { name; loc; path; fragments } -> + generate_variant_interface ~emit_locations ~name ~config ~fragments + ~path ~loc ~raw + | Enum { loc; path; fields; omit_future_value } -> + generate_enum ~emit_locations config fields path ~loc raw + omit_future_value) + |> List.rev + +let make_fragment_type config raw type_name fragment_name fragment_name_loc = + Ast_helper.Type.mk + ~manifest: + (Ast_helper.Typ.constr + (match raw with + | true -> mknoloc (Longident.Lident "t") + | false -> + mkloc + (match type_name with + | Some type_name -> Longident.parse type_name + | None -> Longident.Lident "t") + (match fragment_name_loc with + | Some fragment_name_loc -> + conv_loc (config.Generator_utils.map_loc fragment_name_loc) + | None -> Location.none)) + []) + (mknoloc ("t_" ^ fragment_name)) + +let generate_type_structure_items config res raw type_name fragment_name = + let str_type types = Ast_helper.Str.type_ Nonrecursive types in + let types = + generate_types ~config ~emit_locations:false ~raw ~type_name ~fragment_name + res + |> List.map (fun type_ -> Ast_helper.Str.type_ Recursive [ type_ ]) + in + match fragment_name with + | Some (fragment_name, _fragment_name_loc) -> ( + match Schema.lookup_type config.schema fragment_name with + | Some (Interface interface_meta) -> + List.append types + (str_type + [ + make_fragment_type config raw type_name interface_meta.im_name None; + ] + :: (Schema.lookup_implementations config.schema interface_meta + |> List.filter_map (fun (type_meta : Schema.type_meta) -> + match type_meta with + | Object { om_name } -> + Some + (str_type + [ make_fragment_type config raw type_name om_name None ]) + | _ -> None))) + | Some (Object _) -> + List.append types + [ + str_type + [ make_fragment_type config raw type_name fragment_name None ]; + ] + | _ -> types) + | None -> types + +let generate_type_signature_items (config : Generator_utils.output_config) res + raw type_name fragment_name = + let emit_locations = match raw with true -> false | false -> true in + let types = + generate_types ~config ~emit_locations ~raw ~type_name ~fragment_name res + |> List.map (fun type_ -> Ast_helper.Sig.type_ Recursive [ type_ ]) + in + let sig_type types = Ast_helper.Sig.type_ Nonrecursive types in + match fragment_name with + | Some (fragment_name, fragment_name_loc) -> ( + match Schema.lookup_type config.schema fragment_name with + | Some (Interface interface_meta) -> + List.append types + (sig_type + [ + make_fragment_type config raw type_name interface_meta.im_name None; + ] + :: (Schema.lookup_implementations config.schema interface_meta + |> List.filter_map (fun (type_meta : Schema.type_meta) -> + match type_meta with + | Object { om_name } -> + Some + (sig_type + [ make_fragment_type config raw type_name om_name None ]) + | _ -> None))) + | Some (Object _) -> + List.append types + [ + sig_type + [ + make_fragment_type config raw type_name fragment_name + (match emit_locations with + | true -> Some fragment_name_loc + | false -> None); + ]; + ] + | _ -> types) + | None -> types + +let rec generate_arg_type ?(nulls = true) raw originalLoc = + let loc = + match raw with true -> None | false -> Some (conv_loc originalLoc) + in + function + | Type (Scalar { sm_name = "ID" }) | Type (Scalar { sm_name = "String" }) -> + base_type ?loc "string" + | Type (Scalar { sm_name = "Int" }) -> base_type ?loc "int" + | Type (Scalar { sm_name = "Float" }) -> base_type ?loc "float" + | Type (Scalar { sm_name = "Boolean" }) -> base_type ?loc "bool" + | Type (Scalar { sm_name = _ }) -> + base_type ?loc + (match Ppx_config.native () with + | true -> "Graphql_ppx_runtime.Json.t" + | false -> "Js.Json.t") + | Type (Enum enum_meta) -> + if raw then base_type "string" + else + let open Graphql_compiler.Schema in + Ast_helper.Typ.variant ?loc + (enum_meta.em_values + |> List.map (fun { evm_name; _ } -> + { + prf_desc = + Rtag ({ txt = evm_name; loc = Location.none }, true, []); + prf_loc = Location.none; + prf_attributes = []; + })) + Closed None + | Type (InputObject { iom_name }) -> + base_type ?loc (generate_type_name ~prefix:"t_variables" [ iom_name ]) + | Type (Object _) -> + Location.raise_errorf ~loc:(originalLoc |> conv_loc) + "Object not allowed in args" + | Type (Union _) -> + Location.raise_errorf ~loc:(originalLoc |> conv_loc) + "Union not allowed in args" + | Type (Interface _) -> + Location.raise_errorf ~loc:(originalLoc |> conv_loc) + "Interface not allowed in args" + | Nullable inner -> ( + match nulls with + | true -> + base_type ?loc + ~inner:[ generate_arg_type raw (conv_loc_from_ast Location.none) inner ] + (match raw with true -> "Js.Nullable.t" | false -> "option") + | false -> generate_arg_type raw (conv_loc_from_ast Location.none) inner) + | List inner -> + base_type ?loc + ~inner:[ generate_arg_type raw (conv_loc_from_ast Location.none) inner ] + "array" + | TypeNotFound name -> + Location.raise_errorf ~loc:(originalLoc |> conv_loc) "Type %s not found!" + name + +let generate_empty_input_object impl raw = + match Ppx_config.native () && raw with + | true -> + Ast_helper.Type.mk + ?manifest: + (match not impl with + | true -> None + | false -> Some (base_type_name "Graphql_ppx_runtime.Json.t")) + { loc = Location.none; txt = generate_type_name ~prefix:"t_variables" [] } + | false -> + Ast_helper.Type.mk ~manifest:(base_type_name "unit") + { loc = Location.none; txt = generate_type_name ~prefix:"t_variables" [] } + +let generate_record_input_object raw input_obj_name fields = + Ast_helper.Type.mk + ~kind: + (Ptype_record + (fields + |> List.map (function InputField { name; type_; loc } -> + let valid_name = to_valid_ident name in + Ast_helper.Type.field + ~attrs: + (if valid_name = name then [] + else + match Ppx_config.native () with + | true -> [] + | false -> + [ + Ast_helper.Attr.mk + { txt = "bs.as"; loc = Location.none } + (PStr [ Ast_helper.Str.eval (const_str_expr name) ]); + ]) + { + Location.txt = valid_name; + loc = + (match raw with + | true -> Location.none + | false -> conv_loc loc); + } + (generate_arg_type raw + { + loc with + loc_ghost = + (match input_obj_name with + | None -> false + | Some _ -> true); + } + type_)))) + { + loc = Location.none; + txt = + generate_type_name ~prefix:"t_variables" + (match input_obj_name with None -> [] | Some name -> [ name ]); + } + +let generate_native_raw_input_object impl input_obj_name = + Ast_helper.Type.mk + ?kind:(match impl with true -> None | false -> Some Ptype_abstract) + ?manifest: + (match impl with + | true -> + Some + (Ast_helper.Typ.constr + (mknoloc (Longident.parse "Graphql_ppx_runtime.Json.t")) + []) + | false -> None) + { + loc = Location.none; + txt = + generate_type_name ~prefix:"t_variables" + (match input_obj_name with None -> [] | Some name -> [ name ]); + } + +let generate_input_object impl raw _ input_obj_name fields = + match Ppx_config.native () && raw with + | true -> generate_native_raw_input_object impl input_obj_name + | false -> generate_record_input_object raw input_obj_name fields + +let generate_arg_type_structure_items raw config variable_defs = + let input_objects = extract_args config variable_defs in + [ + input_objects + |> List.map (function + | NoVariables -> generate_empty_input_object true raw + | InputObject { name; fields } -> + generate_input_object true raw config name fields) + |> Ast_helper.Str.type_ Recursive; + ] + +let generate_arg_type_signature_items raw config variable_defs = + let input_objects = extract_args config variable_defs in + [ + input_objects + |> List.map (function + | NoVariables -> generate_empty_input_object false raw + | InputObject { name; fields } -> + generate_input_object false raw config name fields) + |> Ast_helper.Sig.type_ Recursive; + ] diff --git a/src/ppx/output_utils.ml b/src/ppx/output_utils.ml new file mode 100644 index 00000000..ff60a8ac --- /dev/null +++ b/src/ppx/output_utils.ml @@ -0,0 +1,142 @@ +open Graphql_compiler +open Ppxlib + +let conv_pos pos = + { + Lexing.pos_fname = pos.Source_pos.pos_fname; + Lexing.pos_lnum = pos.Source_pos.pos_lnum; + Lexing.pos_bol = pos.Source_pos.pos_bol; + Lexing.pos_cnum = pos.Source_pos.pos_cnum; + } + +let extend_loc_from_start (loc : Location.t) cnum = + { + loc with + loc_end = { loc.loc_start with pos_cnum = loc.loc_start.pos_cnum + cnum }; + } + +let base_type_name ?(loc = Location.none) name = + Ast_helper.Typ.constr { txt = Longident.parse name; loc } [] + +let const_str_expr s = + Ast_helper.Exp.constant (Pconst_string (s, Location.none, None)) + +let const_str_pat s = + Ast_helper.Pat.constant (Pconst_string (s, Location.none, None)) + +let ident_from_string ?(loc = Location.none) ident = + Ast_helper.Exp.ident ~loc { txt = Longident.parse ident; loc } + +let mkloc txt loc = { Location.txt; loc } +let mknoloc txt = mkloc txt Location.none + +module Conv = Ppxlib_ast.Select_ast (Ppxlib_ast__.Versions.OCaml_current) +module Of_ppxlib = Conv.To_ocaml +module To_ppxlib = Conv.Of_ocaml + +let to_valid_ident ident = + if ident.[0] >= '0' && ident.[0] <= '9' then "_" ^ ident + else + match + [ + "and"; + "as"; + "asr"; + "assert"; + "begin"; + "class"; + "constraint"; + "do"; + "done"; + "downto"; + "else"; + "end"; + "esfun"; + "exception"; + "external"; + "false"; + "for"; + "fun"; + "function"; + "functor"; + "if"; + "in"; + "include"; + "inherit"; + "initializer"; + "land"; + "lazy"; + "let"; + "lor"; + "lsl"; + "lsr"; + "lxor"; + "match"; + "method"; + "mod"; + "module"; + "mutable"; + "new"; + "nonrec"; + "object"; + "of"; + "open"; + "open!"; + "or"; + "pri"; + "private"; + "pub"; + "public"; + "rec"; + "sig"; + "struct"; + "switch"; + "then"; + "to"; + "true"; + "try"; + "type"; + "val"; + "virtual"; + "when"; + "while"; + "with"; + ] + |> List.exists (fun reserved_word -> ident = reserved_word) + with + | true -> ident ^ "_" + | false -> ident + +let ppxlib_position (pos : Source_pos.ast_position) = + { + Ppxlib.pos_fname = pos.pos_fname; + pos_lnum = pos.pos_lnum; + pos_bol = pos.pos_bol; + pos_cnum = pos.pos_cnum; + } + +let ppxlib_position_to_ast (pos : Ppxlib.position) = + { + Source_pos.pos_fname = pos.pos_fname; + pos_lnum = pos.pos_lnum; + pos_bol = pos.pos_bol; + pos_cnum = pos.pos_cnum; + } + +let ppxlib_location (loc : Source_pos.ast_location) = + { + Ppxlib.loc_start = ppxlib_position loc.loc_start; + loc_end = ppxlib_position loc.loc_end; + loc_ghost = loc.loc_ghost; + } + +let ppxlib_location_to_ast (loc : Ppxlib.location) = + { + Source_pos.loc_start = ppxlib_position_to_ast loc.loc_start; + loc_end = ppxlib_position_to_ast loc.loc_end; + loc_ghost = loc.loc_ghost; + } + +let conv_loc loc = ppxlib_location loc +let conv_pos_from_ast pos = ppxlib_position pos +let conv_loc_from_ast loc = ppxlib_location_to_ast loc diff --git a/src/ppx/rescript_config.ml b/src/ppx/rescript_config.ml new file mode 100644 index 00000000..10e8d4e0 --- /dev/null +++ b/src/ppx/rescript_config.ml @@ -0,0 +1,278 @@ +open Graphql_compiler + +module Paths = struct + let bsconfig = "bsconfig.json" + let bsbProjectRoot = ref "" + let projectRoot = ref "" + + let rec findProjectRoot ~dir = + if Sys.file_exists (Filename.concat dir bsconfig) then dir + else + let parent = dir |> Filename.dirname in + if parent = dir then + if not (Ppx_config.native ()) then ( + prerr_endline + ("Error: cannot find project root containing " ^ bsconfig ^ "."); + assert false) + else dir + else findProjectRoot ~dir:parent + + let setProjectRoot () = + projectRoot := findProjectRoot ~dir:(Sys.getcwd ()); + bsbProjectRoot := + match Sys.getenv_opt "BSB_PROJECT_ROOT" with + | None -> !projectRoot + | Some s -> s + + let concat = Filename.concat + + let getBsConfigFile () = + let bsconfig = concat !projectRoot bsconfig in + match bsconfig |> Sys.file_exists with + | true -> Some bsconfig + | false -> None +end + +exception Config_error of string + +let defaultConfig = + let open Ppx_config in + { + verbose_logging = false; + output_mode = Ppx_config.String; + verbose_error_handling = + (match Sys.getenv "NODE_ENV" with + | "production" -> false + | _ -> true + | exception Not_found -> true); + apollo_mode = false; + schema_file = "graphql_schema.json"; + root_directory = Sys.getcwd (); + raise_error_with_loc = + (fun loc message -> + let loc = Output_utils.conv_loc loc in + raise (Location.Error (Location.error ~loc message))); + template_tag = None; + template_tag_location = None; + template_tag_import = None; + template_tag_return_type = None; + template_tag_is_function = None; + custom_fields = Hashtbl.create 0; + future_added_value = true; + extend_query = None; + extend_query_no_required_variables = None; + extend_mutation = None; + extend_mutation_no_required_variables = None; + extend_subscription = None; + extend_subscription_no_required_variables = None; + extend_fragment = None; + fragment_in_query = Include; + native = true; + } + +module JsonHelper = struct + open Json.Util + + let mapBool option update json = + try update (json |> fun json -> json |> member option |> to_bool) with + | Json.Util.Type_error _ -> () + | other -> raise other + + let mapString option update json = + try update (json |> fun json -> json |> member option |> to_string) with + | Json.Util.Type_error _ -> () + | other -> raise other +end + +let read_custom_fields json = + let open Json.Util in + let custom_fields = Ppx_config.custom_fields () |> Hashtbl.copy in + let custom_fields_result_depr = + try json |> member "custom-fields" |> to_assoc with + | Json.Util.Type_error _ -> [] + | other -> raise other + in + let custom_fields_result = + try json |> member "customFields" |> to_assoc with + | Json.Util.Type_error _ -> [] + | other -> raise other + in + List.append custom_fields_result_depr custom_fields_result + |> List.map (fun (key, value) -> + let value = + try Some (value |> to_string) with + | Json.Util.Type_error _ -> None + | other -> raise other + in + (key, value)) + |> List.iter (fun (key, value) -> + match value with + | Some value -> Hashtbl.add custom_fields key value + | None -> ()); + Ppx_config.update_config (fun current -> { current with custom_fields }); + () + +let read_config () = + Ppx_config.set_config defaultConfig; + Paths.setProjectRoot (); + let open Json.Util in + let parseConfig (json : Json.t) = + let ppxConfig = json |> member "graphql" in + let handleVerboseLogging verbose_logging = + Ppx_config.update_config (fun current -> { current with verbose_logging }) + in + let handleFutureAddedValue future_added_value = + Ppx_config.update_config (fun current -> + { current with future_added_value }) + in + let handleOmitFutureAddedValue omit_future_added_value = + Ppx_config.update_config (fun current -> + { current with future_added_value = not omit_future_added_value }) + in + let handleApolloMode apollo_mode = + Ppx_config.update_config (fun current -> { current with apollo_mode }) + in + let handleSchema schema_file = + Ppx_config.update_config (fun current -> { current with schema_file }) + in + let handleAstOut ast_out = + Ppx_config.update_config (fun current -> + { + current with + output_mode = + (match ast_out with + | "apollo" -> Ppx_config.Apollo_AST + | "string" -> Ppx_config.String + | other -> + raise + (Config_error + ("Error in graphql configuration: ast-out \"" ^ other + ^ "\" is not supported. Choose either apollo or string."))); + }) + in + let handleFragmentInQuery mode = + match mode with + | "include" -> + Ppx_config.update_config (fun current -> + { current with fragment_in_query = Include }) + | "exclude" -> + Ppx_config.update_config (fun current -> + { current with fragment_in_query = Exclude }) + | other -> + raise + (Config_error + ("Error in graphql-ppx configuration: fragment-in-query\"" ^ other + ^ "\" is not supported. Choose either 'include' or 'exclude'.")) + in + let handleExtendQuery extend_query = + Ppx_config.update_config (fun current -> + { current with extend_query = Some extend_query }) + in + let handleExtendQueryNoRequiredVariables extend_query = + Ppx_config.update_config (fun current -> + { current with extend_query_no_required_variables = Some extend_query }) + in + let handleExtendMutation extend_mutation = + Ppx_config.update_config (fun current -> + { current with extend_mutation = Some extend_mutation }) + in + let handleExtendMutationNoRequiredVariables extend_mutation = + Ppx_config.update_config (fun current -> + { + current with + extend_mutation_no_required_variables = Some extend_mutation; + }) + in + let handleExtendSubscription extend_subscription = + Ppx_config.update_config (fun current -> + { current with extend_subscription = Some extend_subscription }) + in + let handleExtendSubscriptionNoRequiredVariables extend_subscription = + Ppx_config.update_config (fun current -> + { + current with + extend_subscription_no_required_variables = Some extend_subscription; + }) + in + let handleExtendFragment extend_fragment = + Ppx_config.update_config (fun current -> + { current with extend_fragment = Some extend_fragment }) + in + let handleTemplateTag template_tag = + Ppx_config.update_config (fun current -> + { current with template_tag = Some template_tag }) + in + let handleTemplateTagImport template_tag_import = + Ppx_config.update_config (fun current -> + { current with template_tag_import = Some template_tag_import }) + in + let handleTemplateTagLocation template_tag_location = + Ppx_config.update_config (fun current -> + { current with template_tag_location = Some template_tag_location }) + in + let handleTemplateTagReturnType template_tag_return_type = + Ppx_config.update_config (fun current -> + { + current with + template_tag_return_type = Some template_tag_return_type; + }) + in + let handleTemplateTagIsFunction template_tag_is_function = + Ppx_config.update_config (fun current -> + { + current with + template_tag_is_function = Some template_tag_is_function; + }) + in + let configBool key value = ppxConfig |> JsonHelper.mapBool key value in + let configString key value = ppxConfig |> JsonHelper.mapString key value in + + configBool "verbose" handleVerboseLogging; + configBool "future-added-value" handleFutureAddedValue; + configBool "futureAddedValue" handleFutureAddedValue; + configBool "omitFutureAddedValue" handleOmitFutureAddedValue; + configBool "apollo-mode" handleApolloMode; + configBool "apolloMode" handleApolloMode; + configString "schema" handleSchema; + configString "ast-out" handleAstOut; + configString "astOut" handleAstOut; + configString "fragment-in-query" handleFragmentInQuery; + configString "fragmentInQuery" handleFragmentInQuery; + configString "extend-query" handleExtendQuery; + configString "extendQuery" handleExtendQuery; + configString "extend-query-no-required-variables" + handleExtendQueryNoRequiredVariables; + configString "extendQueryNoRequiredVariables" + handleExtendQueryNoRequiredVariables; + configString "extend-mutation" handleExtendMutation; + configString "extendMutation" handleExtendMutation; + configString "extend-mutation-no-required-variables" + handleExtendMutationNoRequiredVariables; + configString "extendMutationNoRequiredVariables" + handleExtendMutationNoRequiredVariables; + configString "extend-subscription" handleExtendSubscription; + configString "extendSubscription" handleExtendSubscription; + configString "extend-subscription-no-required-variables" + handleExtendSubscriptionNoRequiredVariables; + configString "extendSubscriptionNoRequiredVariables" + handleExtendSubscriptionNoRequiredVariables; + configString "extend-fragment" handleExtendFragment; + configString "extendFragment" handleExtendFragment; + configString "template-tag" handleTemplateTag; + configString "templateTag" handleTemplateTag; + configString "template-tag-import" handleTemplateTagImport; + configString "templateTagImport" handleTemplateTagImport; + configString "template-tag-location" handleTemplateTagLocation; + configString "templateTagLocation" handleTemplateTagLocation; + configString "template-tag-return-type" handleTemplateTagReturnType; + configString "templateTagReturnType" handleTemplateTagReturnType; + configBool "template-tag-is-function" handleTemplateTagIsFunction; + configBool "templateTagIsFunction" handleTemplateTagIsFunction; + read_custom_fields ppxConfig + in + match Paths.getBsConfigFile () with + | Some bsConfigFile -> ( + try bsConfigFile |> Json.Read.from_file |> parseConfig with + | Config_error _ as e -> raise e + | _ -> ()) + | None -> () diff --git a/src/bucklescript/runtime/dune b/src/ppx/runtime/dune similarity index 53% rename from src/bucklescript/runtime/dune rename to src/ppx/runtime/dune index db48bf7b..48109e97 100644 --- a/src/bucklescript/runtime/dune +++ b/src/ppx/runtime/dune @@ -1,4 +1,3 @@ (library (public_name graphql_ppx.graphql_ppx_runtime) - (name graphql_ppx_runtime) - (libraries yojson)) + (name graphql_ppx_runtime)) diff --git a/src/ppx/runtime/graphql_ppx_runtime.ml b/src/ppx/runtime/graphql_ppx_runtime.ml new file mode 100644 index 00000000..6ed25443 --- /dev/null +++ b/src/ppx/runtime/graphql_ppx_runtime.ml @@ -0,0 +1,85 @@ +let option_map f o = match o with Some x -> Some (f x) | None -> None + +module Json = struct + type t = + [ `Null + | `Bool of bool + | `Int of int + | `Float of float + | `String of string + | `Assoc of (string * t) list + | `List of t list ] + + exception Type_error of string * t + + let typeof = function + | `Assoc _ -> "object" + | `Bool _ -> "bool" + | `Float _ -> "float" + | `Int _ -> "int" + | `List _ -> "array" + | `Null -> "null" + | `String _ -> "string" + + let typerr msg js = raise (Type_error (msg ^ typeof js, js)) + let assoc name obj = try List.assoc name obj with Not_found -> `Null + + let member name = function + | `Assoc obj -> assoc name obj + | js -> typerr ("Can't get member '" ^ name ^ "' of non-object type ") js + + let to_string = function + | `String s -> s + | js -> typerr "Expected string, got " js + + let to_float = function + | `Float f -> f + | js -> typerr "Expected float, got " js + + let to_int = function `Int i -> i | js -> typerr "Expected int, got " js + let to_bool = function `Bool b -> b | js -> typerr "Expected bool, got " js +end + +let assign_typename (json : Json.t) (typename : string) = + match json with + | `Assoc assoc_list -> `Assoc (("__typename", `String typename) :: assoc_list) + | other -> other + +let rec merge_pairs (pairs1 : (string * Json.t) list) + (pairs2 : (string * Json.t) list) = + let unique_keys = + List.append + (List.map (fun (k, _) -> k) pairs1) + (List.map (fun (k, _) -> k) pairs2) + |> List.fold_left + (fun unique_keys key -> + if List.exists (fun k -> k = key) unique_keys then key :: unique_keys + else unique_keys) + [] + in + unique_keys + |> List.map (fun key -> + ( key, + match + ( List.find_opt (fun (assoc_key, _) -> key = assoc_key) pairs1 + |> option_map (fun pair -> snd pair), + List.find_opt (fun (assoc_key, _) -> key = assoc_key) pairs2 + |> option_map (fun pair -> snd pair) ) + with + | Some (`Assoc pairs1), Some (`Assoc pairs2) -> + `Assoc (merge_pairs pairs1 pairs2) + | _, Some (`Assoc pairs2) -> `Assoc pairs2 + | _, Some any -> any + | Some any, _ -> any + | None, None -> assert false )) + +and deepMerge (json1 : Json.t) (json2 : Json.t) = + match (json1, json2) with + | `Assoc pairs1, `Assoc pairs2 -> `Assoc (merge_pairs pairs1 pairs2) + | _, `Bool value -> `Bool value + | _, `Float value -> `Float value + | _, `String value -> `String value + | _, `List values -> `List values + | _, `Int value -> `Int value + | _, `Null -> `Null + | _, _ -> assert false diff --git a/tests.sh b/tests.sh new file mode 100755 index 00000000..4e8a83db --- /dev/null +++ b/tests.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# setopt extendedglob + +function snapshotGeneratePath { + echo "$(dirname $1)/expected/$2/generate/$(basename $1).txt" +} + +function snapshotCompilePath { + echo "$(dirname $1)/expected/$2/compile/$(basename $1).txt" +} + +function snapshotErrorPath { + echo "$(dirname $1)/expected/$(basename $1).txt" +} + +taskCount=0 +function maybeWait { + let taskCount+=1 + # spawn in batch of 20 processes + [[ $((taskCount % 20)) = 0 ]] && printf "." && wait +} + +case $(uname) in + Darwin) platform=darwin;; + Linux) platform=linux;; + Windows) platform=win32;; + *) + echo "Unknown OS: $uname" + exit 1 +esac + +refmt_path="./node_modules/rescript/${platform}/refmt.exe" +ppx_path="./_build/default/src/bin/bin.exe" +bsb_path="./node_modules/rescript/${platform}/bsc.exe" +declare -a configs=('records' 'template' 'apollo' 'native') + +rm -rf snapshot_tests/operations/expected/ +rm -rf snapshot_tests/operations/error/expected/ + +for config in "${configs[@]}"; do + case $config in + "records" ) opts="" ;; + "template") opts="-template-tag-location=gql" ;; + "apollo" ) opts="-apollo-mode" ;; + "native" ) opts="-native" ;; + esac + + mkdir -p snapshot_tests/operations/expected/$config/generate + mkdir -p snapshot_tests/operations/expected/$config/compile + mkdir -p snapshot_tests/operations/errors/expected + + for file in snapshot_tests/operations/*.re; do + $refmt_path --parse=re --print=binary $file | $ppx_path -schema=graphql_schema.json $opts /dev/stdin /dev/stdout | $refmt_path --parse=binary &> $(snapshotGeneratePath $file $config) & maybeWait + + if [[ $config != "native" ]]; then + $bsb_path -I ./utilities -w -30 -ppx "$ppx_path -schema=graphql_schema.json $opts" $file &> $(snapshotCompilePath $file $config) & maybeWait + fi + done +done +for file in snapshot_tests/operations/errors/*.re; do + $bsb_path -I ./utilities -w -30 -ppx "$ppx_path -schema=graphql_schema.json" $file 2> $(snapshotErrorPath $file $config) 1> /dev/null & maybeWait +done + +wait + +warningYellow='\033[0;33m' +successGreen='\033[0;32m' +reset='\033[0m' + +diff=$(git ls-files --modified snapshot_tests/operations/*expected/*.txt) +printf "\033[2K\r" + +if [[ $diff = "" ]]; then + printf "${successGreen}✅ No unstaged tests difference.${reset}\n" +else + printf "${warningYellow}⚠️ There are unstaged differences in tests! Did you break a test?\n${diff}\n${reset}" + exit 1 +fi diff --git a/tests_bucklescript/.vscode b/tests_bucklescript/.vscode deleted file mode 100644 index 3952d9ea..00000000 --- a/tests_bucklescript/.vscode +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ocaml.sandbox": { - "switch": "4.06.1", - "kind": "opam" - } -} diff --git a/tests_bucklescript/tests/RunTests.re b/tests_bucklescript/tests/RunTests.re deleted file mode 100644 index fdec41b1..00000000 --- a/tests_bucklescript/tests/RunTests.re +++ /dev/null @@ -1 +0,0 @@ -Tests.TestFramework.cli(); diff --git a/tests_bucklescript/tests/Snapshots.re b/tests_bucklescript/tests/Snapshots.re deleted file mode 100644 index a6e2764a..00000000 --- a/tests_bucklescript/tests/Snapshots.re +++ /dev/null @@ -1,474 +0,0 @@ -open TestFramework; -let win = Sys.win32 || Sys.cygwin; - -let detect_platform = () => { - let ic = Unix.open_process_in("uname"); - let uname = input_line(ic); - let () = close_in(ic); - switch (win, uname) { - | (true, _) => "win32" - | (_, "Darwin") => "darwin" - | _ => "linux" - }; -}; -let platform = detect_platform(); -let refmt_path = "./node_modules/rescript/" ++ platform ++ "/refmt.exe"; -let ppx_path = "./_build/default/src/bucklescript_bin/bin.exe"; - -let rec really_read = (fd, ~buf, ~start=0, ~length=1024, ()) => - if (length <= 0) { - (); - } else { - let bytes = Bytes.create(length); - let result = Unix.read(fd, bytes, start, length); - switch (result) { - | r when r < length => - Buffer.add_subbytes(buf, bytes, 0, r); - Unix.close(fd); - | r => - Buffer.add_subbytes(buf, bytes, 0, r); - really_read(fd, ~buf, ~start=0, ~length, ()); - }; - }; - -let start_ppx = (path, opts) => { - let (in_read, in_write) = Unix.pipe(~cloexec=true, ()); - let (err_read, err_write) = - try(Unix.pipe(~cloexec=true, ())) { - | e => - Unix.close(in_read); - Unix.close(in_write); - raise(e); - }; - let (in_read_2, in_write_2) = - try(Unix.pipe(~cloexec=true, ())) { - | e => - Unix.close(in_read); - Unix.close(in_write); - Unix.close(err_read); - Unix.close(err_write); - raise(e); - }; - let (in_read_3, in_write_3) = - try(Unix.pipe(~cloexec=true, ())) { - | e => - Unix.close(in_read); - Unix.close(in_write); - Unix.close(err_read); - Unix.close(err_write); - Unix.close(in_read_2); - Unix.close(in_write_2); - raise(e); - }; - - let _ = - try({ - let _ = - Unix.create_process( - refmt_path, - [|"", "--parse=re", "--print", "binary", path|], - Unix.stdin, - in_write, - err_write, - ); - let output_opts = - win ? [|"-", "-o", "-"|] : [|"/dev/stdin", "/dev/stdout"|]; - - let _ = - Unix.create_process( - ppx_path, - Array.concat([ - [|"", "-schema", "graphql_schema.json"|], - opts, - output_opts, - ]), - in_read, - in_write_2, - err_write, - ); - let _ = - Unix.create_process( - refmt_path, - [|"", "--parse=binary"|], - in_read_2, - in_write_3, - err_write, - ); - - (); - }) { - | e => - Unix.close(in_write); - Unix.close(in_read); - Unix.close(err_write); - Unix.close(in_write_2); - Unix.close(in_read_2); - Unix.close(in_write_3); - raise(e); - }; - - ( - (in_read, in_write), - (in_read_2, in_write_2), - (in_read_3, in_write_3), - (err_read, err_write), - ); -}; -let continue_ppx = - ( - ( - (in_read, in_write), - (in_read_2, in_write_2), - (in_read_3, in_write_3), - (err_read, err_write), - ), - ) => { - Unix.close(in_read); - Unix.close(in_write); - Unix.close(in_read_2); - Unix.close(in_write_2); - Unix.close(err_write); - Unix.close(in_write_3); - - let output_buf = Buffer.create(1024); - let error_buf = Buffer.create(1024); - really_read(in_read_3, ~buf=output_buf, ()); - really_read(err_read, ~buf=error_buf, ()); - let output = Buffer.contents(output_buf); - let error = Buffer.contents(error_buf); - - (output, error); -}; - -type lineAction = - | Skip - | Add - | ModifyPath; -let process_error = error => { - let next_line_contains_filename = ref(false); - let buf = Buffer.create(String.length(error)); - - error - |> String.trim - |> String.split_on_char('\n') - |> List.iter(line => { - let action = - switch (next_line_contains_filename^, String.sub(line, 0, 13)) { - // line starting with command line does not produce stable output - | (true, _) => - next_line_contains_filename := false; - ModifyPath; - | (_, "Command line:") => Skip - | (_, "We've found a") - | (_, " We've found") => - next_line_contains_filename := true; - Add; - | _ => Add - | exception (Invalid_argument(_)) => Add - }; - switch (action) { - | Add => - Buffer.add_string(buf, line); - Buffer.add_char(buf, '\n'); - | Skip => () - | ModifyPath => - let segments = String.split_on_char('/', line); - let first_segment = segments |> List.hd; - let last_segment = - List.length(segments) > 1 ? segments |> List.rev |> List.hd : ""; - Buffer.add_string(buf, first_segment); - Buffer.add_string(buf, last_segment); - Buffer.add_char(buf, '\n'); - }; - }); - String.trim(Buffer.contents(buf)); -}; - -let bsb_path = "./node_modules/rescript/" ++ platform ++ "/bsc.exe"; -let start_bsb = (~ppxOptions, ~filename, ~pathIn) => { - let (out_read, out_write) = Unix.pipe(~cloexec=true, ()); - let (err_read, err_write) = - try(Unix.pipe(~cloexec=true, ())) { - | e => - Unix.close(out_read); - Unix.close(out_write); - raise(e); - }; - let _ = - try({ - let _ = - Unix.create_process( - bsb_path, - [| - "", - "-I", - "./utilities", - "-w", - "-30", - "-ppx", - ppx_path - ++ " -schema=graphql_schema.json " - ++ Array.fold_left( - (acc, ppxOption) => (acc == "" ? "" : " ") ++ ppxOption, - "", - ppxOptions, - ), - pathIn ++ "/" ++ filename, - |], - Unix.stdin, - out_write, - err_write, - ); - (); - }) { - | e => - Unix.close(out_read); - Unix.close(out_write); - Unix.close(err_read); - Unix.close(err_write); - raise(e); - }; - ((out_read, out_write), (err_read, err_write)); -}; - -let continue_bsb = (((out_read, out_write), (err_read, err_write))) => { - Unix.close(out_write); - Unix.close(err_write); - - let output_buf = Buffer.create(1024); - let error_buf = Buffer.create(1024); - really_read(out_read, ~buf=output_buf, ()); - really_read(err_read, ~buf=error_buf, ()); - let output = Buffer.contents(output_buf); - let error = process_error(Buffer.contents(error_buf)); - - (output, error); -}; - -let filenames = - Sys.readdir("tests_bucklescript/operations") - |> Array.to_list - |> List.filter(name => { - switch (String.split_on_char('.', name) |> List.rev) { - | ["re", _] => true - | _ => false - } - }); - -let error_filenames = - Sys.readdir("tests_bucklescript/operations/errors") - |> Array.to_list - |> List.filter(name => { - switch (String.split_on_char('.', name) |> List.rev) { - | ["re", _] => true - | _ => false - } - }); - -type ppx_config = { - name: string, - options: array(string), - native: bool, -}; - -let ppx_configs = [ - {name: "Records", options: [||], native: false}, - { - name: "Template", - options: [|"-template-tag-location=gql"|], - native: false, - }, - {name: "Apollo", options: [|"-apollo-mode"|], native: false}, - {name: "Native", options: [|"-native"|], native: true}, -]; - -type test_type = - | Generate - | Compile - | Error; - -let test_types = [Generate, Compile, Error]; - -type descriptor('a, 'b) = - | Ppx('a) - | Bsb('b); - -type test('a, 'b) = { - id: int, - test_type, - ppx_config, - filename: string, - descriptors: option(descriptor('a, 'b)), -}; - -let increm = ref(1); -let get_id = () => { - increm := increm^ + 1; - increm^; -}; -let tests = - test_types - |> List.map(test_type => - ppx_configs - |> List.map(ppx_config => - switch (test_type) { - | Generate - | Compile => - if (ppx_config.native && test_type == Compile) { - []; - } else { - filenames - |> List.map(filename => - { - id: get_id(), - test_type, - ppx_config, - filename, - descriptors: None, - } - ); - } - | Error => - if (!ppx_config.native) { - error_filenames - |> List.map(filename => - { - id: get_id(), - test_type, - ppx_config, - filename, - descriptors: None, - } - ); - } else { - []; - } - } - ) - ); - -// on macOS the number of in-flight file descriptors is max 256 -let concurrent_processes = 30; - -let inflight_files = ref(tests |> List.flatten |> List.flatten); -let fill_inflight = () => { - inflight_files := - inflight_files^ - |> List.mapi((i, test) => - switch (test) { - | {descriptors: None, _} when i < concurrent_processes => { - ...test, - descriptors: - Some( - switch (test) { - | {test_type: Generate, filename, ppx_config, _} => - Ppx( - start_ppx( - "tests_bucklescript/operations/" ++ filename, - ppx_config.options, - ), - ) - | {test_type: Compile, filename, ppx_config, _} => - Bsb( - start_bsb( - ~ppxOptions=ppx_config.options, - ~filename, - ~pathIn="tests_bucklescript/operations", - ), - ) - - | {test_type: Error, filename, ppx_config, _} => - Bsb( - start_bsb( - ~ppxOptions=ppx_config.options, - ~filename, - ~pathIn="tests_bucklescript/operations/errors", - ), - ) - }, - ), - } - | test => test - } - ); -}; - -let remove_inflight = id => { - inflight_files := - inflight_files^ |> List.filter(({id: this_id, _}) => id != this_id); -}; - -let get_descriptors = id => { - switch (List.find(({id: this_id, _}) => this_id == id, inflight_files^)) { - | {descriptors: Some(descriptors), _} => - remove_inflight(id); - descriptors; - | {descriptors: None, _} => raise(Not_found) - }; -}; - -let get_ppx_descriptors = - fun - | Ppx(descriptor) => descriptor - | _ => raise(Not_found); -let get_bsb_descriptors = - fun - | Bsb(descriptor) => descriptor - | _ => raise(Not_found); - -let get_type_and_config = tests => - switch (tests) { - | [{ppx_config, test_type, _}, ..._] => (test_type, ppx_config) - | _ => raise(Not_found) - }; - -tests -|> List.iter(tests_by_type => { - tests_by_type - |> List.iter(tests_by_config => { - switch (tests_by_config) { - | [] => () - | _ => - let (test_type, ppx_config) = - get_type_and_config(tests_by_config); - let typeName = - switch (test_type) { - | Generate => "Generate" - | Compile => "Compile" - | Error => "Error" - }; - - describe(typeName ++ " " ++ ppx_config.name, ({describe, _}) => { - tests_by_config - |> List.iter(({filename, id, _}) => { - describe(filename, ({test, _}) => { - test("output", ({expect, _}) => { - fill_inflight(); - switch (test_type) { - | Generate => - let descriptors = - id |> get_descriptors |> get_ppx_descriptors; - let (output, error) = continue_ppx(descriptors); - expect.string(output).toMatchSnapshot(); - expect.string(error).toEqual(""); - - | Compile => - let descriptors = - id |> get_descriptors |> get_bsb_descriptors; - let (output, error) = descriptors |> continue_bsb; - expect.string(output).toMatchSnapshot(); - expect.string(error).toEqual(""); - - | Error => - let descriptors = - id |> get_descriptors |> get_bsb_descriptors; - let (_, error) = descriptors |> continue_bsb; - expect.string(error).toMatchSnapshot(); - }; - }) - }) - }) - }); - } - }) - }); diff --git a/tests_bucklescript/tests/TestFramework.re b/tests_bucklescript/tests/TestFramework.re deleted file mode 100644 index 7aaa540c..00000000 --- a/tests_bucklescript/tests/TestFramework.re +++ /dev/null @@ -1,8 +0,0 @@ -/* TestFramework.re */ -include Rely.Make({ - let config = - Rely.TestFrameworkConfig.initialize({ - snapshotDir: "tests_bucklescript/__snapshots__", - projectDir: "tests_bucklescript", - }); -}); diff --git a/tests_bucklescript/tests/dune b/tests_bucklescript/tests/dune deleted file mode 100644 index 3ba95d2d..00000000 --- a/tests_bucklescript/tests/dune +++ /dev/null @@ -1,17 +0,0 @@ -;; dune file - -(library - (name Tests) - ; the linkall flag ensures that all of our tests are compiled and the - ; -g flag emits debugging information - (ocamlopt_flags -linkall -g) - ; you will want to depend on the library you are testing as well, however for - ; the purposes of this example we are only depending on the test runner itself - (libraries rely.lib graphql_ppx.base graphql_ppx) - (modules - (:standard \ RunTests))) - -(executable - (name RunTests) - (libraries Tests) - (modules RunTests)) diff --git a/tests_bucklescript/utilities/GraphQL_PPX.re b/tests_bucklescript/utilities/GraphQL_PPX.re deleted file mode 100644 index d72cee06..00000000 --- a/tests_bucklescript/utilities/GraphQL_PPX.re +++ /dev/null @@ -1,52 +0,0 @@ -// will be inlined by bucklescript -let%private clone: Js.Dict.t('a) => Js.Dict.t('a) = - a => Obj.magic(Js.Obj.assign(Obj.magic(Js.Obj.empty()), Obj.magic(a))); - -// merging two json objects deeply -let rec deepMerge = (json1: Js.Json.t, json2: Js.Json.t) => { - switch ( - ( - Obj.magic(json1) == Js.null, - Js_array2.isArray(json1), - Js.typeof(json1) == "object", - ), - ( - Obj.magic(json2) == Js.null, - Js_array2.isArray(json2), - Js.typeof(json2) == "object", - ), - ) { - // merge two arrays - | ((_, true, _), (_, true, _)) => ( - Obj.magic( - Js.Array.mapi( - (el1, idx) => { - let el2 = Js.Array.unsafe_get(Obj.magic(json2), idx); - // it cannot be undefined, because two arrays should always be the - // same length in graphql responses - Js.typeof(el2) == "object" ? deepMerge(el1, el2) : el2; - }, - Obj.magic(json1), - ), - ): Js.Json.t - ) - // two objects that are not null and not arrays - | ((false, false, true), (false, false, true)) => - let obj1 = clone(Obj.magic(json1)); - let obj2 = Obj.magic(json2); - Js.Dict.keys(obj2) - |> Js.Array.forEach(key => { - let existingVal: Js.Json.t = Js.Dict.unsafeGet(obj1, key); - let newVal: Js.Json.t = Js.Dict.unsafeGet(obj2, key); - Js.Dict.set( - obj1, - key, - Js.typeof(existingVal) != "object" - ? newVal : Obj.magic(deepMerge(existingVal, newVal)), - ); - }); - Obj.magic(obj1); - // object that becomes null - | ((_, _, _), (_, _, _)) => json2 - }; -}; diff --git a/tests_native/arg_named_query.ml b/tests_native/arg_named_query.ml new file mode 100644 index 00000000..e3333dfe --- /dev/null +++ b/tests_native/arg_named_query.ml @@ -0,0 +1,23 @@ +open Test_shared + +module My_query = +[%graphql +{| + query ($query: Int!) { + argNamedQuery(query: $query) + } +|}] + +let serializes_variables () = + test_json_ + (My_query.makeVariables ~query:2 () + |> My_query.serializeVariables |> My_query.variablesToJson) + (Json.Read.from_string {|{"query": 2}|}) + +let no_name_clash () = test_str_not My_query.query "a query" + +let tests = + [ + ("Serializes variables", serializes_variables); + ("The name 'query' does not clash with the query argument", no_name_clash); + ] diff --git a/tests_native/arg_named_query.re b/tests_native/arg_named_query.re deleted file mode 100644 index 58380bae..00000000 --- a/tests_native/arg_named_query.re +++ /dev/null @@ -1,29 +0,0 @@ -open Test_shared; - -module My_query = [%graphql - {| - query ($query: Int!) { - argNamedQuery(query: $query) - } -|} -]; - -let serializes_variables = () => - test_json( - My_query.makeVariables(~query=2, ()) - |> My_query.serializeVariables - |> My_query.variablesToJson, - Yojson.Basic.from_string({|{"query": 2}|}), - ); - -let no_name_clash = () => - Alcotest.(check(neg(string), "strings", My_query.query, "a query")); - -let tests = [ - ("Serializes variables", `Quick, serializes_variables), - ( - "The name 'query' does not clash with the query argument", - `Quick, - no_name_clash, - ), -]; diff --git a/tests_native/cli_colors.ml b/tests_native/cli_colors.ml new file mode 100644 index 00000000..d5c26ae6 --- /dev/null +++ b/tests_native/cli_colors.ml @@ -0,0 +1,34 @@ +let reset = "\027[0m" +let bold = "\027[1m" +let cursive = "\027[3m" +let underline = "\027[4m" +let black = "\027[0;30m" +let red = "\027[0;31m" +let green = "\027[0;32m" +let yellow = "\027[0;33m" +let blue = "\027[0;34m" +let purple = "\027[0;35m" +let cyan = "\027[0;36m" +let white = "\027[0;37m" + +module HighIntensity = struct + let black = "\027[0;90m" + let red = "\027[0;91m" + let green = "\027[0;92m" + let yellow = "\027[0;93m" + let blue = "\027[0;94m" + let purple = "\027[0;95m" + let cyan = "\027[0;96m" + let white = "\027[0;97m" +end + +module Dimmed = struct + let black = "\027[2;30m" + let red = "\027[2;31m" + let green = "\027[2;32m" + let yellow = "\027[2;33m" + let blue = "\027[2;34m" + let purple = "\027[2;35m" + let cyan = "\027[2;36m" + let white = "\027[2;37m" +end diff --git a/tests_native/comment.re b/tests_native/comment.ml similarity index 70% rename from tests_native/comment.re rename to tests_native/comment.ml index c5321264..c4406149 100644 --- a/tests_native/comment.re +++ b/tests_native/comment.ml @@ -1,7 +1,7 @@ -module My_query = [%graphql - {| +module My_query = +[%graphql +{| query ($arg: NonrecursiveInput!) { nonrecursiveInput(arg: $arg) # comment to test } -|} -]; +|}] diff --git a/tests_native/custom_decoder.ml b/tests_native/custom_decoder.ml new file mode 100644 index 00000000..32dde938 --- /dev/null +++ b/tests_native/custom_decoder.ml @@ -0,0 +1,45 @@ +open Test_shared + +module IntOfString = struct + let parse = int_of_string + let serialize = string_of_int + + type t = int +end + +module StringOfInt = struct + let parse = string_of_int + let serialize = int_of_string + + type t = string +end + +module My_query = +[%graphql +{| + { + variousScalars { + string @ppxDecoder(module: "IntOfString") + int @ppxDecoder(module: "StringOfInt") + } + } +|}] + +type t = My_query.t + +let equal_payload (a : t) (b : t) = + a.variousScalars.string = b.variousScalars.string + && a.variousScalars.int = b.variousScalars.int + +let payload_to_json p = p |> My_query.serialize |> My_query.toJson + +let test_payload (a : t) (b : t) = + test_json_ (payload_to_json a) (payload_to_json b) + +let runs_the_decoder () = + test_payload + (Json.Read.from_string {|{"variousScalars": {"string": "123", "int": 456}}|} + |> My_query.unsafe_fromJson |> My_query.parse) + { variousScalars = { string = 123; int = "456" } } + +let tests = [ ("Runs the decoder", runs_the_decoder) ] diff --git a/tests_native/custom_decoder.re b/tests_native/custom_decoder.re deleted file mode 100644 index 58d3138c..00000000 --- a/tests_native/custom_decoder.re +++ /dev/null @@ -1,61 +0,0 @@ -module IntOfString = { - let parse = int_of_string; - let serialize = string_of_int; - type t = int; -}; - -module StringOfInt = { - let parse = string_of_int; - let serialize = int_of_string; - type t = string; -}; - -module My_query = [%graphql - {| - { - variousScalars { - string @ppxDecoder(module: "IntOfString") - int @ppxDecoder(module: "StringOfInt") - } - } -|} -]; - -type qt = My_query.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: t) => - Format.fprintf( - formatter, - "string = @[%i@]; int = @[%s@]>@] >", - obj.variousScalars.string, - obj.variousScalars.int, - ); - - let equal = (a: t, b: t) => - a.variousScalars.string == b.variousScalars.string - && a.variousScalars.int == b.variousScalars.int; - }); - -let runs_the_decoder = () => - Alcotest.check( - my_query, - "query result equality", - Yojson.Basic.from_string( - {|{"variousScalars": {"string": "123", "int": 456}}|}, - ) - |> My_query.unsafe_fromJson - |> My_query.parse, - { - variousScalars: { - string: 123, - int: "456", - }, - }, - ); - -let tests = [("Runs the decoder", `Quick, runs_the_decoder)]; diff --git a/tests_native/custom_scalars.ml b/tests_native/custom_scalars.ml new file mode 100644 index 00000000..209b3968 --- /dev/null +++ b/tests_native/custom_scalars.ml @@ -0,0 +1,44 @@ +open Test_shared + +module My_query = +[%graphql +{| + query ($opt: CustomScalar, $req: CustomScalar!) { + customScalarField(argOptional: $opt, argRequired: $req) { + nullable + nonNullable + } + } +|}] + +type t = My_query.t + +let equal_payload (a : t) (b : t) = + a.customScalarField.nullable = b.customScalarField.nullable + && a.customScalarField.nonNullable = b.customScalarField.nonNullable + +let payload_to_json p = p |> My_query.serialize |> My_query.toJson + +let test_payload (a : t) (b : t) = + test_json_ (payload_to_json a) (payload_to_json b) + +let encodes_json_objects () = + test_json_ + (My_query.makeVariables ~opt:(`Int 123) ~req:(`Int 456) () + |> My_query.serializeVariables |> My_query.variablesToJson) + (Json.Read.from_string {| { "opt": 123, "req": 456 } |}) + +let decodes_to_json () = + test_payload + (Json.Read.from_string + {|{"customScalarField": { "nullable": 123, "nonNullable": 456 }}|} + |> My_query.unsafe_fromJson |> My_query.parse) + { + customScalarField = { nullable = Some (`Int 123); nonNullable = `Int 456 }; + } + +let tests = + [ + ("Encodes custom scalar variables as JSON objects", encodes_json_objects); + ("Decodes results to JSON", decodes_to_json); + ] diff --git a/tests_native/custom_scalars.re b/tests_native/custom_scalars.re deleted file mode 100644 index 46f02ad5..00000000 --- a/tests_native/custom_scalars.re +++ /dev/null @@ -1,68 +0,0 @@ -open Test_shared; - -module My_query = [%graphql - {| - query ($opt: CustomScalar, $req: CustomScalar!) { - customScalarField(argOptional: $opt, argRequired: $req) { - nullable - nonNullable - } - } -|} -]; - -type qt = My_query.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: t) => - Format.fprintf( - formatter, - "< customScalarField = @[<>@] >", - Yojson.Basic.pretty_print(~std=false) |> print_option, - obj.customScalarField.nullable, - Yojson.Basic.pretty_print(~std=false), - obj.customScalarField.nonNullable, - ); - - let equal = (a: t, b: t) => - a.customScalarField.nullable == b.customScalarField.nullable - && a.customScalarField.nonNullable == b.customScalarField.nonNullable; - }); - -let encodes_json_objects = () => - test_json( - My_query.makeVariables(~opt=`Int(123), ~req=`Int(456), ()) - |> My_query.serializeVariables - |> My_query.variablesToJson, - Yojson.Basic.from_string({| { "opt": 123, "req": 456 } |}), - ); - -let decodes_to_json = () => - Alcotest.check( - my_query, - "query equality", - Yojson.Basic.from_string( - {|{"customScalarField": { "nullable": 123, "nonNullable": 456 }}|}, - ) - |> My_query.unsafe_fromJson - |> My_query.parse, - { - customScalarField: { - nullable: Some(`Int(123)), - nonNullable: `Int(456), - }, - }, - ); - -let tests = [ - ( - "Encodes custom scalar variables as Json objects", - `Quick, - encodes_json_objects, - ), - ("Decodes results to JSON", `Quick, decodes_to_json), -]; diff --git a/tests_native/dune b/tests_native/dune index 29bc62e0..8f48f890 100644 --- a/tests_native/dune +++ b/tests_native/dune @@ -1,5 +1,5 @@ (tests (names main) - (libraries alcotest yojson str) + (libraries json str) (preprocess (pps graphql_ppx))) diff --git a/tests_native/enum_input.ml b/tests_native/enum_input.ml new file mode 100644 index 00000000..0575c48a --- /dev/null +++ b/tests_native/enum_input.ml @@ -0,0 +1,17 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($arg: SampleField!) { + enumInput(arg: $arg) + } +|}] + +let encodes_arguments () = + test_json_ + (MyQuery.makeVariables ~arg:`FIRST () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string {| { "arg": "FIRST" } |}) + +let tests = [ ("Encodes enum arguments to strings", encodes_arguments) ] diff --git a/tests_native/enum_input.re b/tests_native/enum_input.re deleted file mode 100644 index bd5a7096..00000000 --- a/tests_native/enum_input.re +++ /dev/null @@ -1,23 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($arg: SampleField!) { - enumInput(arg: $arg) - } -|} -]; - -let encodes_arguments = () => - Alcotest.check( - yojson, - "json", - MyQuery.makeVariables(~arg=`FIRST, ()) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string({| { "arg": "FIRST" } |}), - ); - -let tests = [ - ("Encodes enum arguments to strings", `Quick, encodes_arguments), -]; diff --git a/tests_native/fragment_definition.ml b/tests_native/fragment_definition.ml new file mode 100644 index 00000000..8a2404d1 --- /dev/null +++ b/tests_native/fragment_definition.ml @@ -0,0 +1,92 @@ +open Test_shared;; + +[%graphql + {| + fragment ListFragment on Lists { + nullableOfNullable + nullableOfNonNullable + } +|}] + +module MyQuery = +[%graphql +{| + query { + l1: lists { + ...ListFragment + } + + l2: lists { + ...ListFragment @bsField(name: "frag1") + ...ListFragment @bsField(name: "frag2") + } + } +|}] + +type qt = MyQuery.t +type ft = ListFragment.t + +let print_fragment fmt (obj : ft) = + pp_record fmt + [ + ( "nullableOfNullable", + (pp_string_literal |> pp_option |> pp_array |> pp_option |> pp_to_print) + obj.nullableOfNullable ); + ( "nullableOfNonNullable", + (pp_string_literal |> pp_array |> pp_option |> pp_to_print) + obj.nullableOfNonNullable ); + ] + +let fragment_equal (a : ft) (b : ft) = + a.nullableOfNullable = b.nullableOfNullable + && a.nullableOfNonNullable = b.nullableOfNonNullable + +let pp_payload fmt (obj : qt) = + pp_record fmt + [ + ("l1", fun fmt -> print_fragment fmt obj.l1); + ( "l2", + fun fmt -> + pp_record fmt + [ + ("frag1", fun fmt -> print_fragment fmt obj.l2.frag1); + ("frag2", fun fmt -> print_fragment fmt obj.l2.frag2); + ] ); + ] + +let payload_equal (a : qt) (b : qt) = + fragment_equal a.l1 b.l1 + && fragment_equal a.l2.frag1 b.l2.frag1 + && fragment_equal a.l2.frag2 b.l2.frag2 + +let decodes_the_fragment () = + test_exp + ({|{ + "l1": {"nullableOfNullable": ["a", null, "b"]}, + "l2": {"nullableOfNullable": ["a", null, "b"]} + } + |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + l1 = + { + nullableOfNullable = Some [| Some "a"; None; Some "b" |]; + nullableOfNonNullable = None; + }; + l2 = + { + frag1 = + { + nullableOfNullable = Some [| Some "a"; None; Some "b" |]; + nullableOfNonNullable = None; + }; + frag2 = + { + nullableOfNullable = Some [| Some "a"; None; Some "b" |]; + nullableOfNonNullable = None; + }; + }; + } + payload_equal pp_payload + +let tests = [ ("Decodes the fragment", decodes_the_fragment) ] diff --git a/tests_native/fragment_definition.re b/tests_native/fragment_definition.re deleted file mode 100644 index a9de7792..00000000 --- a/tests_native/fragment_definition.re +++ /dev/null @@ -1,105 +0,0 @@ -open Test_shared; - -[%graphql - {| - fragment ListFragment on Lists { - nullableOfNullable - nullableOfNonNullable - } -|} -]; - -module MyQuery = [%graphql - {| - query { - l1: lists { - ...ListFragment - } - - l2: lists { - ...ListFragment @bsField(name: "frag1") - ...ListFragment @bsField(name: "frag2") - } - } -|} -]; - -type qt = MyQuery.t; -type ft = ListFragment.t; - -let print_fragment = (formatter, obj: ft) => - Format.fprintf( - formatter, - "< nullableOfNullable = @[%a@]; nullableOfNonNullable = @[%a@] >", - Format.pp_print_string |> print_option |> print_array |> print_option, - obj.nullableOfNullable, - Format.pp_print_string |> print_array |> print_option, - obj.nullableOfNonNullable, - ); - -let fragment_equal = (a: ft, b: ft) => - a.nullableOfNullable == b.nullableOfNullable - && a.nullableOfNonNullable == b.nullableOfNonNullable; - -let fragment: module Alcotest.TESTABLE with type t = ft = - (module - { - type t = ListFragment.t; - let pp = print_fragment; - let equal = fragment_equal; - }); - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< l1 = @[%a@]; l2 = @[<>< frag1 = @[%a@]; frag2 = @[%a@] >@] >", - print_fragment, - obj.l1, - print_fragment, - obj.l2.frag1, - print_fragment, - obj.l2.frag2, - ); - - let equal = (a: qt, b: qt) => - fragment_equal(a.l1, b.l1) - && fragment_equal(a.l2.frag1, b.l2.frag1) - && fragment_equal(a.l2.frag2, b.l2.frag2); - }); - -let decodes_the_fragment = () => - Alcotest.check( - my_query, - "query result equality", - {|{ - "l1": {"nullableOfNullable": ["a", null, "b"]}, - "l2": {"nullableOfNullable": ["a", null, "b"]} - } - |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - l1: { - nullableOfNullable: Some([|Some("a"), None, Some("b")|]), - nullableOfNonNullable: None, - }, - l2: { - frag1: { - nullableOfNullable: Some([|Some("a"), None, Some("b")|]), - nullableOfNonNullable: None, - }, - frag2: { - nullableOfNullable: Some([|Some("a"), None, Some("b")|]), - nullableOfNonNullable: None, - }, - }, - }, - ); - -let tests = [("Decodes the fragment", `Quick, decodes_the_fragment)]; diff --git a/tests_native/fragment_union_serialization.ml b/tests_native/fragment_union_serialization.ml new file mode 100644 index 00000000..dd3dd21a --- /dev/null +++ b/tests_native/fragment_union_serialization.ml @@ -0,0 +1,27 @@ +[%graphql + {| + fragment DogFragment on Dog { + name + } + fragment HumanFragment on Human { + name + } + + query MyQuery { + dogOrHuman { + ... on Dog { + ...DogFragment + } + ... on Human { + ...HumanFragment + } + } + } +|}] + +let json_str = {|{ "dogOrHuman": { "__typename": "Dog", "name": "Woof" } }|} +let json = (Json.Read.from_string json_str) +let serialization_test () = + Test_shared.test_json_ json (json |> MyQuery.unsafe_fromJson |> MyQuery.parse |> MyQuery.serialize |> MyQuery.toJson) + +let tests = [ ("Null in nullable lists", serialization_test) ] diff --git a/tests_native/interface.ml b/tests_native/interface.ml new file mode 100644 index 00000000..8b819f62 --- /dev/null +++ b/tests_native/interface.ml @@ -0,0 +1,90 @@ +open Test_shared + +module QueryWithFragments = +[%graphql +{| + query { + users { + ... on AdminUser { + id + name + } + ... on AnonymousUser { + id + anonymousId + } + } + } +|}] + +module QueryWithoutFragments = +[%graphql +{| + query { + users { + id + } + } +|}] + +type user = QueryWithFragments.t_users_User +type only_user = QueryWithoutFragments.t_users + +let json = + {|{ + "users": [ + { "__typename": "AdminUser", "id": "1", "name": "bob" }, + { "__typename": "AnonymousUser", "id": "2", "anonymousId": 1}, + { "__typename": "OtherUser", "id": "3"} + ]}|} + +let pp_user formatter = function + | `UnspecifiedFragment s -> + Format.fprintf formatter "`UnspecifiedFragment < @[%s@] >" s + | `AdminUser (u : QueryWithFragments.t_users_User_AdminUser) -> + Format.fprintf formatter "`AdminUser < id = @[%s@]; name = @[%s@] >" u.id + u.name + | `AnonymousUser (u : QueryWithFragments.t_users_User_AnonymousUser) -> + Format.fprintf formatter + "`AnonymousUser < id = @[%s@]; anonymousId = @[%i@] >" u.id u.anonymousId + +let equal_user (a : user) (b : user) = + match (a, b) with + | `UnspecifiedFragment u1, `UnspecifiedFragment u2 -> u1 = u2 + | `AdminUser u1, `AdminUser u2 -> u1.id = u2.id && u1.name = u2.name + | `AnonymousUser u1, `AnonymousUser u2 -> + u1.id = u2.id && u1.anonymousId = u2.anonymousId + | _ -> false + +let pp_only_user formatter (u : QueryWithoutFragments.t_users) = + Format.fprintf formatter "`User < id = @[%s@] >" u.id + +let equal_only_user (a : only_user) (b : only_user) = + match (a, b) with u1, u2 -> u1.id = u2.id + +let decode_with_fragments () = + test_exp_array + (Json.Read.from_string json |> QueryWithFragments.unsafe_fromJson + |> QueryWithFragments.parse) + .users + ([| + `AdminUser { id = "1"; name = "bob" }; + `AnonymousUser { id = "2"; anonymousId = 1 }; + `UnspecifiedFragment "OtherUser"; + |] + : QueryWithFragments.t_users_User array) + equal_user pp_user + +let decode_without_fragments () = + test_exp_array + (Json.Read.from_string json |> QueryWithoutFragments.unsafe_fromJson + |> QueryWithoutFragments.parse) + .users + [| ({ id = "1" } : only_user); { id = "2" }; { id = "3" } |] + equal_only_user pp_only_user + +let tests = + [ + ("Decodes the interface with fragments", decode_with_fragments); + ("Decodes the interface without fragments", decode_without_fragments); + ] diff --git a/tests_native/interface.re b/tests_native/interface.re deleted file mode 100644 index 6c4e4231..00000000 --- a/tests_native/interface.re +++ /dev/null @@ -1,121 +0,0 @@ -module QueryWithFragments = [%graphql - {| - query { - users { - ... on AdminUser { - id - name - } - ... on AnonymousUser { - id - anonymousId - } - } - } -|} -]; - -module QueryWithoutFragments = [%graphql - {| - query { - users { - id - } - } -|} -]; - -type user = QueryWithFragments.t_users_User; -type only_user = QueryWithoutFragments.t_users; - -let json = {|{ - "users": [ - { "__typename": "AdminUser", "id": "1", "name": "bob" }, - { "__typename": "AnonymousUser", "id": "2", "anonymousId": 1}, - { "__typename": "OtherUser", "id": "3"} - ]}|}; - -let user: module Alcotest.TESTABLE with type t = user = - (module - { - type t = user; - let pp = formatter => - fun - | `UnspecifiedFragment(s) => - Format.fprintf(formatter, "`UnspecifiedFragment < @[%s@] >", s) - | `AdminUser(u: QueryWithFragments.t_users_User_AdminUser) => - Format.fprintf( - formatter, - "`AdminUser < id = @[%s@]; name = @[%s@] >", - u.id, - u.name, - ) - | `AnonymousUser(u: QueryWithFragments.t_users_User_AnonymousUser) => - Format.fprintf( - formatter, - "`AnonymousUser < id = @[%s@]; anonymousId = @[%i@] >", - u.id, - u.anonymousId, - ); - - let equal = (a: user, b: user) => - switch (a, b) { - | (`UnspecifiedFragment(u1), `UnspecifiedFragment(u2)) => u1 == u2 - | (`AdminUser(u1), `AdminUser(u2)) => - u1.id == u2.id && u1.name == u2.name - | (`AnonymousUser(u1), `AnonymousUser(u2)) => - u1.id == u2.id && u1.anonymousId == u2.anonymousId - | _ => false - }; - }); - -let only_user: module Alcotest.TESTABLE with type t = only_user = - (module - { - type t = only_user; - - let pp = (formatter, u: QueryWithoutFragments.t_users) => - Format.fprintf(formatter, "`User < id = @[%s@] >", u.id); - - let equal = (a: only_user, b: only_user) => - switch (a, b) { - | (u1, u2) => u1.id == u2.id - }; - }); - -let decode_with_fragments = () => - Alcotest.(check(array(user)))( - "query result equality", - ( - Yojson.Basic.from_string(json) - |> QueryWithFragments.unsafe_fromJson - |> QueryWithFragments.parse - ). - users, - [| - `AdminUser({id: "1", name: "bob"}), - `AnonymousUser({id: "2", anonymousId: 1}), - `UnspecifiedFragment("OtherUser"), - |]: array(QueryWithFragments.t_users_User), - ); - -let decode_without_fragments = () => - Alcotest.(check(array(only_user)))( - "query result equality", - ( - Yojson.Basic.from_string(json) - |> QueryWithoutFragments.unsafe_fromJson - |> QueryWithoutFragments.parse - ). - users, - [|{id: "1"}, {id: "2"}, {id: "3"}|], - ); - -let tests = [ - ("Decodes the interface with fragments", `Quick, decode_with_fragments), - ( - "Decodes the interface without fragments", - `Quick, - decode_without_fragments, - ), -]; diff --git a/tests_native/list_args.ml b/tests_native/list_args.ml new file mode 100644 index 00000000..6a1ec1b8 --- /dev/null +++ b/tests_native/list_args.ml @@ -0,0 +1,53 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ( + $nullableOfNullable: [String], + $nullableOfNonNullable: [String!], + $nonNullableOfNullable: [String]!, + $nonNullableOfNonNullable: [String!]!, + ) { + lists: listsInput(arg: { + nullableOfNullable: $nullableOfNullable, + nullableOfNonNullable: $nullableOfNonNullable, + nonNullableOfNullable: $nonNullableOfNullable, + nonNullableOfNonNullable: $nonNullableOfNonNullable, + }) + } +|}] + +let omit_nullable_args () = + test_json_ + (MyQuery.makeVariables ~nonNullableOfNullable:[||] + ~nonNullableOfNonNullable:[||] () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "nullableOfNullable": null, + "nullableOfNonNullable": null, + "nonNullableOfNullable": [], + "nonNullableOfNonNullable": [] + } |}) + +let allows_none_in_lists () = + test_json_ + (MyQuery.makeVariables + ~nullableOfNullable:[| Some "x"; None; Some "y" |] + ~nonNullableOfNullable:[| Some "a"; None; Some "b" |] + ~nonNullableOfNonNullable:[| "1"; "2"; "3" |] () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "nullableOfNullable": ["x", null, "y"], + "nullableOfNonNullable": null, + "nonNullableOfNullable": ["a", null, "b"], + "nonNullableOfNonNullable": ["1", "2", "3"] + } |}) + +let tests = + [ + ("Can omit nullable arguments", omit_nullable_args); + ("Allows None in lists with nullable items", allows_none_in_lists); + ] diff --git a/tests_native/list_args.re b/tests_native/list_args.re deleted file mode 100644 index 96850b43..00000000 --- a/tests_native/list_args.re +++ /dev/null @@ -1,76 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ( - $nullableOfNullable: [String], - $nullableOfNonNullable: [String!], - $nonNullableOfNullable: [String]!, - $nonNullableOfNonNullable: [String!]!, - ) { - lists: listsInput(arg: { - nullableOfNullable: $nullableOfNullable, - nullableOfNonNullable: $nullableOfNonNullable, - nonNullableOfNullable: $nonNullableOfNullable, - nonNullableOfNonNullable: $nonNullableOfNonNullable, - }) - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf(formatter, "< lists = @[%s@] >", obj.lists); - - let equal = (a: qt, b: qt) => a.lists == b.lists; - }); - -let omit_nullable_args = () => - test_json( - MyQuery.makeVariables( - ~nonNullableOfNullable=[||], - ~nonNullableOfNonNullable=[||], - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "nullableOfNullable": null, - "nullableOfNonNullable": null, - "nonNullableOfNullable": [], - "nonNullableOfNonNullable": [] - } |}, - ), - ); - -let allows_none_in_lists = () => - test_json( - MyQuery.makeVariables( - ~nullableOfNullable=[|Some("x"), None, Some("y")|], - ~nonNullableOfNullable=[|Some("a"), None, Some("b")|], - ~nonNullableOfNonNullable=[|"1", "2", "3"|], - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "nullableOfNullable": ["x", null, "y"], - "nullableOfNonNullable": null, - "nonNullableOfNullable": ["a", null, "b"], - "nonNullableOfNonNullable": ["1", "2", "3"] - } |}, - ), - ); - -let tests = [ - ("Can omit nullable arguments", `Quick, omit_nullable_args), - ("Allows None in lists with nullable items", `Quick, allows_none_in_lists), -]; diff --git a/tests_native/list_inputs.ml b/tests_native/list_inputs.ml new file mode 100644 index 00000000..9eb4865c --- /dev/null +++ b/tests_native/list_inputs.ml @@ -0,0 +1,43 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($arg: ListsInput!) { + listsInput(arg: $arg) + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter "< listsInput = @[%s@] >" obj.listsInput + +let equal (a : qt) (b : qt) = a.listsInput = b.listsInput + +let allows_none_in_lists_of_nullable () = + test_json_ + (MyQuery.makeVariables + ~arg: + { + nullableOfNullable = Some [| Some "x"; None; Some "y" |]; + nullableOfNonNullable = None; + nonNullableOfNullable = [| Some "a"; None; Some "b" |]; + nonNullableOfNonNullable = [| "1"; "2"; "3" |]; + } + () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "arg": { + "nullableOfNullable": ["x", null, "y"], + "nullableOfNonNullable": null, + "nonNullableOfNullable": ["a", null, "b"], + "nonNullableOfNonNullable": ["1", "2", "3"] + } + } |}) + +let tests = + [ + ("Allows None in lists of nullable types", allows_none_in_lists_of_nullable); + ] diff --git a/tests_native/list_inputs.re b/tests_native/list_inputs.re deleted file mode 100644 index b9ad7a52..00000000 --- a/tests_native/list_inputs.re +++ /dev/null @@ -1,55 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($arg: ListsInput!) { - listsInput(arg: $arg) - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf(formatter, "< listsInput = @[%s@] >", obj.listsInput); - - let equal = (a: qt, b: qt) => a.listsInput == b.listsInput; - }); - -let allows_none_in_lists_of_nullable = () => - test_json( - MyQuery.makeVariables( - ~arg={ - nullableOfNullable: Some([|Some("x"), None, Some("y")|]), - nullableOfNonNullable: None, - nonNullableOfNullable: [|Some("a"), None, Some("b")|], - nonNullableOfNonNullable: [|"1", "2", "3"|], - }, - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "arg": { - "nullableOfNullable": ["x", null, "y"], - "nullableOfNonNullable": null, - "nonNullableOfNullable": ["a", null, "b"], - "nonNullableOfNonNullable": ["1", "2", "3"] - } - } |}, - ), - ); - -let tests = [ - ( - "Allows None in lists of nullable types", - `Quick, - allows_none_in_lists_of_nullable, - ), -]; diff --git a/tests_native/lists.ml b/tests_native/lists.ml new file mode 100644 index 00000000..0f73f1dc --- /dev/null +++ b/tests_native/lists.ml @@ -0,0 +1,62 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + { + lists { + nullableOfNullable + nullableOfNonNullable + nonNullableOfNullable + nonNullableOfNonNullable + } + } +|}] + +type qt = MyQuery.t + +let pp fmt (obj : qt) = + pp_record fmt + [ + ( "nullableOfNullable", + fun fmt -> + (Format.pp_print_string |> pp_option |> pp_array |> pp_option) + fmt obj.lists.nullableOfNullable ); + ( "nullableOfNonNullable", + fun fmt -> + (Format.pp_print_string |> pp_array |> pp_option) + fmt obj.lists.nullableOfNonNullable ); + ( "nonNullableOfNullable", + fun fmt -> + (Format.pp_print_string |> pp_option |> pp_array) + fmt obj.lists.nonNullableOfNullable ); + ( "nonNullableOfNonNullable", + fun fmt -> + (Format.pp_print_string |> pp_array) + fmt obj.lists.nonNullableOfNonNullable ); + ] + +let equal (a : qt) (b : qt) = + a.lists.nullableOfNullable = b.lists.nullableOfNullable + && a.lists.nullableOfNonNullable = b.lists.nullableOfNonNullable + && a.lists.nonNullableOfNullable = b.lists.nonNullableOfNullable + && a.lists.nonNullableOfNonNullable = b.lists.nonNullableOfNonNullable + +let null_in_lists () = + test_exp + (MyQuery.parse + (Json.Read.from_string + {|{"lists": {"nullableOfNullable": [null, "123"], "nonNullableOfNullable": [null, "123"], "nonNullableOfNonNullable": ["a", "b"]}}|} + |> MyQuery.unsafe_fromJson)) + { + lists = + { + nullableOfNullable = Some [| None; Some "123" |]; + nullableOfNonNullable = None; + nonNullableOfNullable = [| None; Some "123" |]; + nonNullableOfNonNullable = [| "a"; "b" |]; + }; + } + equal pp + +let tests = [ ("Null in nullable lists", null_in_lists) ] diff --git a/tests_native/lists.re b/tests_native/lists.re deleted file mode 100644 index 7299b189..00000000 --- a/tests_native/lists.re +++ /dev/null @@ -1,64 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - { - lists { - nullableOfNullable - nullableOfNonNullable - nonNullableOfNullable - nonNullableOfNonNullable - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< nullableOfNullable = @[%a@]; nullableOfNonNullable = @[%a@]; nonNullableOfNullable = @[%a@]; nonNullableOfNonNullable = @[%a@] >", - Format.pp_print_string |> print_option |> print_array |> print_option, - obj.lists.nullableOfNullable, - Format.pp_print_string |> print_array |> print_option, - obj.lists.nullableOfNonNullable, - Format.pp_print_string |> print_option |> print_array, - obj.lists.nonNullableOfNullable, - Format.pp_print_string |> print_array, - obj.lists.nonNullableOfNonNullable, - ); - - let equal = (a: qt, b: qt) => - a.lists.nullableOfNullable == b.lists.nullableOfNullable - && a.lists.nullableOfNonNullable == b.lists.nullableOfNonNullable - && a.lists.nonNullableOfNullable == b.lists.nonNullableOfNullable - && a.lists.nonNullableOfNonNullable == b.lists.nonNullableOfNonNullable; - }); - -let null_in_lists = () => - Alcotest.check( - my_query, - "query result equality", - MyQuery.parse( - Yojson.Basic.from_string( - {|{"lists": {"nullableOfNullable": [null, "123"], "nonNullableOfNullable": [null, "123"], "nonNullableOfNonNullable": ["a", "b"]}}|}, - ) - |> MyQuery.unsafe_fromJson, - ), - { - lists: { - nullableOfNullable: Some([|None, Some("123")|]), - nullableOfNonNullable: None, - nonNullableOfNullable: [|None, Some("123")|], - nonNullableOfNonNullable: [|"a", "b"|], - }, - }, - ); - -let tests = [("Null in nullable lists", `Quick, null_in_lists)]; diff --git a/tests_native/main.ml b/tests_native/main.ml new file mode 100644 index 00000000..7bb13f9d --- /dev/null +++ b/tests_native/main.ml @@ -0,0 +1,54 @@ +let suites = + [ + ("Argument named 'query'", Arg_named_query.tests); + ("Custom decoder", Custom_decoder.tests); + ("Custom scalars", Custom_scalars.tests); + ("Enum input", Enum_input.tests); + ("Fragment definition", Fragment_definition.tests); + ("Interface", Interface.tests); + ("Lists", Lists.tests); + ("List arguments", List_args.tests); + ("List inputs", List_inputs.tests); + ("Mutations", Mutation.tests); + ("Nested decoding", Nested.tests); + ("Nonrecursive input", Nonrecursive_input.tests); + ("Records", Record.tests); + ("Recursive input", Recursive_input.tests); + ("Scalars", Scalars.tests); + ("Scalar arguments", Scalars_args.tests); + ("Scalar inputs", Scalars_input.tests); + ("Skip directives", Skip_directives.tests); + ("Typename", Typename.tests); + ("Unions", Union.tests); + ("Partial unions", Union_partial.tests); + ("Variant conversion", Variant.tests); + ("Fragment union serialization", Fragment_union_serialization.tests); + ] +;; + +let indent = "- " in +let print_success s = + print_endline (indent ^ "✅ " ^ Cli_colors.green ^ s ^ Cli_colors.reset) +in +let print_error s = + print_endline (indent ^ Cli_colors.red ^ "❌ " ^ s ^ Cli_colors.reset) +in +let failure = ref false in + +suites +|> List.iter (fun (suite_name, tests) -> + print_endline (suite_name ^ Cli_colors.reset); + tests + |> List.iter (fun (test_name, test) -> + match test () with + | Test_shared.Pass -> print_success test_name + | Fail reason -> + print_error test_name; + (Format.fprintf Format.std_formatter " %s") reason + | CompareFail (a, b) -> + print_error test_name; + (Format.fprintf Format.std_formatter " expected: @[%a@]@." a) (); + (Format.fprintf Format.std_formatter " got: @[%a@]@." b) (); + failure := true)); + +if !failure then exit 1 else () diff --git a/tests_native/main.re b/tests_native/main.re deleted file mode 100644 index 4d20e08e..00000000 --- a/tests_native/main.re +++ /dev/null @@ -1,28 +0,0 @@ -let () = - Alcotest.run( - "Native PPX tests", - [ - ("Argument named 'query'", Arg_named_query.tests), - ("Custom decoder", Custom_decoder.tests), - ("Custom scalars", Custom_scalars.tests), - ("Enum input", Enum_input.tests), - ("Fragment definition", Fragment_definition.tests), - ("Interface", Interface.tests), - ("Lists", Lists.tests), - ("List arguments", List_args.tests), - ("List inputs", List_inputs.tests), - ("Mutations", Mutation.tests), - ("Nested decoding", Nested.tests), - ("Nonrecursive input", Nonrecursive_input.tests), - ("Records", Record.tests), - ("Recursive input", Recursive_input.tests), - ("Scalars", Scalars.tests), - ("Scalar arguments", Scalars_args.tests), - ("Scalar inputs", Scalars_input.tests), - ("Skip directives", Skip_directives.tests), - ("Typename", Typename.tests), - ("Unions", Union.tests), - ("Partial unions", Union_partial.tests), - ("Variant conversion", Variant.tests), - ], - ); diff --git a/tests_native/mutation.ml b/tests_native/mutation.ml new file mode 100644 index 00000000..18eaa7d5 --- /dev/null +++ b/tests_native/mutation.ml @@ -0,0 +1,26 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + mutation { + mutationWithError { + value { + stringField + } + + errors { + field + message + } + } + } +|}] + +let printed_query () = + match Str.search_forward (Str.regexp "^mutation") MyQuery.query 0 with + | 0 -> Pass + | (exception Not_found) | _ -> + Fail "mutation not found as first index of the operation string" + +let tests = [ ("Printed query is a mutation", printed_query) ] diff --git a/tests_native/mutation.re b/tests_native/mutation.re deleted file mode 100644 index 554497b8..00000000 --- a/tests_native/mutation.re +++ /dev/null @@ -1,26 +0,0 @@ -module MyQuery = [%graphql - {| - mutation { - mutationWithError { - value { - stringField - } - - errors { - field - message - } - } - } -|} -]; - -let printed_query = () => - Alcotest.check( - Alcotest.int, - "string equal", - Str.search_forward(Str.regexp("^mutation"), MyQuery.query, 0), - 0, - ); - -let tests = [("Printed query is a mutation", `Quick, printed_query)]; diff --git a/tests_native/nested.ml b/tests_native/nested.ml new file mode 100644 index 00000000..b8b67db1 --- /dev/null +++ b/tests_native/nested.ml @@ -0,0 +1,99 @@ +open Test_shared + +type record = { f1 : string; f2 : string } + +module MyQuery = +[%graphql +{| + { + first: nestedObject { + inner { + inner { + field + } + } + } + + second: nestedObject { + inner { + inner @ppxAs(type: record) { + f1: field + f2: field + } + } + } + } +|}] + +type qt = MyQuery.t + +let pp fmt (obj : qt) = + pp_record fmt + [ + ( "first", + print_record + [ + ( "inner", + print_option obj.first.inner (fun inner -> + print_record + [ + ( "inner", + print_option inner.inner (fun inner -> + print_record + [ ("field", print_string_literal inner.field) ]) ); + ]) ); + ] ); + ( "second", + print_record + [ + ( "inner", + print_option obj.second.inner (fun inner -> + print_record + [ + ( "inner", + print_option inner.inner (fun inner -> + print_record + [ + ( "inner", + print_record + [ + ("f1", print_string_literal inner.f1); + ("f2", print_string_literal inner.f2); + ] ); + ]) ); + ]) ); + ] ); + ] + +let equal (a : qt) (b : qt) = + opt_eq + (fun (a : MyQuery.t_first_inner) (b : MyQuery.t_first_inner) -> + opt_eq + (fun (a : MyQuery.t_first_inner_inner) (b : MyQuery.t_first_inner_inner) -> + a.field = b.field) + a.inner b.inner) + a.first.inner b.first.inner + && opt_eq + (fun (a : MyQuery.t_second_inner) (b : MyQuery.t_second_inner) -> + opt_eq + (fun (a : MyQuery.t_second_inner_inner) + (b : MyQuery.t_second_inner_inner) -> a.f1 = b.f1 && a.f2 = b.f2) + a.inner b.inner) + a.second.inner b.second.inner + +let decodes_recursively () = + test_exp + (Json.Read.from_string + {| { + "first": {"inner": {"inner": {"field": "second"}}}, + "second": {"inner": null} + } + |} + |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + first = { inner = Some { inner = Some { field = "second" } } }; + second = { inner = None }; + } + equal pp + +let tests = [ ("Decodes recursively", decodes_recursively) ] diff --git a/tests_native/nested.re b/tests_native/nested.re deleted file mode 100644 index f121f2e4..00000000 --- a/tests_native/nested.re +++ /dev/null @@ -1,136 +0,0 @@ -open Test_shared; - -type record = { - f1: string, - f2: string, -}; - -module MyQuery = [%graphql - {| - { - first: nestedObject { - inner { - inner { - field - } - } - } - - second: nestedObject { - inner { - inner @ppxAs(type: record) { - f1: field - f2: field - } - } - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< first = < inner = @[%a@] > ; second = < inner = @[%a@] > >", - ( - (formatter, v: MyQuery.t_first_inner) => - Format.fprintf( - formatter, - "< inner = @[%a@] >", - ( - (formatter, v: MyQuery.t_first_inner_inner) => - Format.fprintf( - formatter, - "< field = %a >", - Format.pp_print_string, - v.field, - ) - ) - |> print_option, - v.inner, - ) - ) - |> print_option, - obj.first.inner, - ( - (formatter, v: MyQuery.t_second_inner) => - Format.fprintf( - formatter, - "< inner = @[%a@] >", - ( - (formatter, v: MyQuery.t_second_inner_inner) => - Format.fprintf( - formatter, - "{ f1 = %a ; f2 = %a }", - Format.pp_print_string, - v.f1, - Format.pp_print_string, - v.f2, - ) - ) - |> print_option, - v.inner, - ) - ) - |> print_option, - obj.second.inner, - ); - - let equal = (a: qt, b: qt) => - opt_eq( - (a: MyQuery.t_first_inner, b: MyQuery.t_first_inner) => - opt_eq( - (a: MyQuery.t_first_inner_inner, b: MyQuery.t_first_inner_inner) => - a.field == b.field, - a.inner, - b.inner, - ), - a.first.inner, - b.first.inner, - ) - && opt_eq( - (a: MyQuery.t_second_inner, b: MyQuery.t_second_inner) => - opt_eq( - ( - a: MyQuery.t_second_inner_inner, - b: MyQuery.t_second_inner_inner, - ) => - a.f1 == b.f1 && a.f2 == b.f2, - a.inner, - b.inner, - ), - a.second.inner, - b.second.inner, - ); - }); - -let decodes_recursively = () => - Alcotest.check( - my_query, - "query result equality", - Yojson.Basic.from_string( - {| { - "first": {"inner": {"inner": {"field": "second"}}}, - "second": {"inner": null} - } |}, - ) - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - first: { - inner: Some({inner: Some({field: "second"})}), - }, - second: { - inner: None, - }, - }, - ); - -let tests = [("Decodes recursively", `Quick, decodes_recursively)]; diff --git a/tests_native/nonrecursive_input.ml b/tests_native/nonrecursive_input.ml new file mode 100644 index 00000000..176981ee --- /dev/null +++ b/tests_native/nonrecursive_input.ml @@ -0,0 +1,41 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($arg: NonrecursiveInput!) { + nonrecursiveInput(arg: $arg) + } +|}] + +type qt = MyQuery.t + +let construct_recursive_input_type () = + test_json_ + (MyQuery.makeVariables + ~arg: + { + field = Some "test"; + embeddedInput = Some [| Some { field = Some "test" } |]; + enum = Some `SECOND; + custom = Some (`Int 1); + nonNullableField = "Not null"; + nullableArray = None; + } + () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "arg": + { + "nonNullableField":"Not null", + "nullableArray": null, + "field": "test", + "enum": "SECOND", + "embeddedInput": [ { "field": "test" } ], + "custom": 1 + } + } |}) + +let tests = + [ ("Constructing a recursive input type", construct_recursive_input_type) ] diff --git a/tests_native/nonrecursive_input.re b/tests_native/nonrecursive_input.re deleted file mode 100644 index c6123f9c..00000000 --- a/tests_native/nonrecursive_input.re +++ /dev/null @@ -1,65 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($arg: NonrecursiveInput!) { - nonrecursiveInput(arg: $arg) - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, t: qt) => - Format.fprintf( - formatter, - "< nonrecursiveInput = %a >", - Format.pp_print_string, - t.nonrecursiveInput, - ); - - let equal = (a: qt, b: qt) => a.nonrecursiveInput == b.nonrecursiveInput; - }); - -let construct_recursive_input_type = () => - test_json( - MyQuery.makeVariables( - ~arg={ - field: Some("test"), - embeddedInput: Some([|Some({field: Some("test")})|]), - enum: Some(`SECOND), - custom: Some(`Int(1)), - nonNullableField: "Not null", - nullableArray: None, - }, - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "arg": - { - "nonNullableField":"Not null", - "nullableArray": null, - "field": "test", - "enum": "SECOND", - "embeddedInput": [ { "field": "test" } ], - "custom": 1 - } - } |}, - ), - ); - -let tests = [ - ( - "Constructing a recursive input type", - `Quick, - construct_recursive_input_type, - ), -]; diff --git a/tests_native/record.ml b/tests_native/record.ml new file mode 100644 index 00000000..f71db51e --- /dev/null +++ b/tests_native/record.ml @@ -0,0 +1,185 @@ +open Test_shared + +type scalars = { string : string; int : int } + +module Scalars = struct + let pp fmt (obj : scalars) = + pp_record fmt + [ + ("string", print_string_literal obj.string); + ("int", print_int_literal obj.int); + ] + + let equal (a : scalars) (b : scalars) = a.string = b.string && a.int = b.int +end + +module MyQuery = +[%graphql +{| + { + variousScalars @ppxAs(type: "scalars") { + string + int + } + } +|}] + +type qt = MyQuery.t + +module MyQueryTest = struct + let pp fmt (obj : qt) = + pp_record fmt + [ ("variousScalars", (pp_to_print Scalars.pp) obj.variousScalars) ] + + let equal (a : qt) (b : qt) = Scalars.equal a.variousScalars b.variousScalars +end +;; + +[%graphql + {| + fragment ExternalFragment on VariousScalars @ppxAs(type: "scalars") { + string + int + } + + query ExternalFragmentQuery{ + variousScalars { + ...ExternalFragment + } + } +|}] + +module ExternalFragmentQueryTest = struct + let pp fmt (obj : ExternalFragmentQuery.t) = + pp_record fmt + [ ("variousScalars", (pp_to_print Scalars.pp) obj.variousScalars) ] + + let equal (a : ExternalFragmentQuery.t) (b : ExternalFragmentQuery.t) = + Scalars.equal a.variousScalars b.variousScalars +end + +module InlineFragmentQuery = +[%graphql +{| + { + dogOrHuman { + ...on Dog { + name + barkVolume + } + } + } +|}] + +type if_qt = InlineFragmentQuery.t + +module InlineFragmentQueryTest = struct + let pp fmt (obj : if_qt) = + pp_record fmt + [ + ( "dogOrHuman", + fun fmt -> + match obj.dogOrHuman with + | `FutureAddedValue _ -> Format.fprintf fmt "`FutureAddedValue(_)" + | `Dog (dog : InlineFragmentQuery.t_dogOrHuman_Dog) -> + Format.fprintf fmt "`Dog @[%a@]" + (fun fmt (dog : InlineFragmentQuery.t_dogOrHuman_Dog) -> + pp_record fmt + [ + ("name", print_string_literal dog.name); + ("barkVolume", print_float_literal dog.barkVolume); + ]) + dog ); + ] + + let equal (a : if_qt) (b : if_qt) = + match (a.dogOrHuman, b.dogOrHuman) with + | `Dog a, `Dog b -> a.name = b.name && a.barkVolume = b.barkVolume + | `FutureAddedValue a, `FutureAddedValue b -> a = b + | _ -> false +end +;; + +[%graphql + {| + fragment DogFragment on Dog @bsRecord { + name + barkVolume + } + + query UnionExternalFragmentQuery { + dogOrHuman { + ...on Dog { + ...DogFragment + } + } + } +|}] + +module UnionExternalFragmentQueryTest = struct + let pp fmt (obj : UnionExternalFragmentQuery.t) = + pp_record fmt + [ + ( "dogOrHuman", + fun fmt -> + match obj.dogOrHuman with + | `FutureAddedValue _ -> Format.fprintf fmt "`FutureAddedValue(_)" + | `Dog (dog : DogFragment.t) -> + Format.fprintf fmt "`Dog @[%a@]" + (fun fmt (dog : DogFragment.t) -> + pp_record fmt + [ + ("name", print_string_literal dog.name); + ("barkVolume", print_float_literal dog.barkVolume); + ]) + dog ); + ] + + let equal (a : UnionExternalFragmentQuery.t) + (b : UnionExternalFragmentQuery.t) = + match (a.dogOrHuman, b.dogOrHuman) with + | `Dog a, `Dog b -> a.name = b.name && a.barkVolume = b.barkVolume + | `FutureAddedValue a, `FutureAddedValue b -> a = b + | _ -> false +end + +let decodes_record_in_selection () = + test_exp + ({| {"variousScalars": {"string": "a string", "int": 123}} |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { variousScalars = { string = "a string"; int = 123 } } + MyQueryTest.equal MyQueryTest.pp + +let decodes_record_in_external_fragment () = + test_exp + ({| {"variousScalars": {"string": "a string", "int": 123}} |} + |> Json.Read.from_string |> ExternalFragmentQuery.unsafe_fromJson + |> ExternalFragmentQuery.parse) + { variousScalars = { string = "a string"; int = 123 } } + ExternalFragmentQueryTest.equal ExternalFragmentQueryTest.pp + +let decodes_record_in_inline_fragment () = + test_exp + ({| {"dogOrHuman": {"__typename": "Dog", "name": "name", "barkVolume": 123.0}} |} + |> Json.Read.from_string |> InlineFragmentQuery.unsafe_fromJson + |> InlineFragmentQuery.parse) + { dogOrHuman = `Dog { name = "name"; barkVolume = 123.0 } } + InlineFragmentQueryTest.equal InlineFragmentQueryTest.pp + +let decodes_record_in_external_fragment_on_union_selections () = + test_exp + ({| {"dogOrHuman": {"__typename": "Dog", "name": "name", "barkVolume": 123.0}} |} + |> Json.Read.from_string |> UnionExternalFragmentQuery.unsafe_fromJson + |> UnionExternalFragmentQuery.parse) + { dogOrHuman = `Dog { name = "name"; barkVolume = 123.0 } } + UnionExternalFragmentQueryTest.equal UnionExternalFragmentQueryTest.pp + +let tests = + [ + ("Decodes a record in a selection", decodes_record_in_selection); + ( "Decodes a record in an external fragment", + decodes_record_in_external_fragment ); + ("Decodes a record in an inline fragment", decodes_record_in_inline_fragment); + ( "Decodes a record in an external fragment on union selections", + decodes_record_in_external_fragment_on_union_selections ); + ] diff --git a/tests_native/record.re b/tests_native/record.re deleted file mode 100644 index 7b650faf..00000000 --- a/tests_native/record.re +++ /dev/null @@ -1,260 +0,0 @@ -type scalars = { - string, - int, -}; - -let scalars: module Alcotest.TESTABLE with type t = scalars = - (module - { - type t = scalars; - - let pp = (formatter, obj: scalars) => - Format.fprintf( - formatter, - "{ string = %a ; int = %a }", - Format.pp_print_string, - obj.string, - Format.pp_print_int, - obj.int, - ); - - let equal = (a: scalars, b: scalars) => - a.string == b.string && a.int == b.int; - }); - -module MyQuery = [%graphql - {| - { - variousScalars @ppxAs(type: "scalars") { - string - int - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< variousScalars = @[%a@] >", - Alcotest.pp(scalars), - obj.variousScalars, - ); - - let equal = (a: qt, b: qt) => - Alcotest.equal(scalars, a.variousScalars, b.variousScalars); - }); - -[%graphql - {| - fragment ExternalFragment on VariousScalars @ppxAs(type: "scalars") { - string - int - } - - query ExternalFragmentQuery{ - variousScalars { - ...ExternalFragment - } - } -|} -]; - -let external_fragment_query: - module Alcotest.TESTABLE with type t = ExternalFragmentQuery.t = - (module - { - type t = ExternalFragmentQuery.t; - - let pp = (formatter, obj: ExternalFragmentQuery.t) => - Format.fprintf( - formatter, - "< variousScalars = @[%a@] >", - Alcotest.pp(scalars), - obj.variousScalars, - ); - - let equal = (a: ExternalFragmentQuery.t, b: ExternalFragmentQuery.t) => - Alcotest.equal(scalars, a.variousScalars, b.variousScalars); - }); - -module InlineFragmentQuery = [%graphql - {| - { - dogOrHuman { - ...on Dog { - name - barkVolume - } - } - } -|} -]; - -type if_qt = InlineFragmentQuery.t; - -let inline_fragment_query: module Alcotest.TESTABLE with type t = if_qt = - (module - { - type t = if_qt; - - let pp = (formatter, obj: if_qt) => - Format.fprintf( - formatter, - "< dogOrHuman = @[%a@] >", - (formatter, v) => - switch (v) { - | `FutureAddedValue(_) => - Format.fprintf(formatter, "`FutureAddedValue") - | `Dog(dog: InlineFragmentQuery.t_dogOrHuman_Dog) => - Format.fprintf( - formatter, - "`Dog @[<>< name = %a ; barkVolume = %a >@]", - Format.pp_print_string, - dog.name, - Format.pp_print_float, - dog.barkVolume, - ) - }, - obj.dogOrHuman, - ); - - let equal = (a: if_qt, b: if_qt) => - switch (a.dogOrHuman, b.dogOrHuman) { - | (`Dog(a), `Dog(b)) => a.name == b.name - | (`FutureAddedValue(a), `FutureAddedValue(b)) => a == b - | _ => false - }; - }); - -[%graphql - {| - fragment DogFragment on Dog @bsRecord { - name - barkVolume - } - - query UnionExternalFragmentQuery { - dogOrHuman { - ...on Dog { - ...DogFragment - } - } - } -|} -]; -let union_external_fragment_query: - module Alcotest.TESTABLE with type t = UnionExternalFragmentQuery.t = - (module - { - type t = UnionExternalFragmentQuery.t; - - let pp = (formatter, obj: UnionExternalFragmentQuery.t) => - Format.fprintf( - formatter, - "< dogOrHuman = @[%a@] >", - (formatter, v) => - switch (v) { - | `FutureAddedValue(_) => - Format.fprintf(formatter, "`FutureAddedValue") - | `Dog(dog: DogFragment.t) => - Format.fprintf( - formatter, - "`Dog @[<>< name = %a ; barkVolume = %a >@]", - Format.pp_print_string, - dog.name, - Format.pp_print_float, - dog.barkVolume, - ) - }, - obj.dogOrHuman, - ); - - let equal = - (a: UnionExternalFragmentQuery.t, b: UnionExternalFragmentQuery.t) => - switch (a.dogOrHuman, b.dogOrHuman) { - | (`Dog(a), `Dog(b)) => a.name == b.name - | (`FutureAddedValue(a), `FutureAddedValue(b)) => a == b - | _ => false - }; - }); - -let decodes_record_in_selection = () => - Alcotest.check( - my_query, - "query result equality", - {| {"variousScalars": {"string": "a string", "int": 123}} |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - variousScalars: { - string: "a string", - int: 123, - }, - }, - ); - -let decodes_record_in_external_fragment = () => - Alcotest.check( - external_fragment_query, - "query result equality", - {| {"variousScalars": {"string": "a string", "int": 123}} |} - |> Yojson.Basic.from_string - |> ExternalFragmentQuery.unsafe_fromJson - |> ExternalFragmentQuery.parse, - { - variousScalars: { - string: "a string", - int: 123, - }, - }, - ); - -let decodes_record_in_inline_fragment = () => - Alcotest.check( - inline_fragment_query, - "query result equality", - {| {"dogOrHuman": {"__typename": "Dog", "name": "name", "barkVolume": 123.0}} |} - |> Yojson.Basic.from_string - |> InlineFragmentQuery.unsafe_fromJson - |> InlineFragmentQuery.parse, - {dogOrHuman: `Dog({name: "name", barkVolume: 123.0})}, - ); - -let decodes_record_in_external_fragment_on_union_selections = () => - Alcotest.check( - union_external_fragment_query, - "query result equality", - {| {"dogOrHuman": {"__typename": "Dog", "name": "name", "barkVolume": 123.0}} |} - |> Yojson.Basic.from_string - |> UnionExternalFragmentQuery.unsafe_fromJson - |> UnionExternalFragmentQuery.parse, - {dogOrHuman: `Dog({name: "name", barkVolume: 123.0})}, - ); - -let tests = [ - ("Decodes a record in a selection", `Quick, decodes_record_in_selection), - ( - "Decodes a record in an external fragment", - `Quick, - decodes_record_in_external_fragment, - ), - ( - "Decodes a record in an inline fragment", - `Quick, - decodes_record_in_inline_fragment, - ), - ( - "Decodes a record in an external fragment on union selections", - `Quick, - decodes_record_in_external_fragment_on_union_selections, - ), -]; diff --git a/tests_native/recursive_input.ml b/tests_native/recursive_input.ml new file mode 100644 index 00000000..d8fc8fc8 --- /dev/null +++ b/tests_native/recursive_input.ml @@ -0,0 +1,38 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($arg: RecursiveInput!) { + recursiveInput(arg: $arg) + } +|}] + +let construct_recursive_input_type () = + test_json_ + (MyQuery.makeVariables + ~arg: + { + otherField = Some "test"; + enum = None; + inner = + Some + { otherField = Some "inner"; enum = Some `SECOND; inner = None }; + } + () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "arg": { + "otherField": "test", + "inner": { + "otherField": "inner", + "inner": null, + "enum": "SECOND" + }, + "enum": null + } + } |}) + +let tests = + [ ("Constructing a recursive input type", construct_recursive_input_type) ] diff --git a/tests_native/recursive_input.re b/tests_native/recursive_input.re deleted file mode 100644 index 6f098b32..00000000 --- a/tests_native/recursive_input.re +++ /dev/null @@ -1,51 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($arg: RecursiveInput!) { - recursiveInput(arg: $arg) - } -|} -]; - -let construct_recursive_input_type = () => - Alcotest.check( - yojson, - "json equality", - MyQuery.makeVariables( - ~arg={ - otherField: Some("test"), - enum: None, - inner: - Some({ - otherField: Some("inner"), - enum: Some(`SECOND), - inner: None, - }), - }, - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "arg": { - "otherField": "test", - "inner": { - "otherField": "inner", - "inner": null, - "enum": "SECOND" - }, - "enum": null - } - } |}, - ), - ); - -let tests = [ - ( - "Constructing a recursive input type", - `Quick, - construct_recursive_input_type, - ), -]; diff --git a/tests_native/scalars.ml b/tests_native/scalars.ml new file mode 100644 index 00000000..a55c37e4 --- /dev/null +++ b/tests_native/scalars.ml @@ -0,0 +1,161 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + { + variousScalars { + nullableString + string + nullableInt + int + nullableFloat + float + nullableBoolean + boolean + nullableID + id + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter + ("< variousScalars = @[<>< nullablleString = %a ; string = %a ; \ + nullableInt = %a ; int = %a ; nullableFloat = %a ; float = %a ; \ + nullableBoolean = %a ; boolean = %a ; nullableID = %a ; id = %a >@]" + [@reason.raw_literal + "< variousScalars = @[<>< nullablleString = %a ; string = %a ; \ + nullableInt = %a ; int = %a ; nullableFloat = %a ; float = %a ; \ + nullableBoolean = %a ; boolean = %a ; nullableID = %a ; id = %a >@]"]) + (Format.pp_print_string |> pp_option) + obj.variousScalars.nullableString Format.pp_print_string + obj.variousScalars.string + (Format.pp_print_int |> pp_option) + obj.variousScalars.nullableInt Format.pp_print_int obj.variousScalars.int + (Format.pp_print_float |> pp_option) + obj.variousScalars.nullableFloat Format.pp_print_float + obj.variousScalars.float + (Format.pp_print_bool |> pp_option) + obj.variousScalars.nullableBoolean Format.pp_print_bool + obj.variousScalars.boolean + (Format.pp_print_string |> pp_option) + obj.variousScalars.nullableID Format.pp_print_string obj.variousScalars.id + +let equal (a : qt) (b : qt) = + a.variousScalars.nullableString = b.variousScalars.nullableString + && a.variousScalars.string = b.variousScalars.string + && a.variousScalars.nullableInt = b.variousScalars.nullableInt + && a.variousScalars.int = b.variousScalars.int + && a.variousScalars.nullableFloat = b.variousScalars.nullableFloat + && a.variousScalars.float = b.variousScalars.float + && a.variousScalars.nullableBoolean = b.variousScalars.nullableBoolean + && a.variousScalars.boolean = b.variousScalars.boolean + && a.variousScalars.nullableID = b.variousScalars.nullableID + && a.variousScalars.id = b.variousScalars.id + +let decodes_non_null_scalars () = + test_exp + ({| { + "variousScalars": { + "nullableString": "a nullable string", + "string": "a string", + "nullableInt": 456, + "int": 123, + "nullableFloat": 678.5, + "float": 1234.5, + "nullableBoolean": false, + "boolean": true, + "nullableID": "a nullable ID", + "id": "an ID" + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + variousScalars = + { + nullableString = Some "a nullable string"; + string = "a string"; + nullableInt = Some 456; + int = 123; + nullableFloat = Some 678.5; + float = 1234.5; + nullableBoolean = Some false; + boolean = true; + nullableID = Some "a nullable ID"; + id = "an ID"; + }; + } + equal pp + +let decodes_null_scalars () = + test_exp + ({| { + "variousScalars": { + "nullableString": null, + "string": "a string", + "nullableInt": null, + "int": 123, + "nullableFloat": null, + "float": 1234.5, + "nullableBoolean": null, + "boolean": true, + "nullableID": null, + "id": "an ID" + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + variousScalars = + { + nullableString = None; + string = "a string"; + nullableInt = None; + int = 123; + nullableFloat = None; + float = 1234.5; + nullableBoolean = None; + boolean = true; + nullableID = None; + id = "an ID"; + }; + } + equal pp + +let decodes_omitted_scalars () = + test_exp + ({| { + "variousScalars": { + "string": "a string", + "int": 123, + "float": 1234.5, + "boolean": true, + "id": "an ID" + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + variousScalars = + { + nullableString = None; + string = "a string"; + nullableInt = None; + int = 123; + nullableFloat = None; + float = 1234.5; + nullableBoolean = None; + boolean = true; + nullableID = None; + id = "an ID"; + }; + } + equal pp + +let tests = + [ + ("Decodes non-null scalars", decodes_non_null_scalars); + ("Decodes null scalars", decodes_null_scalars); + ("Decodes omitted scalars", decodes_omitted_scalars); + ] diff --git a/tests_native/scalars.re b/tests_native/scalars.re deleted file mode 100644 index a7474197..00000000 --- a/tests_native/scalars.re +++ /dev/null @@ -1,178 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - { - variousScalars { - nullableString - string - nullableInt - int - nullableFloat - float - nullableBoolean - boolean - nullableID - id - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< variousScalars = @[<>< nullablleString = %a ; string = %a ; nullableInt = %a ; int = %a ; nullableFloat = %a ; float = %a ; nullableBoolean = %a ; boolean = %a ; nullableID = %a ; id = %a >@]", - Format.pp_print_string |> print_option, - obj.variousScalars.nullableString, - Format.pp_print_string, - obj.variousScalars.string, - Format.pp_print_int |> print_option, - obj.variousScalars.nullableInt, - Format.pp_print_int, - obj.variousScalars.int, - Format.pp_print_float |> print_option, - obj.variousScalars.nullableFloat, - Format.pp_print_float, - obj.variousScalars.float, - Format.pp_print_bool |> print_option, - obj.variousScalars.nullableBoolean, - Format.pp_print_bool, - obj.variousScalars.boolean, - Format.pp_print_string |> print_option, - obj.variousScalars.nullableID, - Format.pp_print_string, - obj.variousScalars.id, - ); - - let equal = (a: qt, b: qt) => - a.variousScalars.nullableString == b.variousScalars.nullableString - && a.variousScalars.string == b.variousScalars.string - && a.variousScalars.nullableInt == b.variousScalars.nullableInt - && a.variousScalars.int == b.variousScalars.int - && a.variousScalars.nullableFloat == b.variousScalars.nullableFloat - && a.variousScalars.float == b.variousScalars.float - && a.variousScalars.nullableBoolean == b.variousScalars.nullableBoolean - && a.variousScalars.boolean == b.variousScalars.boolean - && a.variousScalars.nullableID == b.variousScalars.nullableID - && a.variousScalars.id == b.variousScalars.id; - }); - -let decodes_non_null_scalars = () => - Alcotest.check( - my_query, - "query result equality", - {| { - "variousScalars": { - "nullableString": "a nullable string", - "string": "a string", - "nullableInt": 456, - "int": 123, - "nullableFloat": 678.5, - "float": 1234.5, - "nullableBoolean": false, - "boolean": true, - "nullableID": "a nullable ID", - "id": "an ID" - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - variousScalars: { - nullableString: Some("a nullable string"), - string: "a string", - nullableInt: Some(456), - int: 123, - nullableFloat: Some(678.5), - float: 1234.5, - nullableBoolean: Some(false), - boolean: true, - nullableID: Some("a nullable ID"), - id: "an ID", - }, - }, - ); - -let decodes_null_scalars = () => - Alcotest.check( - my_query, - "query result equality", - {| { - "variousScalars": { - "nullableString": null, - "string": "a string", - "nullableInt": null, - "int": 123, - "nullableFloat": null, - "float": 1234.5, - "nullableBoolean": null, - "boolean": true, - "nullableID": null, - "id": "an ID" - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - variousScalars: { - nullableString: None, - string: "a string", - nullableInt: None, - int: 123, - nullableFloat: None, - float: 1234.5, - nullableBoolean: None, - boolean: true, - nullableID: None, - id: "an ID", - }, - }, - ); - -let decodes_omitted_scalars = () => - Alcotest.check( - my_query, - "query result equality", - {| { - "variousScalars": { - "string": "a string", - "int": 123, - "float": 1234.5, - "boolean": true, - "id": "an ID" - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - variousScalars: { - nullableString: None, - string: "a string", - nullableInt: None, - int: 123, - nullableFloat: None, - float: 1234.5, - nullableBoolean: None, - boolean: true, - nullableID: None, - id: "an ID", - }, - }, - ); - -let tests = [ - ("Decodes non-null scalars", `Quick, decodes_non_null_scalars), - ("Decodes null scalars", `Quick, decodes_null_scalars), - ("Decodes omitted scalars", `Quick, decodes_omitted_scalars), -]; diff --git a/tests_native/scalars_args.ml b/tests_native/scalars_args.ml new file mode 100644 index 00000000..0b025240 --- /dev/null +++ b/tests_native/scalars_args.ml @@ -0,0 +1,78 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ( + $nullableString: String, + $string: String!, + $nullableInt: Int, + $int: Int!, + $nullableFloat: Float, + $float: Float!, + $nullableBoolean: Boolean, + $boolean: Boolean!, + $nullableID: ID, + $id: ID!, + ) { + scalarsInput(arg: { + nullableString: $nullableString, + string: $string, + nullableInt: $nullableInt, + int: $int, + nullableFloat: $nullableFloat, + float: $float, + nullableBoolean: $nullableBoolean, + boolean: $boolean, + nullableID: $nullableID, + id: $id, + }) + } +|}] + +let allows_you_to_omit_nullable_arguments () = + test_json_ + (MyQuery.makeVariables ~string:"a string" ~int:123 ~float:1234.5 + ~boolean:true ~id:"an ID" () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "nullableString": null, + "string": "a string", + "nullableInt": null, + "int": 123, + "nullableFloat": null, + "float": 1234.5, + "nullableBoolean": null, + "boolean": true, + "nullableID": null, + "id": "an ID" + } |}) + +let includes_non_nulled_arguments () = + test_json_ + (MyQuery.makeVariables ~nullableString:"a nullable string" + ~string:"a string" ~nullableInt:456 ~int:123 ~nullableFloat:567.5 + ~float:1234.5 ~nullableBoolean:false ~boolean:true + ~nullableID:"a nullable ID" ~id:"an ID" () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "nullableString": "a nullable string", + "string": "a string", + "nullableInt": 456, + "int": 123, + "nullableFloat": 567.5, + "float": 1234.5, + "nullableBoolean": false, + "boolean": true, + "nullableID": "a nullable ID", + "id": "an ID" + } |}) + +let tests = + [ + ( "Allows you to omit nullable arguments", + allows_you_to_omit_nullable_arguments ); + ("Includes non-nulled arguments", includes_non_nulled_arguments); + ] diff --git a/tests_native/scalars_args.re b/tests_native/scalars_args.re deleted file mode 100644 index 0d66c484..00000000 --- a/tests_native/scalars_args.re +++ /dev/null @@ -1,105 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ( - $nullableString: String, - $string: String!, - $nullableInt: Int, - $int: Int!, - $nullableFloat: Float, - $float: Float!, - $nullableBoolean: Boolean, - $boolean: Boolean!, - $nullableID: ID, - $id: ID!, - ) { - scalarsInput(arg: { - nullableString: $nullableString, - string: $string, - nullableInt: $nullableInt, - int: $int, - nullableFloat: $nullableFloat, - float: $float, - nullableBoolean: $nullableBoolean, - boolean: $boolean, - nullableID: $nullableID, - id: $id, - }) - } -|} -]; - -let allows_you_to_omit_nullable_arguments = () => - Alcotest.check( - yojson, - "json equality", - MyQuery.makeVariables( - ~string="a string", - ~int=123, - ~float=1234.5, - ~boolean=true, - ~id="an ID", - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "nullableString": null, - "string": "a string", - "nullableInt": null, - "int": 123, - "nullableFloat": null, - "float": 1234.5, - "nullableBoolean": null, - "boolean": true, - "nullableID": null, - "id": "an ID" - } |}, - ), - ); - -let includes_non_nulled_arguments = () => - Alcotest.check( - yojson, - "json equality", - MyQuery.makeVariables( - ~nullableString="a nullable string", - ~string="a string", - ~nullableInt=456, - ~int=123, - ~nullableFloat=567.5, - ~float=1234.5, - ~nullableBoolean=false, - ~boolean=true, - ~nullableID="a nullable ID", - ~id="an ID", - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "nullableString": "a nullable string", - "string": "a string", - "nullableInt": 456, - "int": 123, - "nullableFloat": 567.5, - "float": 1234.5, - "nullableBoolean": false, - "boolean": true, - "nullableID": "a nullable ID", - "id": "an ID" - } |}, - ), - ); - -let tests = [ - ( - "Allows you to omit nullable arguments", - `Quick, - allows_you_to_omit_nullable_arguments, - ), - ("Includes non-nulled arguments", `Quick, includes_non_nulled_arguments), -]; diff --git a/tests_native/scalars_input.ml b/tests_native/scalars_input.ml new file mode 100644 index 00000000..7677d6c5 --- /dev/null +++ b/tests_native/scalars_input.ml @@ -0,0 +1,45 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($arg: VariousScalarsInput!) { + scalarsInput(arg: $arg) + } +|}] + +let includes_non_nulled_arguments () = + test_json_ + (MyQuery.makeVariables + ~arg: + { + nullableString = Some "a nullable string"; + string = "a string"; + nullableInt = Some 456; + int = 123; + nullableFloat = Some 567.5; + float = 1234.5; + nullableBoolean = Some false; + boolean = true; + nullableID = Some "a nullable ID"; + id = "an ID"; + } + () + |> MyQuery.serializeVariables |> MyQuery.variablesToJson) + (Json.Read.from_string + {| { + "arg": { + "nullableString": "a nullable string", + "string": "a string", + "nullableInt": 456, + "int": 123, + "nullableFloat": 567.5, + "float": 1234.5, + "nullableBoolean": false, + "boolean": true, + "nullableID": "a nullable ID", + "id": "an ID" + } + } |}) + +let tests = [ ("Includes non-nulled arguments", includes_non_nulled_arguments) ] diff --git a/tests_native/scalars_input.re b/tests_native/scalars_input.re deleted file mode 100644 index 94a78cd2..00000000 --- a/tests_native/scalars_input.re +++ /dev/null @@ -1,52 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($arg: VariousScalarsInput!) { - scalarsInput(arg: $arg) - } -|} -]; - -let includes_non_nulled_arguments = () => - Alcotest.check( - yojson, - "json equality", - MyQuery.makeVariables( - ~arg={ - nullableString: Some("a nullable string"), - string: "a string", - nullableInt: Some(456), - int: 123, - nullableFloat: Some(567.5), - float: 1234.5, - nullableBoolean: Some(false), - boolean: true, - nullableID: Some("a nullable ID"), - id: "an ID", - }, - (), - ) - |> MyQuery.serializeVariables - |> MyQuery.variablesToJson, - Yojson.Basic.from_string( - {| { - "arg": { - "nullableString": "a nullable string", - "string": "a string", - "nullableInt": 456, - "int": 123, - "nullableFloat": 567.5, - "float": 1234.5, - "nullableBoolean": false, - "boolean": true, - "nullableID": "a nullable ID", - "id": "an ID" - } - } |}, - ), - ); - -let tests = [ - ("Includes non-nulled arguments", `Quick, includes_non_nulled_arguments), -]; diff --git a/tests_native/skip_directives.ml b/tests_native/skip_directives.ml new file mode 100644 index 00000000..4438860b --- /dev/null +++ b/tests_native/skip_directives.ml @@ -0,0 +1,64 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + query ($var: Boolean!) { + v1: variousScalars { + nullableString @skip(if: $var) + string @skip(if: $var) + } + v2: variousScalars { + nullableString @include(if: $var) + string @include(if: $var) + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter + "< v1 = @[<>< nullableString = %a ; string = %a >@] ; @[<>< nullableString \ + = %a ; string = %a >@] >" + (Format.pp_print_string |> pp_option) + obj.v1.nullableString + (Format.pp_print_string |> pp_option) + obj.v1.string + (Format.pp_print_string |> pp_option) + obj.v2.nullableString + (Format.pp_print_string |> pp_option) + obj.v2.string + +let equal (a : qt) (b : qt) = + a.v1.nullableString = b.v1.nullableString + && a.v1.string = b.v1.string + && a.v2.nullableString = b.v2.nullableString + && a.v2.string = b.v2.string + +let responds_with_none_to_nulled_fields () = + test_exp + ({|{"v1": {"nullableString": null, "string": null}, "v2": {"nullableString": null, "string": null}}|} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + v1 = { nullableString = None; string = None }; + v2 = { nullableString = None; string = None }; + } + equal pp + +let responds_with_none_to_omitted_fields () = + test_exp + ({|{"v1": {}, "v2": {}}|} |> Json.Read.from_string + |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + v1 = { nullableString = None; string = None }; + v2 = { nullableString = None; string = None }; + } + equal pp + +let tests = + [ + ("Responds with None to nulled fields", responds_with_none_to_nulled_fields); + ( "Responds with None to omitted fields", + responds_with_none_to_omitted_fields ); + ] diff --git a/tests_native/skip_directives.re b/tests_native/skip_directives.re deleted file mode 100644 index 4386bdd7..00000000 --- a/tests_native/skip_directives.re +++ /dev/null @@ -1,97 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - query ($var: Boolean!) { - v1: variousScalars { - nullableString @skip(if: $var) - string @skip(if: $var) - } - v2: variousScalars { - nullableString @include(if: $var) - string @include(if: $var) - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< v1 = @[<>< nullableString = %a ; string = %a >@] ; @[<>< nullableString = %a ; string = %a >@] >", - Format.pp_print_string |> print_option, - obj.v1.nullableString, - Format.pp_print_string |> print_option, - obj.v1.string, - Format.pp_print_string |> print_option, - obj.v2.nullableString, - Format.pp_print_string |> print_option, - obj.v2.string, - ); - - let equal = (a: qt, b: qt) => - a.v1.nullableString == b.v1.nullableString - && a.v1.string == b.v1.string - && a.v2.nullableString == b.v2.nullableString - && a.v2.string == b.v2.string; - }); - -let responds_with_none_to_nulled_fields = () => - Alcotest.check( - my_query, - "query equality", - {|{"v1": {"nullableString": null, "string": null}, "v2": {"nullableString": null, "string": null}}|} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - v1: { - nullableString: None, - string: None, - }, - v2: { - nullableString: None, - string: None, - }, - }, - ); - -let responds_with_none_to_omitted_fields = () => - Alcotest.check( - my_query, - "query equality", - {|{"v1": {}, "v2": {}}|} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - v1: { - nullableString: None, - string: None, - }, - v2: { - nullableString: None, - string: None, - }, - }, - ); - -let tests = [ - ( - "Responds with None to nulled fields", - `Quick, - responds_with_none_to_nulled_fields, - ), - ( - "Responds with None to omitted fields", - `Quick, - responds_with_none_to_omitted_fields, - ), -]; diff --git a/tests_native/test_shared.ml b/tests_native/test_shared.ml new file mode 100644 index 00000000..9d9b6fa5 --- /dev/null +++ b/tests_native/test_shared.ml @@ -0,0 +1,122 @@ +type result = + | Pass + | CompareFail of + (Format.formatter -> unit -> unit) * (Format.formatter -> unit -> unit) + | Fail of string + +let make_unit_pp pp v fmt () = pp fmt v + +let test_exp a b exp (pp : Format.formatter -> 'a -> unit) = + if exp a b then Pass + else CompareFail ((make_unit_pp pp) a, (make_unit_pp pp) b) + +let pp_string = Format.pp_print_text +let test_str s1 s2 = test_exp s1 s2 ( = ) pp_string +let test_str_not s1 s2 = test_exp s1 s2 ( != ) pp_string + +let pp_json formatter json = + Format.pp_print_text formatter (Json.pretty_to_string json) + +let json_equal a b = Json.equal a b +let test_json_ a b = test_exp a b json_equal pp_json +let pp_color fmt color = Format.fprintf fmt "@<0>%s" color + +let pp_colored pp fmt v color = + pp_color fmt color; + pp fmt v; + pp_color fmt Cli_colors.reset + +let pp_colored_str = pp_colored Format.pp_print_string + +let pp_option inner formatter = function + | None -> pp_colored_str formatter "None" Cli_colors.red + | Some v -> + pp_colored_str formatter "Some" Cli_colors.red; + Format.fprintf formatter "(@[%a@])" inner v + +let pp_array inner fmt value = + let open Format in + pp_colored_str fmt "[|" Cli_colors.blue; + Format.pp_print_break fmt 1 2; + Format.pp_open_hvbox fmt 0; + Array.iteri + (fun idx v -> + pp_open_hvbox fmt 0; + inner fmt v; + pp_close_box fmt (); + if idx < Array.length value - 1 then ( + pp_colored_str fmt ";" Cli_colors.blue; + pp_print_break fmt 1 2) + else ( + pp_color fmt Cli_colors.blue; + Format.pp_print_if_newline fmt (); + Format.pp_print_string fmt ";"; + pp_color fmt Cli_colors.reset)) + value; + Format.pp_close_box fmt (); + Format.pp_print_break fmt 1 0; + pp_colored_str fmt "|]" Cli_colors.blue + +let pp_record fmt (fields : (string * (Format.formatter -> unit)) list) = + pp_colored_str fmt "{" Cli_colors.blue; + Format.pp_print_break fmt 1 2; + Format.pp_open_hvbox fmt 0; + let len = List.length fields in + fields + |> List.iteri (fun i (field, value) -> + Format.pp_open_hvbox fmt 0; + pp_colored_str fmt field Cli_colors.purple; + pp_colored_str fmt " = " Cli_colors.Dimmed.purple; + value fmt; + Format.pp_close_box fmt (); + if i < len - 1 then ( + pp_colored_str fmt ";" Cli_colors.blue; + Format.pp_print_break fmt 1 0) + else ( + pp_color fmt Cli_colors.blue; + Format.pp_print_if_newline fmt (); + Format.pp_print_string fmt ";"; + pp_color fmt Cli_colors.reset)); + Format.pp_close_box fmt (); + Format.pp_print_break fmt 1 0; + pp_colored_str fmt "}" Cli_colors.blue + +(* Vendored from Array.combine in stdlib, because it's just included in 4.13 *) +let array_combine a b = + let na = Array.length a in + let nb = Array.length b in + if na <> nb then invalid_arg "Array.combine"; + if na = 0 then [||] + else + let x = Array.make na (Array.unsafe_get a 0, Array.unsafe_get b 0) in + for i = 1 to na - 1 do + Array.unsafe_set x i (Array.unsafe_get a i, Array.unsafe_get b i) + done; + x + +let test_exp_array a b exp pp = + test_exp a b + (fun a b -> Array.for_all (fun (a, b) -> exp a b) (array_combine a b)) + (pp_array pp) + +let array_zipmap f a b = + let min = min (Array.length a) (Array.length b) in + Array.init min (fun i -> f a.(i) b.(i)) + +let opt_eq f a b = + match (a, b) with Some a, Some b -> f a b | None, None -> true | _ -> false + +let pp_string_literal fmt s = + pp_colored_str fmt ("\"" ^ s ^ "\"") Cli_colors.yellow + +let swap_args fn fmt fields = fn fields fmt +let pp_to_print = swap_args +let print_record = pp_to_print pp_record +let print_option field inner fmt = pp_option (pp_to_print inner) fmt field +let print_string_literal = pp_to_print pp_string_literal + +let print_int_literal integer fmt = + pp_colored Format.pp_print_int fmt integer Cli_colors.yellow + +let print_float_literal f fmt = + pp_colored Format.pp_print_float fmt f Cli_colors.yellow diff --git a/tests_native/test_shared.re b/tests_native/test_shared.re deleted file mode 100644 index fb366dcd..00000000 --- a/tests_native/test_shared.re +++ /dev/null @@ -1,46 +0,0 @@ -let yojson: module Alcotest.TESTABLE with type t = Yojson.Basic.t = - (module - { - type t = Yojson.Basic.t; - - let pp = (formatter, t) => - Format.pp_print_text(formatter, Yojson.Basic.pretty_to_string(t)); - - let equal = (==); - }); - -let test_json = (a, b) => Alcotest.check(yojson, "JSON equality", a, b); - -let print_option = (inner, formatter) => - fun - | None => Format.pp_print_string(formatter, "None") - | Some(v) => Format.fprintf(formatter, "Some(@[%a@])", inner, v); - -let print_array = (inner, formatter, value) => { - open Format; - pp_print_string(formatter, "[ "); - Array.iteri( - (idx, v) => { - if (idx > 0) { - pp_print_string(formatter, "; "); - }; - pp_open_hovbox(formatter, 1); - inner(formatter, v); - pp_close_box(formatter, ()); - }, - value, - ); - pp_print_string(formatter, " ]"); -}; - -let array_zipmap = (f, a, b) => { - let min = min(Array.length(a), Array.length(b)); - Array.init(min, i => f(a[i], b[i])); -}; - -let opt_eq = (f, a, b) => - switch (a, b) { - | (Some(a), Some(b)) => f(a, b) - | (None, None) => true - | _ => false - }; diff --git a/tests_native/typename.ml b/tests_native/typename.ml new file mode 100644 index 00000000..e04b3daa --- /dev/null +++ b/tests_native/typename.ml @@ -0,0 +1,61 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + { + first: nestedObject { + __typename + inner { + __typename + inner { + __typename + field + } + } + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter "< first = @[<>< __typename = %a ; inner = %a >@] >" + Format.pp_print_string obj.first.__typename + (fun formatter -> function + | Some (v : MyQuery.t_first_inner) -> + Format.fprintf formatter "Some @[<>< __typename = %a ; inner = %a >@]" + Format.pp_print_string v.__typename + (fun formatter -> function + | Some (v : MyQuery.t_first_inner_inner) -> + Format.fprintf formatter + "Some @[<>< __typename = %a ; field = %a >@]" + Format.pp_print_string v.__typename Format.pp_print_string + v.field + | None -> Format.fprintf formatter "None") + v.inner + | None -> Format.fprintf formatter "None") + obj.first.inner + +let equal (a : qt) (b : qt) = + a.first.__typename = b.first.__typename + && opt_eq + (fun (a : MyQuery.t_first_inner) (b : MyQuery.t_first_inner) -> + a.__typename = b.__typename + && opt_eq + (fun (a : MyQuery.t_first_inner_inner) + (b : MyQuery.t_first_inner_inner) -> + a.__typename = b.__typename && a.field = b.field) + a.inner b.inner) + a.first.inner b.first.inner + +let decodes_typename () = + test_exp + ({| + {"first": {"__typename": "NestedObject", "inner": null}} + |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { first = { __typename = "NestedObject"; inner = None } } + equal pp + +let tests = [ ("Decodes typename as a non-nullable string", decodes_typename) ] diff --git a/tests_native/typename.re b/tests_native/typename.re deleted file mode 100644 index 8fc3f87f..00000000 --- a/tests_native/typename.re +++ /dev/null @@ -1,98 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - { - first: nestedObject { - __typename - inner { - __typename - inner { - __typename - field - } - } - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< first = @[<>< __typename = %a ; inner = %a >@] >", - Format.pp_print_string, - obj.first.__typename, - formatter => - fun - | Some(v: MyQuery.t_first_inner) => - Format.fprintf( - formatter, - "Some @[<>< __typename = %a ; inner = %a >@]", - Format.pp_print_string, - v.__typename, - formatter => - fun - | Some(v: MyQuery.t_first_inner_inner) => - Format.fprintf( - formatter, - "Some @[<>< __typename = %a ; field = %a >@]", - Format.pp_print_string, - v.__typename, - Format.pp_print_string, - v.field, - ) - | None => Format.fprintf(formatter, "None"), - v.inner, - ) - | None => Format.fprintf(formatter, "None"), - obj.first.inner, - ); - - let equal = (a: qt, b: qt) => - a.first.__typename == b.first.__typename - && opt_eq( - (a: MyQuery.t_first_inner, b: MyQuery.t_first_inner) => - a.__typename == b.__typename - && opt_eq( - ( - a: MyQuery.t_first_inner_inner, - b: MyQuery.t_first_inner_inner, - ) => - a.__typename == b.__typename && a.field == b.field, - a.inner, - b.inner, - ), - a.first.inner, - b.first.inner, - ); - }); - -let decodes_typename = () => - Alcotest.check( - my_query, - "result equality", - {| - {"first": {"__typename": "NestedObject", "inner": null}} - |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - first: { - __typename: "NestedObject", - inner: None, - }, - }, - ); - -let tests = [ - ("Decodes typename as a non-nullable string", `Quick, decodes_typename), -]; diff --git a/tests_native/union.ml b/tests_native/union.ml new file mode 100644 index 00000000..03215feb --- /dev/null +++ b/tests_native/union.ml @@ -0,0 +1,53 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + { + dogOrHuman { + ...on Dog { + name + barkVolume + } + + ...on Human { + name + } + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter "< dogOrHuman = %a >" + (fun formatter -> function + | `FutureAddedValue _ -> Format.fprintf formatter "`FutureAddedValue" + | `Dog (dog : MyQuery.t_dogOrHuman_Dog) -> + Format.fprintf formatter "`Dog @[<>< name = %a ; barkVolume = %a >@]" + Format.pp_print_string dog.name Format.pp_print_float dog.barkVolume + | `Human (human : MyQuery.t_dogOrHuman_Human) -> + Format.fprintf formatter "`Human @[<>< name = %a >@]" + Format.pp_print_string human.name) + obj.dogOrHuman + +let equal (a : qt) (b : qt) = + match (a.dogOrHuman, b.dogOrHuman) with + | `Dog a, `Dog b -> a.name = b.name && a.barkVolume = b.barkVolume + | `Human a, `Human b -> a.name = b.name + | _ -> false + +let decodes_exhaustive_query () = + test_exp + ({| { + "dogOrHuman": { + "__typename": "Dog", + "name": "Fido", + "barkVolume": 123.0 + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { dogOrHuman = `Dog { name = "Fido"; barkVolume = 123.0 } } + equal pp + +let tests = [ ("Decodes exhaustive query", decodes_exhaustive_query) ] diff --git a/tests_native/union.re b/tests_native/union.re deleted file mode 100644 index 523a8562..00000000 --- a/tests_native/union.re +++ /dev/null @@ -1,78 +0,0 @@ -module MyQuery = [%graphql - {| - { - dogOrHuman { - ...on Dog { - name - barkVolume - } - - ...on Human { - name - } - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< dogOrHuman = %a >", - formatter => - fun - | `FutureAddedValue(_) => - Format.fprintf(formatter, "`FutureAddedValue") - | `Dog(dog: MyQuery.t_dogOrHuman_Dog) => - Format.fprintf( - formatter, - "`Dog @[<>< name = %a ; barkVolume = %a >@]", - Format.pp_print_string, - dog.name, - Format.pp_print_float, - dog.barkVolume, - ) - | `Human(human: MyQuery.t_dogOrHuman_Human) => - Format.fprintf( - formatter, - "`Human @[<>< name = %a >@]", - Format.pp_print_string, - human.name, - ), - obj.dogOrHuman, - ); - - let equal = (a: qt, b: qt) => - switch (a.dogOrHuman, b.dogOrHuman) { - | (`Dog(a), `Dog(b)) => - a.name == b.name && a.barkVolume == b.barkVolume - | (`Human(a), `Human(b)) => a.name == b.name - | _ => false - }; - }); - -let decodes_exhaustive_query = () => - Alcotest.check( - my_query, - "result equality", - {| { - "dogOrHuman": { - "__typename": "Dog", - "name": "Fido", - "barkVolume": 123.0 - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - {dogOrHuman: `Dog({name: "Fido", barkVolume: 123.0})}, - ); - -let tests = [("Decodes exhaustive query", `Quick, decodes_exhaustive_query)]; diff --git a/tests_native/union_partial.ml b/tests_native/union_partial.ml new file mode 100644 index 00000000..6aecec2c --- /dev/null +++ b/tests_native/union_partial.ml @@ -0,0 +1,49 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + { + dogOrHuman { + ...on Dog { + name + barkVolume + } + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter "< dogOrHuman = %a >" + (fun formatter -> function + | `Dog (dog : MyQuery.t_dogOrHuman_Dog) -> + Format.fprintf formatter "`Dog @[<>< name = %a ; barkVolume = %a >@]" + Format.pp_print_string dog.name Format.pp_print_float dog.barkVolume + | `FutureAddedValue _ -> Format.fprintf formatter "`FutureAddedValue") + obj.dogOrHuman + +let equal (a : qt) (b : qt) = + match (a.dogOrHuman, b.dogOrHuman) with + | `Dog a, `Dog b -> a.name = b.name && a.barkVolume = b.barkVolume + | `FutureAddedValue a, `FutureAddedValue b -> a = b + | _ -> false + +let decodes_non_exhaustive_query () = + test_exp + ({| { + "dogOrHuman": { + "__typename": "Human", + "name": "Max" + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { + dogOrHuman = + `FutureAddedValue + (`Assoc [ ("__typename", `String "Human"); ("name", `String "Max") ]); + } + equal pp + +let tests = [ ("Decodes non-exhaustive query", decodes_non_exhaustive_query) ] diff --git a/tests_native/union_partial.re b/tests_native/union_partial.re deleted file mode 100644 index 08a979a5..00000000 --- a/tests_native/union_partial.re +++ /dev/null @@ -1,76 +0,0 @@ -module MyQuery = [%graphql - {| - { - dogOrHuman { - ...on Dog { - name - barkVolume - } - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< dogOrHuman = %a >", - formatter => - fun - | `Dog(dog: MyQuery.t_dogOrHuman_Dog) => - Format.fprintf( - formatter, - "`Dog @[<>< name = %a ; barkVolume = %a >@]", - Format.pp_print_string, - dog.name, - Format.pp_print_float, - dog.barkVolume, - ) - | `FutureAddedValue(_) => - Format.fprintf(formatter, "`FutureAddedValue"), - obj.dogOrHuman, - ); - - let equal = (a: qt, b: qt) => - switch (a.dogOrHuman, b.dogOrHuman) { - | (`Dog(a), `Dog(b)) => - a.name == b.name && a.barkVolume == b.barkVolume - | (`FutureAddedValue(a), `FutureAddedValue(b)) => a == b - | _ => false - }; - }); - -let decodes_non_exhaustive_query = () => - Alcotest.check( - my_query, - "result equality", - {| { - "dogOrHuman": { - "__typename": "Human", - "name": "Max" - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - { - dogOrHuman: - `FutureAddedValue( - `Assoc([ - ("__typename", `String("Human")), - ("name", `String("Max")), - ]), - ), - }, - ); - -let tests = [ - ("Decodes non-exhaustive query", `Quick, decodes_non_exhaustive_query), -]; diff --git a/tests_native/variant.ml b/tests_native/variant.ml new file mode 100644 index 00000000..24190c1c --- /dev/null +++ b/tests_native/variant.ml @@ -0,0 +1,68 @@ +open Test_shared + +module MyQuery = +[%graphql +{| + mutation { + mutationWithError @bsVariant { + value { + stringField + } + + errors { + field + message + } + } + } +|}] + +type qt = MyQuery.t + +let pp formatter (obj : qt) = + Format.fprintf formatter "< mutationWithError = %a >" + (fun formatter -> function + | `Value (v : MyQuery.t_mutationWithError_value) -> + Format.fprintf formatter "`Value @[<>< stringField = %a >@]" + Format.pp_print_string v.stringField + | `Errors (v : MyQuery.t_mutationWithError_errors array) -> + Format.fprintf formatter "`Errors %a" + (pp_array (fun formatter (v : MyQuery.t_mutationWithError_errors) -> + Format.fprintf formatter "< field = %a ; message = %a >" + Format.pp_print_string + (match v.field with + | `FIRST -> "FIRST" + | `SECOND -> "SECOND" + | `THIRD -> "THIRD" + | `FutureAddedValue _ -> "THIRD") + Format.pp_print_string v.message)) + v) + obj.mutationWithError + +let equal (a : qt) (b : qt) = + match (a.mutationWithError, b.mutationWithError) with + | `Value a, `Value b -> a.stringField = b.stringField + | `Errors a, `Errors b -> + array_zipmap + (fun (a : MyQuery.t_mutationWithError_errors) + (b : MyQuery.t_mutationWithError_errors) -> + a.field = b.field && a.message = b.message) + a b + |> Array.to_list + |> List.for_all (fun x -> x) + | _ -> false + +let converts_into_variant () = + test_exp + ({| { + "mutationWithError": { + "value": { + "stringField": "a string" + } + } + } |} + |> Json.Read.from_string |> MyQuery.unsafe_fromJson |> MyQuery.parse) + { mutationWithError = `Value { stringField = "a string" } } + equal pp + +let tests = [ ("Converts object into variant", converts_into_variant) ] diff --git a/tests_native/variant.re b/tests_native/variant.re deleted file mode 100644 index 3700f9e6..00000000 --- a/tests_native/variant.re +++ /dev/null @@ -1,102 +0,0 @@ -open Test_shared; - -module MyQuery = [%graphql - {| - mutation { - mutationWithError @bsVariant { - value { - stringField - } - - errors { - field - message - } - } - } -|} -]; - -type qt = MyQuery.t; - -let my_query: module Alcotest.TESTABLE with type t = qt = - (module - { - type t = qt; - - let pp = (formatter, obj: qt) => - Format.fprintf( - formatter, - "< mutationWithError = %a >", - formatter => - fun - | `Value(v: MyQuery.t_mutationWithError_value) => - Format.fprintf( - formatter, - "`Value @[<>< stringField = %a >@]", - Format.pp_print_string, - v.stringField, - ) - | `Errors(v: array(MyQuery.t_mutationWithError_errors)) => - Format.fprintf( - formatter, - "`Errors %a", - print_array((formatter, v: MyQuery.t_mutationWithError_errors) => - Format.fprintf( - formatter, - "< field = %a ; message = %a >", - Format.pp_print_string, - switch (v.field) { - | `FIRST => "FIRST" - | `SECOND => "SECOND" - | `THIRD => "THIRD" - | `FutureAddedValue(_) => "THIRD" - }, - Format.pp_print_string, - v.message, - ) - ), - v, - ), - obj.mutationWithError, - ); - - let equal = (a: qt, b: qt) => - switch (a.mutationWithError, b.mutationWithError) { - | (`Value(a), `Value(b)) => a.stringField == b.stringField - | (`Errors(a), `Errors(b)) => - array_zipmap( - ( - a: MyQuery.t_mutationWithError_errors, - b: MyQuery.t_mutationWithError_errors, - ) => - a.field == b.field && a.message == b.message, - a, - b, - ) - |> Array.to_list - |> List.for_all(x => x) - | _ => false - }; - }); - -let converts_into_variant = () => - Alcotest.check( - my_query, - "result equality", - {| { - "mutationWithError": { - "value": { - "stringField": "a string" - } - } - } |} - |> Yojson.Basic.from_string - |> MyQuery.unsafe_fromJson - |> MyQuery.parse, - {mutationWithError: `Value({stringField: "a string"})}, - ); - -let tests = [ - ("Converts object into variant", `Quick, converts_into_variant), -];

      1|BxH}E!TM31!CSZ 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 l-VzT7O-S(E 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�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�To18ioT+_`!XUkLhbQLl$jSAe@ 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 z%0D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 mlaDSfcmQet+GSI71 zM;8VxxbF1AKqmuoCbe#HfT7BmD%{*G4yL+8ivv`u@M|V&%i;jz+3DJxjTpsTSQ21R zg}Icxyt@V^K|I_gQxp9f>sBl#|L82sKRVa9*BEw-w-yE*1|gXwMG&j85E+`f-i2`S zK_jGHu@T(mcXJjo{oXC2pSl(Y?oVtnYZnEK<<~mUx}DOELtHB@3e1FQ!xEAyc^bG<^6!Af5!mLt#-)KDmfcGkd`n_TRJUTmzfI9w zD(_iDAEsQ()bNw&KRJ;0JeaSuoRmTt=Vj%xN4m<@|Cc@`V_4^JevXyWH1+(4+eY*mtp7j*f%34rTlpQCKgPfocEWL1r<8Q zU$;lmOG=mMbp|m363p)`QBu35@ zQ#foS_S~GSU*?C;V`c774-s|F5sQ7-WyLC|EmroFkDRf{IQOVrk)Jr0!;3exyxi2) z#YRYYG7`x=lFIaw(e~xRw29NyvO4iF`v+alx}p-tE*m-b8J5FCPwG?rishB?ko1sg zwvX{!21O6$+xG9ueZa=j2kNnV+X%fenO@20*}W>50k5L0jj1(@k=RRt10KP7y@N zNhnwYW1ZAcXU;a;aQT3u?l?tJqC6PkHmnZ3YZ!e%_lC-7Z$PKJs|~@wp}vAO(*iuu zad40o^A`>J!LJ!}vBfp44zy>g-%93_r&TIg#kk6^4yJQhYCA5uoM0lJQlZlitlJ}x z)a~E>;Re*Vdf8X5#%Ia9hfNyE2x5`bv12KM~Cmfz!Xf<-2Q){{Hy#Hn{|4n}cLd^7aL&0^qZ5&>Gk8{3JCNyHk-A8RO4^of-y zDd1HKrsw2oQ~&t&w~6EEp}Kfr?}W*XGt89JmTiF!`^~EkW^1Ee?LO7Yr;+t(aQ^u) zPS4JwLiqan!*|3e`Gk6SjHPVQli=*Ntcl!<=xGRklLd#I2k|H=uOFVEjN>>_SiRO3 zMY$N*xK=Ii^NBvSvRYBS6C?RozE5)WEj5iC3B0dA*58WJD~=pE;5b4WC5!yM?s&Mw zIwWP*2@L}I=YG7IJ+O4L-hL$Cq;k=y^A_^xB#JzJ*+QV7s#5bZL$Nw{$jOfT$t5~8D&*!R@CGjZ3zg!lH3 zH}u6euRGSWppPGgk;!^e&A+sCyvCBxRk(Cu49!gvmU(Acl?CoQGd&rPt#9A@;NRWR zO^k6YS=_oqo`=5C(2T#g)Z~PH^0eRCETh~`YzX8w%7j~{E>^9)47n5HWQ7=|$gvGy zMBV-Huc2QUEOW@VceL&=6UU?C>E56Y=S}C}S9xOOE&(^14yz)T+MlLiFo3%a_}Rro z@XNG6U`*D7@Fy>v6)l+8tRN0JJX=b^Bje#r_+|Dfl!3^iK>fG^&S<5#`Qezx2vKls1#@GjI z9*J)`{sljM?--IKa&-*SLBGG=piwie;A}- zKkWxJvc&z(EMIPZ!Y^`%m$S%~=USvfwWv8Qd%c;R>j%{^619-je1n|8eJ8bsZwM@D zk1-)UOPYX?)mhI7Ern%V99Htp8QP)ox zcOhUd^vw}?*^mjG&BV6^KiVq)YlV4CppiFkA@Nk)63+@a4Aw)k?${P)u^5-@+d=}y z(eeGZCBSd8wFK|G^Fok%mf_pB1@(gKQep+4SZ=KnW8CVcST?}PtpQuQpZ=Ko8`h8F zhAagvL#qy2g8GjW86KHFP7>MmgK@<&-R-SfM0l8q@YQKCFW!fea%Kf<7#`^uOfR*8x97{vMei>ddR&tyiZ+-4;nB^#$TVgrfoitEor+>Y%i10_ki z?df3BWY40d>U;_#uRN_mDcG=|+a7o^30)LdnzoZta)%Wro-~NmTA6FgVxlM7-L&lg-J4odE|qw~{DNX4M9)$17_CMn<7l zk@om(_9~n2^!TbP?_h^GlPiPb8voGAqhH#U7ag>`J}}nrJ|7CO7&y$Rq>I>pFW(td zN%J}HNWhaAD3Fhler%tWAO9;V$tf|xXuW+J%|qO5VVm_Sow8D7J*4*Azg&Yss!`-a zalS$|T;EPs?|#L}AMtUH8YGSx6b0@(?ogiI#Wb5SL)XbFe3%7xX#-;v2G-bUD^Dcpl(U}CIWt_cBW4>nQ~^!~F4qRIEQwq&>De04 znadVCf7PJuA)Qk$2u{m(2P0jgo?&*jo?+IOBGc>p5t_~)qLY>!VW_QOtm7sjE6NRf z2->%opgVhsvuq#aSN0KcS)Ei>SLy-;>9=*-9xtq?eHg8~mChatQnEb#ta06>HWuy3 zPRXqr{bPtSZ%?3`H=HnI{;w#}>sIKabe7H(4 z-rZ&t3}I<&Rhlvy(wmVelkx`{9h2Rhy{vE3Cvnk;v%j(KW?dj-2tS40iUY(ojRR#I z>o)IYK~ovWvTsZ&+sGX&Q0%U9{~lLddjlNV@1sRNszv71QRfA95N4hkVXDoFDQ5sQ z=mI5?Yqw7`c~KZsdpvRMvysfBplHa`5R{4*HP<0JX3f@pb?C-^aGl46F_2+NA6~!1!o55TMX&(jXk~Rzl*= zs@UaC7CE-rpuAOSFc}W+r#Fv_AhXRv@*bkw?O#HGj^4fBPyaU`kfM23Lx6TH+7O`a zjW^Pxt=j0mXJ(*}tR{E2NQF++S_(yh>WVIG#{t@ez3+tv!XvvaJiXV#@#KDhVc(~i zS$$%RSO|~GwUDiAQ^H*ePVTedjE6{_{fm1@@AqK`4Dtf0QCa3Pl)4I8VpbaE7R%k9<%oGoiWA?A;A$7w3uH1N8H0p}*g5+bJMTYwNPEaP@lpA*)xC~{g~;U=Y5C4vFzV7p z3m@e=4>Fs3l~w+-Pv?q-aM*Z=kQF9o>l5AFY>*SM^ZU97kw^}wJ$WejD?4KS8SBc5 zm^V^RLRt>Nj9fuC=5=Tkpb?hjK zv!f`h*DEXpr)d@en;|{rg^v`_ztLE@-E?4(6UDcgEHV5GDwheXE0qNfc?6*%J~ob_QB4f2;f ziHGQA{;Ab>tI}x`@2(g@)yBEMoV~S-fQDMMaz|^C@=w>o+OoA@j|A@2YQ-mI8G>Spa|-4$ zbJ|4t0b#1)RDgC*`Kn1F+jA<=0>ZER8A|4l0OlzFA6(1Xue9j?u{F$mqx|nAkMGcC z9LX^HE@T3_cKd0%W6x>z>{HEkS>n-`2Fa50V0Arynmo>`2-ig%?XlpJhjg#~D|?9a zDUSM~liXVNjd1__WY=~E?fK!ew13Mvl+n#iI#@(c{tFkWCb->~P)IdhLaqM%Qc$^I z=T=@u%WP&4gQEeBAH(hPm(igem%DeFwPfLLsmS-xXP@`bXYcpYPqXSwS>Asp_&2xz zd_`Hl>H?y<`exJF!MgJu}gqg=Ybh|Zu3Ht>epuem$Kvu8ZxytHMQi4EuBVGqvJito-d+SaS~C{K2u=itdTpC{$yXX{bsBtDAAxu)}I@+iSA zg=G}Rau+!+NY(&|l%rjTMK6h@sE?4$Q`lcL&6)zt78{yivPYX3S09=JWR#W*vN~$J zpiN%a1x8x`1(jfBmLv*MOQIyukZ)>2hJD>cNOZn^lKqCRwzM~)*82I!iQ_n0FI*x# zu5d&E5836F1m;~J-z66yD6cSr$k~jRvtz2IoZw%tM^J3XDi{e{;Bvoy}jEQMTk zk?uKhk?tv8q~UQbZhjpQTCXX`saS z8bQ)S-a~qy(QyU%B1KEufNC(hjEBS_`&T|JI$S2*6y5!cl;E)nw@rbg#`KAykg0?$p&obxAS9HvCGK7F zTK4o6)$hEg6JR{})1*J9&YY;jiO-k3lD1b;P`t^gk{(h5?>YcKE&;doXUwpxsi>!6 zDBG^k$P>rIRnA?8=SzFNL0LsE_(ZY>Wq}DlGVvadQPx|iZOrK6_$rHWNi_KAS#pKm z+uYJ~egCcDyA7KIzvSO9vj1;5(l<+)zBD938B zA~(1is1eCn=B4>2p*ie%}gj;75pEWV(C}<#Lrf@P)*z zFUK%4I+nQUPgG(6Uuj{;xy@dOa576w*zbEBohf+-xE!B(whj%8} zA}Z=RY$R6n&!=w%GUegkkM6BpzDs{sijS$+JyWE!igw=$DsQ-$ZfL~FQSQyH$_mDL z5c(qb@fO*|IxM@$OJ#?LafHE@w-F9?F`R#xququo-EF~@Lg?@VdHA+A*mLd@TzF-P z#7aiRqunOnnEN-*Bu2Ssx4&*RV+R?yxgMkBKHhCsi;H(iBhqW1e!_PaYS=OK|H?a5 z)HUY`O!WDbwS;ptaR zZ7M8Mv{og$5HEI+?_W9ed0w`83m?yultmJDB!Xr}$nFY~f)aA@+ zt%PS-2{)W&{cE_$K-qo^uKMW_v+8OQHi`pKY6BaXHgkqM#y(qz#Va3S3^Lsx=$mkY zY0_x-vK^K(xa7Mlj{=#FadU=OB#RXIngnJ6gRDd-`N-cyC2q-@93s$-;l1oK)SP)K{B|T*X8t! zFUcUeLBm4ZDVJ*vrcM2UnW>vXFN@zS@=blTEKXosW!>9Z4kW=ZDj>mU+mU>qbgnD9 zQP-|9ywS>qAL7{KfEy0jK>VZ)H9{*MLH?)xg`!h;&X@EB|Ni?_w!0?aao?Bs$ZCza^o>(ptO2aRJVyXQ$@R``CJ5q#i@D!bFtE_o>I zvVXB!%Sk&w_uxsuT|m8{_UswM*tnnj{Dg_Tv+X|&Ui@i}aT_#bb;A2JU|)d$o2UGj zRe0hlM;DZI>l-pH)LAx}dSx@Tav`Je6l;%)DMsC^fU`Yx5S0zKnOiW0@qhO=aQ{?! z{z~lo&NDGk1}07u=_v>YpT08BRBg7etlT)m)k&M5IBr8XtAm?gf*P(D&2h--LlZd1LF z`w)RYqO25~6={sS&?XyOm?=|#mj+_wgwYuzF0=)>>cBH|w@Pwa0o-UPw=w=dEBzWp zNZhvclO9rcd~~cVd#}J#xreQ+`=9U0xk&s@bXuu;aUZzO$+(pqpyZz^W*d81=6F9F~SfCU$Kc z!{C9cgTZNrelo<^Si~>~ub3=NdT{Y%5!sQ$rJE{tyw!@GZBwz?LLV;Dd{-1w)F+m? zc7w8qWYPXbI*c4wfFge_@>I8lR3Rm}moFeMiJYz*P^>?3jPL@cw)sWCDt7*b zEelIs5{Schb`K!O;aq759+zknvDn zsHikoyR!M9SkXnE+(UAS{mTj*NA!C;gP;H4F({6Jm_YaFa2`&T9?&~J(#GM;ONu$z zE^_jFqZ5-wzupWkBNS5{BfHe6zD%kA6XRh)7e|?HSr>~yyenV;9O%-`j|*M&&ebm2 z)g03r6JKxfQUdKFwnOFisQGg~q~syJ(dhCXa+~a5X>%pkeG+t!E!Gwb$!)U`ykLCo zS$uc|UzhShiaoczNX;-+zv}JQEQO)5Z`V8@_UpI<{R_7 zrPn*vtx7j_>q^S4?f@tf5jZW`btMh#a9&f)hqJk$(n9{r^Pf%mKLi& zn$oJVqfm|*58Ty5Sah$?{Fp)Rgol#`B@g-2_Ah?c!#TixH`0BkFs|km1z1epZsjXd zODPccb>5SDNC>20-1UkgUl3i%f5Nz*>Hi8o!_Ymc-p)5!%(6h0xUafBR+Pd83yEY6 z5*I53A5`PnB?!{`M1?L{$e>pD+a-dtXn(o`(7z4SM`xV@sSmz z)Z)w2Y7i+HBn1eJgXX=ispp#l(XG8IkY3cf(?f@nWiKgaEf#Iwr&9Fyko7Ebbx{Ro zURcTn57|!p7ws~L3A9vg6?v`5lRhNpLwFat7Y2V;A-R_pr`TOUScNO?#LxB|^-_B+yD@lJQ2dfsUTD!-!@KdbMO1rfn|Hxul3>Qh#qDEngz z@gDZ3{pK#b)9wu0H?%}`@0kE>Pw1nE@1%|!g$(&Zk@JehFnwYWe`=8OP!@<`EG(1# z@-pO^XGRchQ^@yR1S`{D*UQ`$b<5xDM0f3bnd>B!-w1bBp_dddrwEMJc1sbDltgjQ z6cT^#Lj;;s<+2hus08r9Oqyn7vC~7BLADn#)#4pe z&b}GphGQB%iOW4M{sH0pzy}@kx#9-|2fgEAKD5|pxJ@6uY1~BD{xQHOkJ-s_MQETR z>YA5j_i}*!_kvGIN&nA3*k4a&9m5BjuFmlG#owjw8O;vv^e481I?%oIsj^RQ?n5wZ z?_>DoUw_pEUwZ?eyz_=V^P@NHnV-F3&phuf()pry?3tI9nX0SbYln1)P!^cJM%DMlVwc-G;N@P6 zs%rsLC;fxxMA%6qjw_YuXNz8lWE5SubLM=iTz(pdR`HrO)NBj<<2THn?NZdtKX6Fx zcRQA_96@MQ)_znxv1+0*`aPs->|Z=;koRz9fu)Q&ylvLpXXPzNQV4kN@%H~} zgLdKPz}0-R`(XJ}vWqcclGh9=3_{VR9 zCO9K?#p*?M_=77~hcn%lnsD0h?()3QyK&Krh2?qSKcg&&hT8DTJldUJ9{%d;R)(~_ zE3XQDWhUYQb%-yf zGTaY)6$v#&-JIE>hM9X43sI5qW7(__kB0hmX>K_9I_o&vc;l*Ya3F7+73%0Cx;dnU ztrfrHh7sGJ(e4ecQ&F!VA~WQ$df?%VSs`}=D~fkjad1>omoaYHdQ}mJN=UhbDKd~3 zTKCu_T0T3(Pw;YzsFyY{!`4vHQj(qhpIb*0^4e@Q9kxyA*+0%E$%4{i)W$4HG(rEN zN%514MtnB?SQCXfvdoAJ0d^hus4-mo z4<*jd4N)jh86hp?M zEqVZjnrE-R=k%R|tW*L+bVh;Ix{FkYrtL=$wFIKbDhox4=hjq*qgfzZRr;bn6S~?U z@1Z2n+H= zyB%7qiJe+&go$-VD9sKpui>|^hTg%!t!-S~u63lG_ay%A*sGe*cCK7*t2n*;WmezD#NQ;+%rZ3Z?@# zSVZGqJe`POF^}0}nwmj%4#xlJbk`6kBVxLBqd|0&Ma4c`?&+{UjE0zLyY-7j>BEpP zqLe4EBBnPRIfDq*>ZNEXR)H?)y245dgCt>4^pMzM|KeLM-sFECg*JCI<7@u>@W+21 zMazz64T#MrdO{?0sHglg1tCDyKR+DY0DQYWVQS;seJzob+mybxAhQ=RAvP>vpuSuX z@_gt*MoMuZvuEET=F!8&A#cINsLtyZOqA_nI2?j6;KQl~q*G|ILL^$1++Rk!n+rnt zQu~4sW_K?Z!b!SgjBs~-S;*APFAG^`T9<{`3x8M^G9O|v5G2G_BDhP-)F?`cAyrU< z|HKL1!jK`pa&d@$@4(^^Qg|LSuv=G~Xn5y(VMk1M~mI(EHu_)x=t7nliDK84)$BCtC zon0itHPWTD^rfXC4EfR05E1v;(vYFwyOcC?N&^o0%%I>Q*=GMr9@6dhFDpP^M2ER& zaX6jW$MjGTxIe>F7SS42Zp9KtLE94AvrM~iA&6p*aBG)_ zm{K03oa5bDl`#3j63KXob}A9L%|6=Ioe{Ij=@X;GL)k;7%Ra_m8aaL0LYJ^ZRO1)? zM=XGq#&Km5?KV2>AePc|3-u|kPg0T@ls)8L*}r(nAnBpxA=_gg^Bxkt{L?tTqZB)p zVo{&ydk>jD`31v- zxiGbNxfY*>r+;r$jL*=L!{q6#ysRblsu$ASXjwJ^rQXD zd591Ae;x`R${sSGEG+WbAnPF(Ij!7t0t6k7#`UOFfkx5=n~!VYy;Kj+t6Cxwvy3=0 zN5tO`3MgWHh_44%g#PT?U0cC2pkqQj8>~T+`R1Vxoef+jQ9XHuQE*&MVyV$e*%h?X zOSO7rt}+-xvgjRGgeJH0r^+Q(5*k-1Fi%8(f=#Yn8Da~xYb89fdu2#}M^}XuXz8jD zmb!WsQ3|4EPDBlI^A&Rle&x@vq61|3Q8rZwX0bAqugyU*lW*hP4Xrxy z1s0!6A}bjuvy?$5W+|6FWS04SJj9pVzk+~ctO@Snsu1?~bXADZ{$f>#VycG%qq1Es zZnk-Kh#a6vJd`~|H`>RXz}gxO!RpYQ!jc+B>Q>cF3dLIW#cIauoH&el=~^VW5pLBQvG+r3 z7%1+sgd$sF+A6>wv3LbDH4x8mVml`mAz(TV}Ep&wIA}QBz!}gek#69FH|BlM`)=z8NL-T!I3X?J{MI2rE- z;Z(PDGds@{o7t>XPy8Lb;|2nce5Go-^UJVy4zeI zR(z3U>e-9FNwJAteK7pLF!lTIzf7CL=@X|LY&{Nze|J}ou-!R%Jp9ddp9z0=ht7t7 za~GPJE@wW$oFZ$f)7H)C8ydHvYCf`y0dapf;>GC(>i_CE0@#73k?wyrk7uJ8r^`1{ z_P1LpXYV#D(00m1>+Z7@u5g87EVwTA={oMhWYN;d_~7eS_}C+=`{)rHYK~&n|BuvU zY+xHV*~V2*3cT7H`it-P(xLZ${%RA2Ke&xOm8`X_32j4&y$=eXL!tL_Qn~OydIUw@ z`H*(^YMNP_ZFif0J(%5>Tb8{q|F>{pMV_?O6GDJm)EOzq7Hyg_<#gT3(s_+CHrsV`}zUF4gd+%;r zf_eI^juE>x#l%|HNcf6lp*at0NJO{q(agRMDAt}?DY(1dX7wrY?}9K!^UZ--xN#9Z0RW*4mzMkqW#!dXlU1MO-H zgLh3U#kkih9Zi98V*LH#4ReP3IgkVYUR-}yj#gwoixKOWQ6LG zO}1Z{Www)!t_I6*cipy7J6VNrfBzY&lr8!YZslkcU)~ma_b2Y`EuxKKCOq55IGD&a z0@N#dTc&fH+M><3MYr-E;tzAiz|xm(4{;ANojJinrwrQ*YS7p#BTkgQA$BLXhqyPM zh~Ey~PREXd%YJ9clB>kzgM^*m9?sxSvE8F+-A*!*9!ny-&u^ zKph*t-4U`!oQxwlX2ZY^npjUhYD(dZ3%OzUPD)pJZMB2R>IGo=wBN8(Ow8_@%aU@N zsA6xe4zYK>DrJN6dyD#;ySg)^k$vG&h%Kh@L#DXm&d@G^dFu>#$0+yoIU#aBGO#oJ zR|Yf|47|t=Bl(lYn>)YDxYfrbECw$ZcDqh4s^8SAM65C+7#GXxLus5x%CpJ6hVXA3 z$#K&Fi>^BwykbAp4(|GJ7h*ekHs4hr^jlGXbZ>TrgXUN7;rKGYiYCK~`4vxMQ53u4 zF=#J4W8zdEui};n4f7_c_LQ~7w@hv{UM3HPe&u+1C^U}cs*i^=uvC~iQ!@-5h(-$g ztmIi$5dRqC*)5;DPr>pZtzZ+m`i}~M2?OKT!1wjwIxd17My0iUq93J=wURNpexJnc z<%#YL6zDadi^4w~HeSz5-QzR6lR_u1pAwz!;lUK_$+)_;-j?MLtceyOAn2}ZkS_CpAw7g zQzb#sqV(9q=ttaS%+nwyck*cJDEIy}5z>l4K^Ge&1=K18Unpj|++o&YJ#&%#Ib;{0kXyf@H9jTF-?r~B$dbFZr#{@#_&_I6JoT*mN6+5TcXd*ns z>+N4k0MDN2R_%wI|g$@K|z2i5MlwYve45sgue8W zl0GV}+<7BRUonU_d$?v0yWzub8We8%e|LS@LqPr$jy590-D(U`zg;>c_37ad#t=(~ z>~_|qr4!u5;>Gr+sS$41tST1TEs2sqAq9mzS4gbOLgFti1ok&k_USZ)ZfYz&$XUSD ziXmfb7v!mK(ftXo;@%z%ZFo%k!w+%A!OUZR8qO=92w!HPnRPyAk@;#_%PHe{o}vtK zE6o5Hhkbo0A!9uH(KM{`J8vVe*GJDDqQ@lTRmqQP=V>if|B0K88iC4i&E@~dP{mKV zLMeWld}UQkmJD*e2B|j&MGu9y{F6l}%OK|Uoc10L+03EpKaNt3RrZdSfW!w;VT8Qr zaQJt5W|v&!M6dXJ^zP0@ZPZeisLN$-?bhER%gj70<|G6K9B{GM z(fb15a2Gb7*qt6jQ}c_q(^DtOnucsf>7K@uyD-kb@iq`j+apgH9GEb>Ye%gddZT9Y zl;2sf&2GQ?Sg6xw4Ay4Al(eB`1T8woSpZeLC?UdgG!0oZ`Tuk@{I(!JRJ^#$A3@_W z3Z95sYv&di6c$=FU_<+kNx%B;n5NvB6CsUwQB9j(Y;+j`+YK|gHs3N&j{V2cspX!1 z-zg2x(h{HeQiI%DgV;KQ=z4&4LN8ye(NILHzNVpA*kIvBfx=n54%<-0zFgrY3m8gI zq3d*g$E8L4G9kY%i8ctBKcn5-OH5lg>nd%;tF72%o**}7P_I&pZ?tSoQfI9B(E_7v zJRz;3-wQIOwNGh{_huO|$WTm3%|IS<)wN)cfMDoZP z9V|7U)0lmKj-J6>oDOB=DgkO~jtF^ASuuy@ z3DB`F3&|IAXpEjFxIS$u${9;Kb;cm=A>*NN&OR1Bq?$ZQ1upVW9`2aV#&u|NU1qO4 z!`_-#yQD5+cEiPPkV{t7jJ(Sh36FDwQX>M;nULKa<{MbruzP3ZbaoIUb;V*tn=J-{ z&!;mXdr=G#?$S77M$^2hfgJO1IqSEpTwT%IL2=1>*{ha7?wUa=r*ww;T{v~WcQ&kW zMs_MJnyHJZ?b^i?V>c{9(nI2=;-TgEbk-}p-Hyv>eX8830f?+()21#v;Ly~VFP$h2S2^%$Skeofm;UA+m;y|&~={Uq;s5Gc@d&= z?Ku&ZcN--4800);_S(OqfS2mVx`XGX6Mu3(BzDJnDWFT|rEYpBtK zuiW576v=q;BhExo|JO>ENY`7M`TZUa7~~rLKLKtJFmrASY54<9IuSh5q|?ewlg<>{ znxyaUYf?f7El#!qhkXhaNGl;6FUiqhOH=sIRpa=LjJfRsF%w6PHg(*f>>+Z>qEzO8 zWfJlR!UejL1%I>-f!fsd1raiYPK%ztx_BXkIX%1(BFVqFAe)b;Ffn|@Wa$uIpy88y zs%#62LBul#vVw&VG3AcCcq!Ct zDlo;-y6JYE_8-g=&B$YGCkvjyL&-zo zvC(1RHOd{o>U4pByaR_=#Nu>`kExybKR=u&}@1q!R7W^`P*8tN(r z+ecKG*D$_g#n2_NS;{O?qg=R0Qoc%AK3`>SY`Vtx%STA<)HD({YK1n*UF#s?QY zL{}PdMxZHnO2o~g%dWDJ$ZCVa8Y5u;ehmqrUj&i$l{kG$JEJ1S^of#r$apAty2{Bd z16$YskK`&xP2YS**1uq>Y_L?K8+~G%3?iEi;t7MYhwM)NVE~Tp<#kzKT)B>&mwR`e zBEHfDELix^-+y;Iud_{a9goA`ewfDj8hUU1Mt3o}bY&7>ygW#8ok>u6oS5Jdu3wC@ ztQ2U|{mN*Fv>kR^v*S9(Hmn&X9hqblNUa+U;s*^<0+wNODed>6gAcO6An<{C16xBB z0i*Qd?!jAXydxH|$6U&cc$XaDj7-6^<_QkMNtDG4${QY1?x?a`C365xH*=7qF$rtC)74b|{2KVzgVpStO~N@avwI zh+p|rGI!iFAa}3ubTwXJb$u+{Q%OkBJe4Tx*`V=i50TdvQ!uOelVuGX4Y=;kZ*ZIoH z`8`^{PFe~EYM$Q<@2QZTBC0HnXl_|62l9wp49U3)k8}~vwxIEXO7WtTk#0Bop*eh#R#O}+YZTEe~`2PDc?7DoPX>spkOj%P22U{Z1(L8zLzAka7i18eR63(T#L%_bE`9 z=n@$VNqQ)I$eyu}sk0(ysvdkG74fqNMCyD%4%H7s3==j#q@4R6N)d4NA?9!WHiv# z!udOg#YmU2R*n#O#ahphd~79YJ4GXilb}|#SW=lFg>n_Hpdu>;x-*hhLa+vRyj6pKp*_Xi!+>|1CDi#0(;<3~~aU{3(%fZsTL+!`k$~suDMv@^+))tjSl2 z^`-f-6o>vXSm;N%TSnht^reFa@xunidluX7x=(bUAESpFt^4<%Q3Q+aO>oPei0#4M z#n__HEmo#%v9LhZx_UrTM*h8plszQ-MesdGJ}pmB0J=UBsdCY$P@j6rD%>VplKcmY z68~tBiCk2(C+8ZZJfxS{zpMZq?{Cxo{+mBk9*+ia|5KDSlmBL-5RPpm8z+|K4@H6aMbA^lbXf$E^+u5Jkn@nKwU5c&BFFvQ-e-_EKa&ku zA0h=WOSaKiD9@k4ola?~Ebp}#@qGr-Iz{AOV9PU@XWKIxp-WVelm%x!ls&}u`;P|< zQs)%)FHH60Z3sAL+hmy7*+xFSZ8CFS*G^Hkv}+%Bu|32%Bi9aVxvMjv*m*^TWnXI} z!$)eJOp_&=xL}aHWRR)A)e8A1kuOpT@ta1Fz3u7R{67!Lb|c6Bw;h?QQRKN7Mv(VV z@KE%S>$I>`m&L+Xv7IWsP^_#z(H1Wi@+ZsypG&V;FVXJMbD2s%d@eiM7tbXu_Q+TO z`#(Opr z-*-@GJmnW5UL>to-ZH6d!(rs`NO~wNRYZp0BSn1HLFs!Hrw}vZ@-l7Ai1U&G(kbMk<~^UU29O@peQ7E;{|oUX9SxpB)8c@ zc!5MAeG18Jw~)wAh5Q-Lv8z)fp{`Tc2o84An#VgS(w$B+EOip=a2L6LRzqcXS=6G3 zLekRaA=gd_u606Ct~G+}ZVMUdo+y5YLh^eoB(+x|G;U27ZM3+HJXUr=v)+>5XEez= zgIv8qI%SaekU3!gqQ?PA0%yA@>LpujPgqF&q$jVyDWgNcoWL^b?e6qsAG(X>TJhs& zES%R9Uedz}eJbk{4EU@;)$`*;SuCW{YXuL*uQ_$2o zD`EViiZ(=c+5fXlQ2=*y&dZ_v7`NvY(Tbv{=9etm7+H8NePxR`zsI@NqRA?dk#fZ# z@1fZ2V~pnf>=hOSW88YJRPn3&{3piFbIsgtW-eDtn7W*Jmt-xwwS>Ob)oOE*j$ekB z8S+{4yM_R_Sl{Do`OZY~kX&c~N**%n?O$|*L1ZJKE!RbI7~yJqq$FDmk6_o?V?672 ziKHJY)ud=)T^41?#4$P=FPB(&`8CdcwgPQ3lFVj7IzrLc8c(OTHqPQ!A}w7BU~@!yaLc8oA5|4k@CBYI+rxa)*2*s8^rej zOpDQOORr{ovR5^#hvSWKhZH%v*XSbq4DueLbruUIc$Zi>Uhg%Paj(kRrC8CFk!SWB z6g{L4C>G1;=U!OvnLZdQJEF~f(zfpGlSRe8K9!-dPi7*=`c!m9f$20DBt4WpWEz#6 z9z-u#63_c&Uf$iu^nOD+ZmR}KSwxJhg9fofio!6cc@4qh*9?P|qAKV+bvG~!vS!62$RhI>R{1-cO>aq`a=Ez+hkw1N`C&zs+UUkx zrr^HVa5>$Y^^P@ipiDnpnngwj=MKm5NcC`@GL8-(=LY5vAMe&K8qRx%ONVpOi|bbJ z=!b`8+Sj+*chlV2cj8wVEFu@Y<79nhzc)ahJk4L2l_wxH^)D8Z0;0XU{tk2G_V>&~ zZ(;oOomm*)T{gUuC?i2Vf(&!RI_5{Wp!~%sa84gafxo$J`joqExkv99!~_U^ZvT5` z!mSS>31mOgVAnpBzxB-v==XX=L=;`c0Dt?x-Re%JDmbsaA; zzNbhW!??qr)RGDU@}6SQG{^?qcshA;f5`J`n0`=GyFWZYq~blJme*akuRk<91z&5o z_ai1lf1UON&*dTPzwEErK7NP{pW$}T9$vY|b8yaZ78cCeX3rar>UbL6Uo%P=&n~fh zKqu;$&@oWoD66uf5VO-D(rXYG=#4pE=9RmD4G0{he8OBr?lA2(*8~>QyqY5G+V z`^Dr^oOMOz%+3LL+)1u1PJa%6#OSHwH4Oi*JYO|`xWj$av(NtE(5|CAjt;MQVy!~I z>UJ$58#9gbR$_W}b6#Y)F6N_7titZVl{In-bCuIjb7OZfGW>7uL1egjLAE|09A|6< zABy7))|Z{PyTwp3H=jH#!>ihAqu4wvwl1{kLifwa@X2n`YywL2ty<{?3jeM$XZFn+ z&Mn^A!_7!hH`W%wbuK1fy9|7GR)v)HvRbLe7b&^Fa0c{=q<9c( z_Hb_c&K{0HuyPKpck3Kj@AEmZ-dS^p)84!04yQNk=BlKNtw4DJN(j6vjz(v=jroi{ zAIn2w4n)Ou7CPl;rl=0yx#~5-U7bDLc#3@(gLZCKHKdvKmR@R$#eo0KhS%39k@Qyk zr0aQ~XAhUsc)dR7^_h;|W)RtKkgPXI><6?NteeAPaYN*(1OAgPDO{f8+hGhV$UOxX z6bLjJq#6z44=u(R*Effv^oy>fPn4)dA)GWUpF14iE;Ncus7;cs7F_gDF4(`+6NA!I z#rZRQsf|czH|Gv#mFSy099giRWsYT(b&eZ^)nvA@nk3JvSt4x~J6<%1br=*o4f0(E znOV&$RLMhX4*zs4R;Ok2pi(=ogksf3mG%&+F)9ofs_Etj)%5TaQKj@9VP&2{Bq}P* zSYtH|v@+Nr>OHKf>BL%zpqRDt=HRNO*LcD@|@Oz{_3_=3hx>?U)| zQYqgtDCP~)4=v3R2yn0F!xfNJ#OKogFJEu=-E^|;dB%dwJh!UXs)z2R z8w1b%-Y@+Jut<^|`jU`0A@4b-p2RF>G0R}EJYd9R1hzq7V}zN+EM_r_Sq#R)Ok(cO zcZY18r%v_LSNg?{Ibz3-9Xod1v(Wh5GvxR$Bi)t-A=cB}0y^-@0%Wxp3+Suu3q#~~ zW?@MBn1!^&7nmOX+$oBl1$;QZfV84f5@Aew$ayFTB&FP2z~Ffzx^jhXzJ-i%pOi<7 zN>lQm#O-j+$abZEVMxmjk2#HU_e4<^1x>ob;*NHEDU{1tO;%b+&O^~dYPEeVt?>{y zh_CffXOL+$$P2U=S-6N4mrFV+Y_X8yHihVgj5CWu@W4xpm@zjN(L(1IhuFR)mV{u^ ztxM?ccS}O3uU9M$!H(80C5gy(OCl~%;>AT!^(pa`56SwF!H#vy7k}+j*D5B@s>G7N ziSKgkg2qV;V&2E&3*|cG!;p>d+hW;jnWlGGrlZ`=#bnyAkX*__5<3kt71-tJs@PvH zUlQ_G<0Q;(zgA*Jrp>5hyA8@7l6&l5YHuYjS{K52s7{U9ujwrfNjo>W#qcsDDL@hu4fsYd|aQB`b4)q@Nqq4 zdX0|l=MxIMylIsCZ_{0B1%k+v704^@#LCblw{}(N7k7G1h|^ho+)w>MSJ!o6sdr6i zf_t?l^rOqiLzCU{+R(4=SzYLNZcc=La2pyB`L{KNrnp(jkZ!^LKFJ)wU`1|cwAjyh z2h?1ep&zzx3;k6F$zNr7F1s-#o~1)SxkQHcUbhnYW>YQ4%ZVlgs=ZBYhR!z;^=cE1 zymTX*`qw+)V@LLl;=NmJ4*kgvDvNt7LM9tFt`3=*0uISIB1YuenPi7LWt!WyjRx{< z@vZJ-xh*S0Jo}9y)Fe)(I1ZP1$9V`+;h~iwf5o+Lt;P{s1nhP(N=?!NN47AQ{Km42 zhQl#a@8N-jnVY_?c@KMKXyU(3z-hkwyqgHTTKkeOKkEh!Uf{=YN>kU&cUl4q4z3DT zxfQEI7*ki89^Nvuon*_F9=jx$S`{({nmgY>bD!%VvfnwKTBTCRu!yIds^C7`55S@2 zrr&*86~ds0eXR8-ySveh&i;nbP~)%BvTe%mB{{wOv~sl{0Xjuow^{}0v!N8}*BJVj zsodMQnJ(i_>tyYX@uS!nsubM4PyZ?T>T#&(&h4$R7Hr8w)2DKsL^tYw``MnmMh}YX zmTpF(Z!nm{2zTQE!|_OlQfWNmCxD8ms|F2TNEZ(+`yfCuFv=ZOv0TeqN*sS>!+pxv z9ZLLkQ~O@UBdL2(7h*qxnP4+nl|EQebT#>Te2AXp`C-&3DF5Q{ zuU9*n@vo^VEAZx8mY05ZX`Xa4H6*Eq(+~6nj8?AN}Cxy54RxTP0^9;G_09^o#f_f&RAXj z9&Y3)mZ7EO3ajI4!{k5A45WH2+meRe6f-@8;sY}cG9JpaR40sw_tu4&S?@D%(hFimAs7hC#?kAPpY)dCOR|$MG!OdImca`pQBYVu!_7GM0z~CCD zJBO>+hq&7EMJ&P_-DoQ=lfw>T=^T7C!ba~-l1t{&6y1$jEB}JKQ8e=>Fz7N=mJYGwa_5C#2~ZOAQv+z zEC*Pj-SYa7EXJ$YuCC}N9UGW~(;icJli?}11+WE1B&rV$d9Q(oNqfk%yuuQkW(@dk zeQ1g?7g?_{P!yL_WL=s)v6W2Vx^7(}G~q`XAu#c$P5)*3AKrnO){m#EkhP!gx(oy} zIQ^v8F7`rVfc^QjX?W}!8YoD9l~phrxAL(6NiY*$B?w8Zvyh~RRGs}x)ccPWXz>4< z0g74ia{o`uiEMfjzCL{d>b8}m7;HWcZ<8Y!HiWP*<&<$N*~XHVX5K?&v;8Y?u^a~W z^rLB+`o@s2V3pn%nW?CS?V{oV<7}g3;p>gs_1$28jjIR(q}S=8>DLuvTF_U0`9EBirnX9r6ZeJL@Jhna3z+? z&006cx%Hb#t?VO4*IC4Y)rI-oB`TWtkf@Rhrv3hbYMi?(D&&L5qRM-!qES^$62{0k z##S<^V<8X-+vU3BsL9%So z6G#ANA2`;1V1echxgA<-3kl1q&|pw*v<$0V-B#9^Cben4*%JuRyQS&y*tuXjsf1U6< z7FgrZW4=riqpTRrpUob&c-X0Ah9LrFm544-R?CgZ{auJ>npKhQekvl6vo~us(IwZ) zZbCATdjIP}q?@=8cMeXx_1kUYdFh(9dYpT_J;bR$vP{LqZ!8k`-Rmhq;V*bFFN0YJke6l~QnztlGs}L)GJu zTyCiaQX;1X+6|i?I*uh+Vvjh6%Crc1@)DD6HBdHJymQyJb zxBxAifE2mBN>Roo65mg$ZL@PMZoxxYVE!*t5Ij`kv3W+2o^Oy5h?7QklI%RCkX~RR ziA5HI3Gz;I={6zHf1)KZgxNXJyW`vu1xA)ww33J9Qj1;f@``<11jXe>5Lsam^-x|T zI&5t>>|!FFX@|pR_Rt9r_tN~)PU3FrqJBsAQ~VvsVr)-N?9yy|x{LDm@1n^TwS_28 zOB=N9ZO|TTgSM!33d5aUe7(6#)s9=Xv08(yhs;{#4&CQn#Hnvn?dyynCs0quN!@K% zNPNA86g;Fi*uShmbeT3veNA+kdi#VWyoz*3pK=K!PBs{%1zMwDDb5EGM4K!mA>aUd zB=3cX;Dc+#u#(Ld7HhGv%7oROG!&@qLxdA!B7Ejfi=xFhiT*F_pv$x>FDG=6*`5wb z&MS6Pu(P|ROntmN#8rcmm|uCb<&)ZC`5>_%o2=_V=T|+JVb|CJNl{@`XS+eV)gUX- z7(3KK@0}1`c87)J1;{qPpmA{bIyj#ByZh8Lz+(LN2WKhV$JjkoawS7Hduvsuc*+t= z?leg4^3Z0GZwJ^^REybUcZdF{Y@ATqzO}f!EgTV%I=Z|1l-p}DOZyCRod${h9=ZWH z{Hs!klfR}tD3;pO>;|;a9<4p-YL#D-3jUF}oxTSK#ngPYht%^uO5r>HK4b`UVv*Ky z#)GtmXV=~klF^C1A$slhUNzAnpX+gh*hxk8G7s|ofD!`lTIi+8A5QHxE0Xhj4k)wJ z7BPRuBKpT6Dbr|PA5Vt{1Xh(9ws!X*5z=RUPUj7Z9^x15U*xh<`Nps6Xd1@4*1c4W z5!kWUra8Y^>-PFpnF5Yx<#H`5N9l^CP|6#`t{UV$#7g!r<01Xh{zcvZtex0K?~@X> zZJ$)w2lt7gW%rR{Tm&o|aTs zCwh=^?(PdwX7nbDw4WQOC(HGFa@SqN8J(n-TV@d>D;1IBshyqLVVvw_SfB4i)Ns!_ zLkxkJov?)Wotij_E|MGN_IJXE4l9X-;=;N;htlzJ~)LFd3 z21S6&-R~mgsS?iB`;de}I7gYapYko(5BFTAh?xcpjx`#@J*1i{#Hsz_B>Ty*Tg2IB zPqon?vq@B#rQYAK)#@{}W8Iu?6|A9KrxHo^0M?Ys?5*OblNK?y*`U0|AhFdT?ID`8 zf5me??1Di-Ks$_a7rHf&IuFne#}81fCkH~PbC+jyW>l+TlDH_+VFSE#bQL1Y`|csU z)6K9s<;e)96;b_3M&u9MP=%&1S+-dZk;}diR}FI44N5l*BDVoC_)8ST-BaY~9Se!y zGl)K}5WEq=ClSQ;iIP4uh&?wbdWiJdzoY>D1lnS`)4`0AG0>d}4LB03ZDPxvEEy5o zQM)Pcy=p*-=|v`_3l2Zpz0ooB&2_Pb)Ck@nA@I5-#bD#POFRmWBNR=&Ib&gN%g72Wj_NJ5=~o4Hb@D5F|YmX4t>-OoQkwK!f1* zK?cD`rJR`U$>&%I{#kn%kn5FRbgqRI<{1oTJtPkp0jCtPLm~I&*eDmUi+9<>A)bhPbvWd`Yq728 z(OvW~fB*ISsVIY`&2sHWIEv^zf?{ksH{+#6$4Q}Ye;uD4KZeek$0CoR6kM3)B;#y0 zG&33(@))l92h#~B3vq@hKXV^eYBYy9YCOQs}1IfOFg)Df=$dX09u!fD5imfwKT zD46NvBgD<;EmHcbMUu79mm?u$gLh>0%>>k?+)~6}i|r`v(Ff|4J6h4T+DmMHuQQ64 zxpI`Fpj$^PI@h6r4B$1YXhZ( zDGt)=EkzwZ4XXi89I8-m9L$Eqj?96b+pLw1QaRC77(THywajKvUhfV$U>!8(b+x5pogYUvePr_bOca1!9-yr|M zpx`0((EcT!7^DT#r!kaJ{L8b`)8n3}j^S{tUztar8fpHSLGrmlw%;N$1y`I1x!Ac; zE<6d}7@B~aPtn<*P9aG0nmkje?F@%d&(AWW4&;#3=AGmC1}Ayr2j5|-X87kWgud6S zqHgA8TA}kw=#SriFb8L|@=VzHRSx~;Ut^*rPcoctounsjoMNI~JI$2JpJC`-KFgH4 zm?NnT=a_37DbXjo<05(S@bsyCjhjMvH=IwW|CX=pt)~!Q8Yb`BV$$mUa+U+e)SFX-ll8(W zo2+kc4n$ziD;^y0r9ttPLGrahNx)5QoDui~fqyJ3BOcE*?hsWSuCsxor#TzIgP|^N zhW^F{sbAQ~kJ9@r=OE$u;P3Le;_jagO~X~By>&SfcVBM7B?^>zW4VoYA5L@nISmEI zl?$YcUc%L$2~GPeQE_W^mQz6LMZ-TjOOpKJ9TS52F~*%dtBSo-Ivj+#3uoxuh39Ev zRN_;{%Y~vnPT77%F?qt_Ovpbb#90)Ng8cpqs&h)qhK168gYa{fA#m(6tHP7ZNJ-hN z9H_IrZad4O*mjm>?&vv|xo78C<}RK$!Quk>Cl*~){v+Mtvjki{OZ0-u62kh`iMP@k{L*}<6}luqaPJO*yIB^R>CO2!~B z@63@)SxLazRvIK%S%Nw~aMzg*LuLVs;c+Fd=9KfY$T?1y@oefhJKja#SlGwx^Q0P$ zE1lsLUyBTPuh4eOE`|QeskwV`jg*j$I9+1&9yk}$TlBc%#UA1+(epk!uWzftZk?l9 zADmON%~r~chq6Eo_elgt&(q|mm3eBTQ56M%`OVApGVJB%1{ z)OfMNHY%SGRG(jzF23^G;=pH|(_gHtd6iEb7<{})=8?3O()`+0Gg1l{Lvo)n5^rj5 zmgZh|pOr4wWsvqz@DSZ^A5$KR2b9#m`0WyxOVLONdTxMzCYxa?b>KgruVuweSu6M|+>QnN1kV{=8c3pyiu6tPH>5;A)iHdzpbXg@eLz zOw!C{ugCPqt;SMeJ!pNdg%AR`j;&_TD>hv2h!Pn_=`JyoYuvrdgq4q4SUhWxcp{R& zaMrlu3iEsI73uUh=Cw)LmS=Rd))iG z;7BHI{QirXTHov(R%*rCSuL{TUa|Cza9FXOX@?Vh|x$S z=L%@=UB18`!Og$Ja`!(~T*q{0@A^?DUDBXfGKNuh|1QQuSMM>XB)6P@7(x`%a&w-g zy7m0mt;OR!t8OXJD!lqCi|wV`EWM{6BO4ugiEOn06D8@GhvshkvMTqDnO*zE1lb24 zGO7(?3CG)%W%Vu1U8FMICk_qB0=mm`_#y3>ueU}r7}#hmy=Ah?i^pHX6D?}CZ&>M1 z-eTXx_4uW?L%-O zpM-;bwx=5uA-dHf6t-DmesSCHgwQ*3vkEICIBE8NXzEY=qohRciGgqtfJ@iktR(WV4hIJ_LRAe7?dyh`=0}GLvoKIl;2wV(RV(#56TA7&OKu0O?QtOaX2k!hP@>v zPGA)!_R-2R2Cd?%`xvq?A0LFqK{G?+qqOESNqncr4G-Rzw(IPD#%b*Xcy5Cy z!64RP^epk49!LS&A(D8bg%z6&vdu<<5Ox9*&MZZe*r<=g>754;ut#&x9$?1h-YY1Z zv}lnn2I;K^rR@f(9RSl4&twmok#(w5EM?zDx#UCYy+fah`b0`QJ?t__wi!g)4Wb~rW-aTN3{owutD;6rsc z|8(FP)Y-iXA1+hL3r{Mhk^>?*T8;NFLfGAyF)I90Zdpc-W-iUAK*QuEzWBs9w;u2M ztlaZmmY>fI_P_Y4win~2tiUF3tUL8wMEfCPK4&a%IcwejG=!Q9v!9XjD6{AJpmZ{m z&iIxS829FBs8Rx*Q+y&>=|4CG+SCg_|0_R{KYC%AJaQ#V@TL7^6gg-aB?S_{V$W#1 zHL7=}$3oJFECm0c&k##@Dx`GSLSjb@QUdp#Hr_7U8dJkh@oQsFza7uC(dJ_3_hETMvjMBdWV#np8bRvPQ^+S_eb333Xg zAXg324-Ha94^KVx8kC(RQCn>_6ml2Lnl@*FHu#QwB+v%fbC#l)Z?^VCGMd z@Q`XBt0{^Owb!{)Wzx!X>P$_Ge7~h%dTCI2Yf%26+=l(Z0yzq+g-d;Q;(1l{#aUMf z`iq~Fx|G;j3gPP$y)l=mN+B$?`N?~PB?Kh>MA1@`u`xfnQ&S4b$u)a`8uy|^qwtg2 zzw!kMN7s-rqHNqCR%=l75MQfIhgIToZ@Cf|F>bNqW);rFTW4gHcrH_zr$!Z)UT

    =#}K}=Ls&cc&nXzJ;pr1n`iM`NuDr8Dm{ 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 z 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�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%0AH6w6?$JlMwgD0xiD;WP4c<|Oe`giO+DEHp} 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

LsNmXM;>gw`fGS_N<1Ds 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%0Av5aq|E+2N zU(NsjhA#RF@H@aS0nY|r3H&RxUk=;>oDOUNP6gfwoB}KYrqADUxtE`oZ`11(?Cr(U8NZGsq$)`=Uwc#_PO8x zCa>mA{N10GSMv&V{9oqPR7LV?)=jDz+n!f5mp1yWyqY@dOYc)#zZ1!;3HjNC4%Hk- z`bK_^p2a=(FLPUX8)@gQ)Cv>a)DBKKlmw5IWPPJ)VRv zQ#?sI%gR?!KACbsqvbpap6z+k#6>?D436adw18(zQHNc)ceyjOYr9?8wcRcx=9x?G zQSMOM@g}a_TpwYBDA#8&*F{__xPHU+7S|E39_057<(kcP7uQd@p5}Us3m(ZvJnhfD z@=qLsPk)ZHw+6gWoU7loAa`8-bw2%dIWevkCdSqy=&$tkPX^Op*}q73%3q)@`hQQ# z(HQ!+i{D#54Q$E;EeJEV~1r}9%<#T)5}y?vSuIj}xM^)SE97TxfSvX#&C>g3Rt3)^B9`AzcAm6OM@gSL<_@BlO~fUl+M zTeRUV>RYtUt@JIe8Mqxg>In7U!JM;{Jdb9@JLC)cqiP%S>bckLk#?{CWxeEC!#}0H2a?g!^-o4`ug_Y=gdK zu90JN{%VR`sNTd>W&3G{~In%SdZBYbZGU&Z>g<`j7_=YlGCu?c?f zg7=Hi^*@EKPX>4BY=A|B^8hb;dVu6M>XcTQXg|wxh$>KI3 z#7Fyal%kJ>dp`FL@c%0KyOOzpa%nz`zZzd{S-qiCeNZyqQ{_^x_DHCaUZ>n_?kVSI z2l}HG*`@7_f9zE4b~@!c;HRlFPaCG(m&)MwC(*e zc9Fw%jw7*qO z?tJb*sY`o-&yBR3IddS=Mn*3{mkWN{lW&48t1`f?by6_5vuB6yq0T;TFt;nsWUfxR zH|40@-koBteJM}ls{?+b`)SclUx?DZabiHXJ%gi+bx8@<+PL(!7Ut;KQyTZG$_p;= zv_@KMqP0Fs{`xZHqNm12+BaHe>qSACyWwS5`tDrH%);kD9-qILGP5ZY|3lTZiqT#U zW$vd;ou__)GHa1N|I5L6tMSate|bJ>hK*MQc1h)g&@MrL^rnx4YOtlytE&(Wby>>%NJqgMz&jjBdcpy_|`qOW8M-bBk>H9X80LN08+kn~0acBFtF9k9?uWZPMT{yNE^v_5~b1N^bz*3+DE!TKN0p3VqX{ysK^k*gMX-4ySEo3xGZmI8UFU>t_ucez`v&>`eaS^pzJE;&*#N&f_?Vv4Z^xsX zRW9->*|=xXgJvlFNbQ=twTr_PfAO`Ti;RB^~q- zvMK$8gU9Hdhp~x2C9AZZbn>OP{ID%HvcJ|%ls^rcwCA|;jW;1j!{J$h;TLDO4DRUH z-5F=K&zy@4NH^7eDbP*QWliWZwa3ViF4@Qh;H7&*Y`q~}+9zWn_1*P z!qW!$DLwNtaw$Etv1g!Xes_lG>MW=Ip^E{deauPU7oa37$WyF@z7qJCgl~$aDehvhG>?n`kz>a@|^9}a!O*h(l z5q5bJ`%UAv+NG>6;@iN6jDBnMTF9d!`ju>i=NNBv4whui_|f5s{ODTWCm*`V zK&_X%4!8<F@C!iv4|x-S%3~S_{0Y#;FQuR4XHr`(J4J5I_3(2SK54B< zkbU$7@=#-Bfjn*aYV%qWl&f5&Q+g%1qmc)lJB4c+S1H$WuGhFe;ZnS`Cs!Y? z1eaoY=W>04>tZg&Oux)Eh(4qo=~roA&5H_{o9^XazLVY7Kz}j)rzEtou?uEPw=GF+ zokn{TyY)9=Q>i~vzd2uzHQu?GpUK*FcYs&pCjBeq&JycJ&SA&K$j-? zpBxYNjB;`Z@H+v1`u}YHH?*t@XjwHN&;@ocvsL7JOFlq#te2;G zs$wSz>iff0ZncT2F}^6aDg3oR&N!Zp>*9<(Imr3wY4~=MeHZKCWf3$jg0D$_&*8Ul zc}(+9-dV!``d!BFvVgvNeEp9YJKF6i|1R~LzRpL((0SweMr)fI;CFxem)1;|@!N%e z3wUoZ&$Y(8iTQM~<9d@q{tXYxZ|7gBo4;)Y@9t;(6kU2>`(|p~`%xxwLCVlvxKwKw zk|RCY*)OvX@G!JMZB7IOdE)Gk~iZYLmv84A3iJ23GC%* z9hc(#X8s8N(fI8p$cN_g{TZjMd_-w0!gnRwG|wo4Hu?+mjMKaU)MMjy1F4I(YkncL zseRSf1(d0?JS{EGDQFu?d+v?2{l<{*;)(cfzZGA^2d%@Gf4?Gv>z^1?ERS^lxN?h| zBhTNBJb#<#M|ob0yjWU^n?53cvt%=`RL-1HI6MH=bX_W4@wiRUifHQ$V0Ok`%nycNRORwD0DXd|$=k=ChGZ9ZclvQ?)mt9PM zCq5n7x20-%bFgnqCf~^?p*4F^TcIy>x4;k4E#FW9Z7o}S!Id3(dKxpO>!njlo!~rB zjUg?P3-pRDZ&1hwOJ9-WZZR~LgnkI=WoTRijds02CVldiRNqscw^j+RQQA`Jv=#R? zYkaltQE}~b+P2>woP86eYaDc?w@Z8cG)^3in2O?P&D{b!L2KzXj_gEt@50Ax=m~xQ z<;*|i``>fU5;GT^iXPM6Oz7bDy_vM0o48liyo!9!uIX-}%{U9n-$`EHE^_kLWp?&m zOZF5?Z(%-3+Xp^~l5h_!<{r0D=UdILcMw}p`xW;_KHqVfNAcae8IJ#6v$N$GF%P@0 zdwmSOiof{zOdxZD=X0cA>FYh&>zy-+`^C@kUSNK59KZB0`#S!MlbkInVjl&pTfIG0o6_h$#lxN)qS#`OmJ#*yK9)(?UsXap-8Oe9Lwz=f*8s4=AvJmHg z<`vG&YAlH$r{;zmb*b|5x$9&QQ4ms64P4z@=e7 zvFCNjZ_Pl9P|l{lNg)%mA9&wSk?V4tXY%o3hnclR@@2NdXRT#Y z4i4*1I>kCShU=^nrL1pZj;EYX+Nr*f?-hGlg-jMvhSris_fqcyUj`um1Cbp&m#O8O zuDq}H)n?5patM!2ELdy8^09dv8JDj?rnZsm(U5~JN9^TWw25LWv)>5Mv9AE{bfe4aNF`6@uRbk3`CsLs8@tu}4Z@OjUyDPo*z zqK&+Z-Rg$bk#lTA9T3OHkS}1{O6)b-={PyS@(Gw+t;+K~`2=3Xj_Qvc^#QzA4)!1D ze+?_0E!K}b3H&DEM~=aVR`4S>?;Bgi8SP20X)Ux_pT?N`{mZRSG8{M12PXbl;IiM^ zLbIoY);fJiS$mtDE&J$O;=y2Omrn#=bp3E>W(=;^xe&yM>POP2wC~j@`qa7fse{Pc z?er`8iTCoI_M&R0?o!#OoSXD@aFAUpIl3C>1D^E%8y+{)ZvEcn+;zS)&kBZ{T>HtEzEDq8;=42SVPD%lGw|WpOUE|BC#|2` zM+|ize3C7s*lOFENxuyl+fPo=e)Q~tq_gFR(4&0>o`9a`&KEH751eG>A#-b=T(#~J40&%ZdiAUbvBGSnxB_bpKN%0o>&3(5v!_~Zb@Hv(E6=# zO_Afawd6haQ@vN(CALgBn07!X8b1K??T#Xj8`*C%!QP9PjZ-X=ykMTa!n0TJPa2=Q zo)zmEvfPbl^J;r}b{?*_$$-y2xWAVC`DY)1W>+?MYU>z%gZ>U|hVXnk^#7gEv!R9a z3+b;KqviX07Cmtn{p)yalvms0Zt>5#Z>!E-K_^sAYWkwdlb_AmPcigJA+#4h#+pK8 zo_N!`@?>|f2)TcpbphI=*XY;$%B=&D{Y%j;udp}zAZ(4@^zp9ArjG|>a}Zxzm*w{G zh7{1h={M&NV4R^1M-M?yjBxx5&to5rG2(I0y3bo11pb*e!H!d#?88nS29C(tx_MCwoz{W%di{hi`$gPPqr%_X9ss-1v#GU2}iS^&2kunLCMVDpxUb z?+k#ha2#8ijO9+|-Wo3UZW%wgud_jU5sI}ma!>mi=>02-gS{-1*hb2Cl&^Y4Mv}d? z8Kc2h^P2B|9K@z z3=F>c9^c@D34AqS|1LQrXj^;k&pygXQigJgG`6?VhNTJeFzMs_d6p{Edae#yXU%YP zlf26sBJwrRq1Xq~`IZ-Nzw$}mrSyIA;UsxVjjRc~jP~3Et=h*%IYq^^t;Un#j5+h6 zdqFn+gM5_j$P8on%p}(z9B1rf>>Hpqf9!1Mqv=5UN-q5&mzqc^qdmF{{`f<^8aH_kG2Z% zS3FXA7{cA;V+;%G{5kkU@n6N5DEyVXJQMu!$#D+3W8|P18t!E6+J?e0-t(id+s>d& z>Pn5EEXrT?1ywRCoebV9|;Ivc8Y-Ra1|MR`c zlSJ0y$YFVR^cuNKw9`zrWeu=9wza8?_E<`t%5U1m87H;;mTYQG&rietDm(l*^)&U= zGtN_%{2&L)fi937aqoTZiT?@YMdRWF9|irm30ZdeUp&v8Zf(0z&oWk+I1{lz*_6r` z+!(`l%yj%S;a5~9HiAPbGGTL;YS|mZ<}6{)Zca3fZ_im;1)p8|m}s~uq`?6X<*cOW zi_$0LM?Qi*TPK@VdQSL>uU)r((tiJD$~AdQBeB5~$T{yg^jW?4n~Q?8Bn^(MLVD0W z!qMia&kWD^)tuufuc7K?4wNOP#7J8Jko~VkEgr2du|QRTHghH8JXDu zR8FTE=PMcKX>050nXUlS8(Taa7FZWiL^Tsl;VY5{qc?95VqTUvr{wPJ3i%v$%Sp=9`?oN& zJQ=Uv)Af7x+n`Bfe}euS=j=TBRp(IdlH?bRU$p=pUC;lk$%Ct9?7xBEuQZJEw4acn zrTAR$No)WkJGJL}b=WBLd1razJntE76wX20{8sIG-m};!xAXh<*!kWs3RstcKm7Rt zoWsVNjTf*{I3IQMgz^i#7paf&ee>wF$5ZO!SoMv( zyBpk^Muhk@U*PRIFT|&Kw6~9UMX%LM;)QL$8qI%FeZ2cK*>Ai#&wCVJES7DN8tF;@ z^1R9^&1rvL#q*^+U(NF%PS?3y)uZx*a+&||ze_p9jm;d;_^9C_xoh=Z;onf~yKHzj z57-U9tp)agXY31G-wS??!9L6_fLFl2@ahF%KX}y)bfLE}j{OL&bAVm2?bZM@$2(fb zRG)Pb=dxk5<|JtkVE0Ry69Ri)hFu8kJp-FCgFbo{b}BG$Ci7Zg|F2R$(EYmO7iDrL zS}E-h%$Vc&PXN2lWgZI5p3ivR6})eA`~|=scQ6kF_PQH8F)vx4`#tt=%L4BdZ4B(U z1b+w6y`R1hj4kJ!yKL~TLZ*P3)tpxZ%z6}G8!+c*oFm71m)&cSAz;tP*^3L<`$=>Q zu+KBv7Y@AFAv?hS>nR`Tz5u_0@n17;vlm`Q1N|A;^>>c{6fpZW`aH1PAJ|8{2Y7F$ z&jEYA>-g(|xqrm21@`@uU4O#q;C-6wmjT^e*IxyU_jCQ7 zz>Kq8fAAULUEumR0ka3V{?ov2LtOs=u*V43Kesn{pXd5_0CUH<{`0`T<6Zv*u-`?l zpJ0u%n{@rzz}O|O|2VMAWv;&qm^s7shx7sOt6cwPV9rd}e+Jn7tFHecu;RZ4%c4|%(&YnKODTj=lVnYfp^OF=K;Gd zas9Qx9{0QcL13@tu0N(fcvrdpLSWx&*M9-n?@`xp2D(3U{lYWByT~mJkA6E$81u_2~VE+LzzZU2YiTSO-_=uQ4un4@*i}^PK zyN-$ZPXV*X$2j8&yf2FRBL{$YGUne3>~%@ZUk}W^Eao2r_MH*)#}5SWt71k!M)l&5 zOvb3wFY;#I!dQ$BoKzF{O3q`fa?lOvwB!ivNOa+6=~dZNwu}G4cTxWDsc$v)t)V{I+H+%FH)Ury-c4QThl~MjjOW7{ql$R920WBYKZR5F4@jU*l~f-z2E7kg_z-5q&wA1^%$8ty9SyPPWc& ze2~iPybN3ClzE-*7ffEK>>I_sdrft#H&Mqt&McjeU8VVf=E@C>-?i8v8n>^R64b}I zmaF>VYrwzS5#C{Nc4cRjp2ObsNk9I1y_>9mpE8d_YttysIfnN1wy5U2chl@A+276B zEt>brR+PSHgCdy;{Ktm zEjixrx!>`><2CAk>Q2N{TXp|!=&*F%-aYV-izlx^R~EdI-6?ZUdo4kqeqWT z#mrSZ%FXef=DGOsCf}{)yBc`>HTa=9;}O0)>E@cXC-S#zy>7w{>VJ;<)&3o2Io_j` z6_wLf$m!j*dB5_|4kvzc3_SYsokLk}c}E;YF_e|E9grpU591d{F2{k3eBQg+do3#) zdz9}^$fk7qwblORIRZVBOWJ*17Vl2D2;|J!) ztG7k$Xw6GBFI3z`^k_~=EPm!9Y+na>LoDgPi_NciNdtZK#cqMTq_DL$k9;$hyQvl( zp&a`_E_1wr;32%Cc3)Yh@(FV{mGW*2dl@QDdI{^-mauO`O8XfgZ&&f%@4>G*f}iAM z6>|(^-1x|Cndf}Iv!7G%{e<^a?`6`V%{{$1<=OYuzNQ~lcFbp@Z9FN|KgNDc#=P<9 zA@#NNc1drOOCxR4lQz*lK+!g7fga`7_IC0%ouEDLi1pi)`lfK`nA-@iLUMzATz3+l=R6f#qXym0Nm~R@qN(Xy|L-2P}#wX)~al_!n{Tl9nE|B|EwnOy$6250V z2=oW?s6JOhUsF7PCowPO_hu@VU)txCv3%u@9-0=^Ka{d0Zw1U{)kmI&AM?rvd!<8@ z{&DC_r|H1Fc=fJG|4QJy7|A%fgS~rFjUyaNO6Uo!PLShch{iGlJcvVk* z)IKM+_k@ov=e%{XT>YPsnss6g`)t2TAK8P9XR}6en46r?&CS`Q_}Pk#Zp&Wk<9sv^ zKCDDnO74%cSCrvfYJ~SMIf33O#lN8P@+j}bC)3{PfB5_FB)U3VVvf6vK0KkwiEY~P zmmkzG?h;>COF26zLwpJP^$5@6b=z3i;AQ_mm41-l+R`*1sktTdrufwmQ#ix6TJ{|rB`8yqS=bJoR%d;96UgC>tcn&`o}wCo6*n7oBDJN*wd7kUzqyKfhnO&^5N_ z0KWeZ$}(dmeMz#u5uc#+#K=@?>jLxyZEAdQ`gZYcCm!iVUwtm@tAG8*38VXMJ+VkV zC#mC^upaWE10P;kM>*rM>d^jZWz-?RU>WroJjw$+hz*=tE2B z)2T55y@Swq1K@Y`+g9i=qx^k*tGEs4N%`%45C2jR>Kn;-eQh6%==<*QL+j0RfK9+G z;CsMK;IDwuerI$vxXc-!3~*l+;!Zy>u|sTP!|di@k1y=e_B^Fx>bCmQj5*Y+xknka$gcVVW1ae?854Qd#IyefXWcVn z19~TUA^X#aF3BDIq&zP=o*5p7G{{#dn@Kr^vX@G*m&&o1N}yo}G<3mUx&#`C30AFk zhI*5sMfTDf+UFJOf0g>1!7W;s{Cw-7O};|I$Blu#Hj)0ocs{d*eyMSN0N=^?y%bqn z-PKutF0!mxeQ|gEwmdWa;NNH0#;sOFH|f$tN@NWcNvt-93`>r^4NysrM9Xl7}{S4feHy z*VCGZc{$J^oAhbQjmnpJcNX{Tev>x7qCTLp;k>l`Gc$g%xB8BL_;pj~c`3%*$iEeia278ClYm&=#X?w$HEVvU}BZ|NBIJ9=mp4C+9B46+p+nT=6txoY(otr29 zjZEfVK^T$OMb5Wz2D04#6ykCs#CcYO8KX*%B>mfXH;Sj^Jr%wynbP}e z?+49XLi|kDvzH@d5c14eqk7u)ALISc#S`%(B5S66`lpSX=(+YW(^zfvIXEs#!!ZLK zSA$~>II6BoV~l&0Ifps}Sx?pz3p9Al3h}@OKeQa3o5I%nUWkY35AJE+?`V_CZ$)e$ zC*c*NbA-RO7aH)@++x}xS>LW>#u3Njo{?L0Y$5%Qaj{-H+0Ypo$D({R@=4okd@l;e z#zMyT&)U~=I`}EC#rAW_lpS-D@KtTCd)QW+SA$0ly1pd5$DCwy7IZs|HDBZ&W6$Pk z{6GC-;=p_}U;P0XZ4+D1p7?j_@22ij`j69a$~n>Ia_TD`V(fs;OG*>o9Og%v=+fQj zQtekx&UU?G&^ItYdV~9I+*jVD>YhQ}H;=*J4^D42CcIm6@tyPg_QFE%_I{4foM`ig z#f9FTd~fDJErs4)nd69PydI#PUV=VH@G}8ZaU4_Ae-kU272?7#5DMJZN)%u!6n28_pm*zK_}ckhJ!z14$63a9 z+`Mh&Aa7v-F%Itcix2kh9`M=x3)(rzzmbhqrm?5VZOw_6s1J0q1GKIA& zyBXhw_a50OjPJ5huyL`Iv%ROFw+1@v_{N?yI|Y7ThFQl&7`bW{;mppL}j^U}IT15FL`$p~$Lo&1cVNj)DzfZ2m|N)>qej zlvl&Il2s$`m0`c8FN;RSvv;C5l!vjAYjLEEbJu(n#74`5ez7s^7uJueHJkHu9B%}8 zYn+#EeGu6+>**u?EJgk8=b)AZ`qic0(OjlI(#n@#cL4mjp0Wp0wruuS!D}#eeA|{E z;mzDg`OW7r$74@T&G9BNRvBA3HP~C43gW7bl+*TPM?SlB(`jjAmeC!2Q+Rif(=jmo z_D1;A0-sez4BklhE6-*IXW&NnF>1uNFm$a7`NsbyPn-OSgY-4!X)8amH`hC^<2OWd z4UKMF%v|W^V6T>*(5!L%MQD71E2rLknf_`=qcVy z^89D$Y&}OIYqm< z*u+;bj=e<;{q3uh{$ZCsh95D3ZOc4*bHeF^AKk6nmKoU8W#n00%lpR*M|&r}#=H^! zXx&gPHZ8dOhgmDE@wo}Tj^{(yW} z@XamSCxEi7y(0U~@;jSv3;EUwzqRk^e8^7nNBu_6(VlipL;w1N)o*D_^*7nr#t(p8 zteLBMBR=X-_Rd7k(DjFoBbO(Bfb3&;HT^ii*Veg@^&Y25J|q2pG3~ASgK0P0@9}#S z;zudLk21&X2iRp9Z8YIN_FX>dI3JN?JTr^`mDf8gBWu~Lk*=}l7oS2N(&b|i^;@}W z#HXKdvOO#7CCI`Y_^G*3mi(*U1>V!(r~VM-RS~=j)^RM}s@xCOaa4WwI*x+&bsWZ) zp*>g77SAF#jTzF#UF&}Ol!{wBW3RS>(qDf%hwOfcDB6a z8OtgfXPx-MZ=nHs>`9-}{nQ)wZw>;!X`DG^eSgS`SI+w z8p;s=HI`-l^(6g7d(k1&lqLJg&bbP&c5^?xfwL;$+cTm&qR+$^)`S~BOO)4BMn~cu znm6;_-Qp4TYn%^!dQ;yaR#;EI*Oo=>|Nac^ulz&h2<-;vz3^kvfT?XSv%Y6vR(#oX z_|XQh%ovdz>1lqm;q)NCNqg|C{wC(3^2Hpc-O8a?WwpVVMX_L?_I7&zc9J|nCpVDQ z?xw7jlx6-;<(U6}&i}+W>y;P$LB*^S1t+I6WU#gZd{4$=2HzI&)js$-6S$RkP7W$* zD@2#=$j)1~v|-i>jqgDnS*FYfLVTmXSNZt&amLGW#$1(k418y~eLJ@g_>Q&sHe{Nz z7Fv7@GR*(q=6~kz^~!e}T{-K-9iL2n=iykgo^?iBwo~38;IG!PD9*ry+vK{*7rK4m zwQaMJxqewam-XK`i*txVoJ(V-+^>f?7lk}7btZ08F4himlHVdWrt)@z^JC%J15qAJ zrVRZBt|`mP)Rfa>xz{06+mWejf$M-*1JN~ky^*mqxK8Ja>MvXF>-b_8v&Wb6eTu;; zm>-_){dz&@^Q}4Co2)qzd*`iLANWsB=}x%C?XgMu zsfROqF4K6kf<9r#JskeI8(v_YR*byC#T`E50({0V#~kA`ChoF{zFWT(pYcnKF)OfZ z8CU(fQTPJz(N15gTrtKObmAm*V!#Vx6i?e+(qR2aEBu!~YZCK{BiOvkC+$N%_l8)^ zyPEOfd2HUk_~ovlKWqG$f}JXV*0m}2$HnijeeC=5{)AT7BXQL~mPz~Oa7|*LTgV1>DRO!eb_s6;&|S@@bMM+D7(szZO%_Rbmrc9ZtlVB%9WhRc43}$=q>dA+xK7_X4B3UjH`A}o}##!Ps%rD z)&;f1$TMD8ul&su=tr%`?;p?D^Z~qTgh$r@MIZAE8JF$ZYsLJp_LVPjGQ7T&b1>yI z)!xZ#cs7`|{=3O<*Zz!}k7(@FT%<19F}IuSc3uBK)IElJnQtBHSBc$sA2tDXYc0Zq@I`tyY6qlfGx^4% z{YZXW$pQYO|3llEz(-YGkN-_VAYqk~5O8BAVc*>l+?Yv31r@c$ts4^pDgrK5sn)hm zSlmc3uOg^jNI+at5>r}Hf9=0cNC6kX7+bWzUt1?cMF{I4%d@upzvsU9Chxr&FuyuK zKOa8F%*?&#+;h)8_uO;NJ-1T)N8z(AA5pO>iwn^cwk%3aX%aZin9@Z3GH}0uEOtQ_ zF9&Ckv0edRcJVv8JBTm6a!SJ`dRNBMg|TQk{0qr_K=bVjd_*o8yapM(5gI=hxw7^Z zx%-N5sZxAP)qH2KN7=ufRr)tLQg^E%Ga?j*RSk zkN*4kwBE>+@Xhuojo_}%9DH7q_i-Yh;O{(i4d!o&Jqvw8|1bY_G_g)3_q9OIFRYW| z{;Ui1(oFPfnkiR6M$?KArx>p4FHe(Sr}Jw)`dh zeLH$%3g??Eu|33>a1}Vpv7;+qH|?RR%ta8HlDk$?mr$MIu_vG6oP&-rY=7lL;E;P* ze)bPrhVEfZ`)8UqQ)1mS9`RR7K1v_rRroH9h5x$Z$rX?j>?1$U~JkIYd{gT0PJwx-UQI%YB`3?H9RQXr9aMF-b1E^L|Mux2-$7wBjZ5^jj4dNEt_*c=M#d#Ex{3TNW5Bx4P7ZRSj*m5)f3;UK|%-R})9EzVx&Udz-YAAYA z`KbbV`Y>eCuVj%r5AdQwXmZGo&?K_sy zvCEp5J>Qm#3D5++|B_l1oqCvOD0w$v;-E=wJK*QT**Qz1(E(qoJ{^32mUivqQ2yJd zBJ^}|#C2AL?`P|New&aHOYg}Z9Txkn9RRFKV{=HzVna||>Jjmxlx1zV$^!qu#FXnqWlXEAOF$C8=D*1l_^8XlT7r*wN z*fTl*n*2U_7AmiC0OwY*jn(fOy6V5@cg}XN^0#wc$o$B=koMcmW0)VQHAHM))f)P3 zmZ~*WxopP({dYO6)gHEgdx*ZCIcUg``RP$ptMrG8F*HrU-tj*|eOhyVTrzsu|6+cm z-ip`;|C{+arvvlz2{btQJ=RkTIl-^HyXtdnel0Y09`{Dgx+9v8x+7)nbw`L@&qAi3 zN59D%p0^;^VRXo?*j%6SJMoh!-O@5t$^NH&ALIKN-|y)%U&U8BgQB~G;+p+CaG89W9On z^2F~Fc(PcN_V463pB!%2+tQXj<$&0?yTIwBMafSi>owopXJkLz#a+<)p6rh5o>JPiJpi>u+L=pZ;H8mPjU`R@fQ|rnTa#-M0^0dvCY`q)-9ioyf6;gd$Tp) zI~n9}N9+bN8$X+CPMW@*Qsc#{#m7a6vE@IaKp;yKfyGS3; zn6%7^+eN-5uP1=)O0HRfI%{UMm7&A^)`j&Z-e%I2k#N^xHc?n~a&qqri@LSqT?1DXqH&Zh8 zd)a^G&6F^E!+G@i3i(>=RlZi=wkUnRb}DC8+D^>u*B0dOr|4UaH+msHan4uxI^?{3 z@8{-uxscz2FOj<&)>KWf#NQ&zUzB7nTY{_~1I`AD+&yc!&xy;`oiyei+U@<}VsLk2 zKcjwy@z9`4+X~S0i`mcKIF@-(XwAv)w#1L0&MDI}hYzv`$vl=aMtQ&ag_RL=z4Lpm zVfvS}{Z}lL_nX-#?LGHBXgdsTPk>YCv-e%GW$#QuTVH-Benpcu{J6;B^U(H@MOzne z#l)uzjyL4D%z@A=_F|PU_%A=Ukc`!7d)>wFWF5;oP&_A}KX|b_f4BgCt2^r4U2S1} zYP_XZ{E5F+Zl)E>xs2aFj9!X}o+cO5IbP@g|BSKQaXT0O*qOTjMEE%$rVIZM9QbX$ zC$c7W3)T40*)pHS9X*FpJHdGlgP#dq`MZmJxi^4spCyMjJ~@Xy#F$F(jbUTLFEhug z5}QEI!U1GY#p0Wg^JWcun)oI(&ck;85qhXz#e-(c zy%geS%#FnTeh*Db9vm|1{d*|Ck(^kOPwcCD+b&CGe~Hc`CW7D6jQ^d9YNj!c^HbIYdZ1qPzz+_YdO-P@q1}(pamu93SqZ$cW68u% z>cuXOl$rN(-t|$30zRlXDecdJABSvSpwC!`$|l|wHs>s{E}>W9vCeT4fgDFoQ>Bqy<8wL7VZN(E&sV45qmls!O)|c=RleK}^j}2(#r?=Jz-Dmf z81%0uzOvBtTL{l(Ee^wWD@bw1$5zUfd+NmVb7gOkn255!wDH{IV$LSH{Z2N2hW_ec z{t$jIF;jfQmsIKl5v=l5b$wDEf-Qw?V^7u+K~!S7Gu_Y${}`#t7fIEwQ= z_T>qF--+K}#XN2H%u`~G+$Q%R;Dwga7GnJizocH=khzS3ezQ--=A!OM&RMc1@G<^C z@`KHDxWtV9Sa!_RZPs2T@+5u;+XoRtZ>ZYxj=A#A-9Ss8lpN8I+&8z^d@;EJCD0d) zu-_vGf*TvHUfF1is1wU)+)1b(##$Usd^rS-er%##TV|lq-W#3$3k{pcW-iMf8EL*2 z{Ij5W4Kbn4+@+AUrR>0P50yJph5W0z1V`3vmH$&etl@M$=RWG%B5!kACg>&okyU>d zF_LA?lAp;rX`QU0(eP8&&lqH}7dG`dtcgC@=I5RQjjYS_a`7jUvosEQ?MuGW`Pf|f zDO|vc^WmXr*Z%ICVY=KaZmWWto`po zcNn_E&^;5nXF@k}(&sklMlN_T)j01i=)McO?}hGrp__TizaP4P4BbD5Zsx0h1UeT% z=OW;vz(;}Qz;fuWgzie{UIyLEp!;d)ej2)e0o}jQjOdZ$D{P)?4-g~Z{)6Np4o42J z#6J)=uzUFp@r-(jXGDL3?}$78f1jSYO!>je+GX%B_z72K;7djpkAx&9V8=9q>psko z_fa)t`(kU~hz`&j&Qrb#e9nHo@iBE5rhZMtuWzhScVX&x#{Bwbo%;sFKz7rY)F|76 z?1?{U6gb{`O67mm?+*p^cb`%DU)(1M=zspD%Kxh0o>8E0&r$J+`hKMa`iIq;*y8nC zv_OvrY}|!&`g5M;H=D>)+XN0%w+z(ZTtnQ1&!;pD)ZfmsbVz8BzGaX_ zL-ip2-5!>%$QZ1@-&^?%>R*{LSpUlzDkrY~=!U`i2cuL@T>XT?A^KlmvUuU|E3r56 z)6|zz=d$r)ix;uJ`o^;?UIg>?%@gc3k*~isN#(@V&k6L?-5_bi@7PSv9&77f~IdgCn3*l@MI9#7NXoM-(` zJ6#{M;MfYKLrYHAZTn>H-J*ZozB!HmjyIa;MX?uTzgk5NtRn8(6eF);&5k|hnX$)6 zKYi76W?dAC#lOUF)jgBz%zGyEZ=MO+^TaOROP^6RYfc${Fu_M~}Mf#MOL$AA0E(>L1$mwj_@E0y0}gY)f+2`=M+83a$y6 z*?NHQ@F5sdheT|#n^+6duN^;@Gt67x&s^5VUSQjcA-k>z>$RA1i|rU>AJ|BrYqV^2 zH`!?;HbRrwCsK3y3UDhw3ciQQ;H|-DAvKq$fL~%*m+W?RqAFjR`YHUcv`_z3ZB+JlIN)9s=vV{f3HE_ z)*zeDBb!n9X~xAZ*9x}TLS!crHgojkzWJNTOSUgtmwUO$m(j_R z=jV_S>Guj1=Nzry%HJ~Y)!=jD$t2f7^7ZGGkn71gM(W*2uEi{$W`sGz>|@>Z1kbzR z*$*Dcn#RWeXDn5M~NRJNBLOP9FVgozL426R^~_a27a$5@q3L>pCMnY>6S08 zT3!~fr+Rq3n$PFLgK~Hv_rBykmc8(x0v<%*fn8JfeRyzBMz(%$2KzcZkayRF2a^RC zXf~j*(%!~tF z#(dy&t=t*8NWUC9UPPD3ovJIKM`ASJLZ3)Hax(r*yEdwdRWw|vYNHO#;tmY*dTtJ} zq8|KXpWnycEb}ZfB(&IT@u34p^B;ls7_{4Zum!sP-P?KH#P=#rnB9KnK77~_pJsdo zd^a8Wt8%Vi`f;sa{+@+=IPYT4PH`7gaJS&Q{}X(Yb#$RMzdl>GOD*3Bx;f0e+O_VA(i5}kp}oje zrGuU)EP7t~8uW<#Yn=H~(JOnZs>_jLEb^Vy+Ox-_{B`X*16z2o{>U&>=Qep_Lh{b( z;sx$C^;m}cesdZ3n-9{SvoSG-J~fAF(?U#p);~?XDZCY)A}_gzkmVT}<{fB>d;fL{ zc-eOopV79C&qVKDZ?%uo9=rHJDK=90Qu6p%Z(n{For0bb9WOZooFNbFZ60bNW&`(^~tbiL&7#ruHzW}`A)2J^wvQC7x^3btccHwk+CqJ4dAmxeQ=R$)`RT(JK#ktJd*pH zE9oyne+}wBx@i}w|HoFTK(=z|YZtc2*zWGwOIPqt7n=(Imei|8A1OUEA38-Jbw8E* z2KX5wXJJRNCP%a0R9^e!U?Q(Q!uWB@G%d>*sOsKSWpH-9VYN1 zHlX40pK>RBfYN&k&v#{R7)PpgBk>KXm)Rb#2&(r)M>B`AZwS3=52n`36l;!K==-Hb z$O&T=xhQ}RHCM%^zAB{tVF~(5?kY(QpF{M24!SBa&hzm3(3jJ0DaIEid*Xg<>uYGk zeoU;lzm5{%tv+-d`{6Wn+-_`+Dd@Lvq2EN_l%9>|>DLvQ_uxhThzaJ3u8}<)+SQ%I z(@ffpZwhpLo@dkH(6vHG3|$+94$c(3A$zJGf{xYDkqI5xeyUE*ROpbqsMkP?yhHpg z^lgHsNM54O=J0}J`8D4$b?uA5O~~f+z*j{^B~Ag~#P1{g5PhG+T+99{`{Jd{r|4Gu zybvKavx2tAXj^y+yyrI(cdTN)X~8^Q-p2SC{lfZeDkWxjCBGAzoaX==&usQn@&B#j z{=36(M_j*$^4l$^W~%5W+AH6rt)oXjb1=UUx-7rofkoj{lwa`i6a2n_-`@_+QV&>- zccE!7nR{fmF7c2|{w4Y01}6M)KMLL}oA79wR)l z$0NKcf@%_yn zpF`drw0!Ty$b!gyE3}Hw9XqaaQFM^Xk6Qz+S)Qw4#sVPWBH$byFLCfkT!+%Q$QbsXeV**7X0+Tvfd++zY{tu z(r$YM(OK6WYCi+p>ql&uR`9C3G3-5SuCVN=)uvu5#b%K)O72y{=8g?bvbl>H-z3H+ zebt+Y*g}IlIzn*dIwfHG(#H2l=M&6Hc(ZfFbzoLhF`rb1@f*$%x(390p z5Am%0pPhi7i4J;XP9~4YT=o{f6+TEEP?>9d`v(>UPgiptWR7imS0P9E-I_K6D61@gqVYfDwH(a8x9j}>pQ3Dh8I%EPLebYUwChEV%C#&l76yVQ+ zudjmdDDN)38no&S6#DenPgj1o0|9@AUhP*tFKo_CeYGV^r$P76p<8mevY}h@SWJ5& zU*)mHOqwWFldWGqN%`T($<5TSJkPqn73id2Jz4qT$Y1HCUvstc!yQ;wkfl${Q+_z= z1!d_s4AM+p>hG+7`zOa%D7_l#Y}xbKy8l|`pU1}ULVX_Pqdc%E(nTLQ(v*2yPb+2aA-2+*x;f(hAy?tdyuF^|Z zf3mkV;Fk%~S=KYn}Mfym-mwS;BzMskW+qgrwt!%8`ki*{1clVHE5PlXvoz?ayv{n0eskycm zG9Edj*zb{i$a$<^<49fZ*>TT6=_C7&+TG0Kr#ELV``n|CY+4JzSHzftj45Q{D>(r^ zyC%kF@a>F_RC)F6|0=IO2bmDt^m_2UodO@W8+mbKb=g0id>m-uyz~S(^xU#w`mxR25B!Y#fz)n%@AizGC0BAsW~8s%J1c$K!5n;1^D=@Hc2DIdt`#$Mc!oC{3!b~vMGL1+jhG1!DIP{ZgS_v zE880y7I3FY;tC;brGd1IXr|xwfX9!xnmWGtMb>@QovRk^T)lq1=`T^bk}-9$YHHec z|9E)XZ*`vDpEJq;t$$mP@m~+0B(@H}(c8WCAa+M1HQVLvCH5WsF6*-Xo^SR8j=1W<(e`4J(3Qkb_XNdKRjaaX2M8+)lLGAe)2(Mm*S5l8j&6}mq zg$`Rz9z$NS$&VE|?%fX3+V9;;J&2sFE=!~~U#!%+MLXv$ z88FwB*#RG$GCbg8a=R_L9`I-1!72Q|GY7W+%pU8mTy5G!WYmvuT;lqN zxDRqBjyB~QC zv$o}JQSNZk2fjPjv&80}WsI(N$fC&k5!&5AJJymRIiYg5&2A@o5XukE9K;xt%$04& zoXwponKyf_j<)ZOSvJFJ&KxS|oBrjECuEbiRf5KgYHU4f?DLDPMJHXW8K2l1cAa=^ z)B~HC+s(|a^9w!_8MploLoR2uWi!syfyOJG(enH; z^$vp%n_S*h6y386o{MfALjPXf7(idJURC`+(U0gMGhQjNH)KMc3*f8Vg>%x;$~+4l zJ2^**9mGCanN58ZvAbS^jvVL^+ba_~vY_Mf42K^9`LXBq^rsHy?}N|w-!ji({@w-O zzYpAK^WV~wB1>Msi0moQt$Y+Wz%Qr%k^W@oucO@ph6Pf=E{;79?Skr;3zWQ$Xr)uQd_1w{JY=;{M)kZV7`-gy`j+?N51A{Sfxw&e+a?13NTB^;=QA5urdDNi;( zTyo9b8n0Z-yYoHa#}Qv@d3w~tkF7VD{CEfW9zVD*G?_z$>8g|+ac6gw(>V}Ccr*zbX_ za)(>$*s2)Lj1j7it$l}kerIC0UCCkYDYDn6X1#O#@OjEI$*FMTUuuorEC28C&V54u zMOTYXL-q%f6TXNu>f-xD*1O}GHMiu7pG|U^IZrWvw-dLW($GVnf_`$&-)c)Q?O_a( z|3&UsWo^q?U2?$ckmsJrv*dy0Fn{tUOfEIWY}-^~Jhlw~yU($FwI}+C*CR*4ZI3tx0UX zA2dn*_7Zq1b{>3GzD}v9_}@=je6{>&qEE(Kd>sdD^ynw2e04pX;j-Jk^DtZH!ID3T zGkn56EV+l!fF73j^|J6~b*g#Fvg0*)+y!0Z@~Yy`0V6wf8igxN&M#9&O5du6Pvq~ zGm4y@Z+Xr=HrcO)2G?8Zz6nWhr4M9mgBhF1W|aL}WK(iUZ2P^+r|w0#&S$@aKH0CF z^P8ZB^HLe@e{jE52e8q!BM!s2!_4_1=9x1%^(%Q3Yr*tm71Wz}qc`u?4e?F;oN?80 zp8W_rKX@DOrX9u>%OKCXyrTK#tLoxU^o+)P1!M8))L7g-o;UBeRy037sy6;%?UuOQ zYn@Kr`M2}1Lq=6JZ=P2dzjfr6_~st+d6%}^iO>A0uDtouscYjO&)XJ%uDg8RsjUWk zEOYA8=GLui@^OsToo6i+q#5xa9f{fwiZ?bL1B z{wwYn(T~(v`JvrUbiDp|`gxdfZkkscA6&jQ{;(Qn=eCkF-1HS+Y4$6%IB%ohVe~tU zd+)=qGtax^KCPQ$_lxgwGyUGSr=t1A9(D1dbGO7F?J0c9Zkqz1gpXdjGp}&deLng1 zs@~Mppm9HR6SG|RfZcyALw}k6myfP!UeCO3-@7F~U-jR&Ej-pY?GM?)o9rYUt1nF& zL%kZqgpfM3+hb692(c{v32;2#v!Z!Q-P-u@@-1=6QJc=)OfT)LLuSA74%q|n#xHjR zm^&Xis@SfQx3Esm3#wo44@Btq*V`(Z=Zsz(e`oEMxWqE1bFOLV?dJLFOU!=dedl@f zOKh{=j&0sazvQ>9yT|TVo1i0`xev@OZ+-@z+}u4H@2_OMe_L1H8@y&8vX2ZtF?Uo}Wr<<^YsW#(=Lv0-FQiyb+uyXo7CSnFK!ljOWA zy6i>1lfNY%bClm!i%$$6xYRnR5?>oOafZhxE`wIUeay>Y*1}VFY>UfTV>!NQy^+;0>m;(bHXcMTX+il;YwOCKOveY~ zW4)Ac-)0DSc0$unV-G~&HTAb{iZKrB)^k-6p;Y3hkjLigJTc&{yl$b zMf141b@9GEqVc{8ci*R~2->@)BLa7-vXNB18Ok@G5hZg3sZ|XNYsQb%r&R@HzaIpw6h+r=Od$&3(ttIx(N7 zHOTez9=R?ZV9K@Zo!Q_apA4Nj*sNcS9VPlieBP3C)ET+%<&x@fsaCO_QV zw@PsJZJUBmsPE{C=K0;L;(a6LXEo@Aovg1Hw$#SEgypj?Z8fY3SsT^NmB^<(h8sp5 z%m3lpist+=Yt?*B*Yew9UlNN1kF+aej)uekDe(VF?0o#t)QBaw4u4e({nTL3ie0;B zlqu)u@Y{P>cVTR?7p5i4`D}0vgVr2HYffAE5V8X*K=ueKR)ZH+VCDuj5m?c2jcrfFSuwc>}JY!3_a#Y-p)m) znd_z^WHUI_%o8X?-oBH9U(PYE&Nlmzy?&_G5AnjLVVuGI_i^uoeP9IrOit0y`MgV) z9~D{1Z|jP0QsgVMO8(AlBlkq{x(r?`T^a15bmb1_cP=>qwl6Xv2Nfapw(?vb_t4bZ z8>(`_8+#sGq5k&g>Fg=wBlbwtKmS8d^L=Am?qm-*GP_-ltG8RYqtu~8PYdp=E!ct1p6Ov5c-ip6W2h6`#BqTc&Ldx(p_I^f0lxtr&G}5TDz7`YGf^lPTGS` z8fo!-6tvW`9;*IMJ;HA#%lOCGp`8?OJGI3aR~E98rT*sKhj%U6u=-zUnEgv_X zpFcO0ywAtF>3x-MLN|EV8Edsv?H?YyEEF`7?6RG;3e{AV)S zy|ab-MT}AWzq9ReMlRG}W}MrQ|EW{g#`kd!t5Z08wpG8%JwkA9FUPJ~TN}Tjd`o=X z+E0}I(6HW(v+yGmr{k=oY`G7Liqt!M+{s;czm1c)?$5v};}yL-3mk(vH$FV7HomEL zOZ@r8`%Hh=Z?$O&+L6;tU(nc5rEEiN2W$(+o;axcvHZV|E^odW-b~oCHU5m^Gxq6k z@F&oJsBUR?9<@qA#AVQnw{TF)(uDJEp2{vYF+$Q z?EQQ-uk3ZqlguNz1aA6AZH;f*yT_!z)$XyV*^D}1? zGqpA!-?{YL+a^wlug!pW_z&yFf4FF*dEStEwzF)xi{$8^vwnxcm&aINld=DDf`T)r z?RNIpYmkwbYuCo#tuW7Z@@~X#&JMDUg%7tv(`~H3D@NDGZ)5$vxN(meQ~8yfrpApX zO`^MRho%wGG>5%m?t9o`%&Xi>ooCY&yHI}@nr;})8pHNmj_#0pnIc=&Kc@yHIK`HE zm3cg$dHi7Xp7=+^0~?-o<7{m(aoV;N=jKXvZXR3YwW*ql{5kqMaLV{(T(^K@2t0WN z97DiyE3)ztc4YMmH;#pWG;!==T(cP$wne3~F((%pa~Kyj($>v2$Ho2cuKF|Jn14rk zb6mfZfU|2@@O4$TlFTvZD&@N>MNc#`|EmXWjThH_qU@ z(xWXgC zZnft-JYGKo93!_bZC*RKF5X@7zI$8QVwHPiY-6r_GTy1%w#7%!MZf#lUlzIXEvzx| zNxjE=z{eTF8k6a7lQZaid);6QU_a&7UA45iXO+xz&$iu#+O#D-@dfp)ig%01XWiN! z?~6a?iHhcztn-V=L06@_%{}#p@Zv*gdu`C#c)y<8;;+e?&gj?H@Q|Cf(lsV+VpD{n z4V$7;*%W^!ehn{NevL?m{(dL)475Gwz#I69sY~aKEN^~?wYFsB*7%$|_9$H%`mr0| z>T1(&6J09jYO(+7$hF&s{TKbE+?C_(4=*mfE_uI_F@}iS%f43)4WWIt@lf5y#2(Oc zKXr%~Og~mktmz?QO;w!B1d2a#5p8C{!%wcRi!Vktvye@xk1YE%epKG88Kw8eU+@UO z6QAUp6?O3!yT2QMv~Hi$g#r3{tTXle%PX3@GA|Q-U6n6EwT+p+1bJ)mBhFl2Uqa(E z=9s14Mj>PV6Js36xNW(snp`a{ds!p(?VcDz@p3c9 za1399+}$NFuzo`6U|sS9?V4X1@K$^YeeorH`Gvzr=I|vft)Oni){5pf=Gc}u-yPif zgE#ZgFp`kv>W<3`<-Daoz46FNADSIRkjepho1JLDaGdXat! zGPSn6yt%uQ_wH@GIX{Suiw?gZoDVQ>2J`j|bKQURp7?-F?4Q|goUIimPKVuIsr++) zlDc{>Ic_TA9w4##+;>M-H231%+)J&gUTrP6a3>mk;~4w$ZENG}8RPnG*gWLH`1tM> z?xno4V60yCZG4L8%b%r~GpSE2bc;~6jV24%GgCsT)@#x-EvOOPe1Zy*7TuQqCDYWgNud@G&^&d?7kR_~kffRH}2v-68Ke1Diife}#U9A70tX zM1M#>NjCO7oWYPCM@$0$=Oy}T`ia8N2;&Z}-4c(?6Z*8|es47Uwa>Nq;3~xjS9dox zt?1W2-zwSReo_VfHqdWiZe6^jZc9A0RQmO`m7L=qcP9En=(X2V!fq!|e-{0UeIfNm zRlnTh_#yp@-W#*EqWOtYwefdrx5QswyjSVHuGoi#e7=y+8~J?oB+gg9%rpJQw?B6m7OLKUa@N$80fmOkgzjd)J`x#2rhUd!d`fZZ8|W9QEOeyo10g=c1~b<#c2z6?Hbj*#r9QwJ)agrU?s6<&c+i6WnF)?bqsyB&f+MST zV|?StJ!XICpF6>EU-{DJ!&leE^THB0%4_otCifRSuVBZlr)?vAU-jQMo(V2IuYu<> z`rbs}o$33QJ@An{r-&OQG2%as5 zXB*+!npwiLtTxu`wELiG9P_#yT{M5s*7$s6Ozf7BpED^qCEr$^uLmgqb*1uO6Duj? zU&b32KH|epemx96m;Y*z$QJopXD|-%y;)J-JQN+;1Af8T;JbZKMf2_G zB{{2#t?c9TZrsyR>zFYv)Sr{?TD@Q&{O zM04HZwfHi(#h3Op_ZuJcUjp78%(0wzt54CUbpn?<^RpgS^KZd;g_E=0IM+CPFwQab z`SO~&_`6qci|?KzEq+tVNL%{9p}TJ$eOwAbQ32gW2O+bZwF!tiGs9 z)6e#4xypWrf7{{T`Yh~F=#VvXJ9Jz*x}y2ltdTjakvXgp@%IHdH_wHRz3@-YGu7B# zJsGFUqd-nu`L|)CHBNHcoonR(G0q$6%A42k1z#Qb)|mLp@X5%yKdfEae1F~A_|t1Q z#>Zb}?%To>8FvgBuc}=ek0PUC{JLuV(COR@R~MXM{1>GdfAA7LZsu4}kD)!Ty7b8L zeDd?nyHC_WD?=V6&v6ws3?!abg|El!$8pk7e5QGRwPStcl&JgW#QQ2$ypMCc9q+sP zYVyD{RZa)`7dwrd4&Jw@T*i6zDermpH1oWAl=Esnwp~AR;`%iX)`7v!1K0yq$7(F1dBeDGkfmeJGV zng2Hwyr(jjlkugIH7)&kd>NI>mw_!{`!cdq^pns-#F6C=pZ(r}7vG7-u$nb4xMf`w zSYyC0s8n&>i{uUl=TFA4>#CEFp^$Yh{fO^#nAHz=PkA$jc<==3_R-Hs`uQM5KejG- zg)yv0A4ndB#@>1&nisOR1(*18Cs??M&2mR$q^?182Dl2q^@kL=obs574I};7?=H&x zy+}XV(5ykT{qAB-ihh##EB8FBB<9km=Dyu#&XTMLZu;ExnPOAQeIZp-MQqFdv{63YK1IeODQKyN=79fHaOY7UrhUEs;SjPb z-$nZ;efJ9A-FaoEdP8U)a4or!bAV3(X9FJu-U|FSa2D_~U@34gumso>I33tVe)ji( zF9E*;)X6`(85joM2)qJ#J#Z}WTfozS*8w{LuL17)@_7E$z_)={0&9VjflmQ12mS~+ z3HUu=G4K*#2p9lP1pecn$MY`+HUKXK>c9!W9{|q>P6eI^JR5ip@DOpEvw(jAjsdO( zjsh+PjsV^R90nW#90KeP90WXwPoWUl3=9B&Ej6`)<-jw5Hvvxrb^-PWes=75em-yw zFc0_yun+J-U~gb4uov(eU=QHAz;3`(fjPk6A3dJm1^5Cm3;0uDCa@6b17-n_Pa&rj z{q!&3Z-M^=&ITI5%YjFM-GGOIhp-0@0sjYxBXe04xF7gDa4&Evkc7!)KLSb~!vOAM zv}FEtonO=5vH#vdKCC}md{!AXg>iSD{s7P4r}4MwQfcdKm&fOcd}{oWEv$>mZ1>$( z)^a`9<8e#K8#l0EXhO{bz)Ci6d9>^Vh@sc2jzZ*)O~6j z)czigecv>PJGajI^VRmgN;~^rLsw|CbGe1bKW6Ua%{`g7kKvWn4-8SSL25@knfh95s`VcHRi|NZo*4__ue# z#~A!md|qhf8`D>q@15^o5MMSj;HgcM@L~cq9f79vfqQ_7dlY>%cwyF6tn|o?%)18P zrKZz2@=brX)Q6TiVP7DwOq`iqda-jN&@b^UXD(_McYow>a!~5$l#S5aXe;qP$tzU^S8*S&>WaU zZ6W46hMY=%>Te!7sP2MDP0iih307m`?y|ZM4Wvn%pGr6i!=&hOi>x4Lmwll*M%&{dZE#_MyL z9|L+GK<0@B8YRd*v>PSVAqi7ALUNX6EY3Z(3**~7*{ngb5h!;H8iBuc&Znh6WS*q% z%PF2Y4fo?5%)Jbm!|%~wVqK9RByrCW@+5atH0;06vdsEJ{{)Bd()J~bJhj2EIb~<- zbF<96qBrCm#r(;A5YZdlvNhk+>V1mdMtdc*r9LzN6I`_E*&dF}jqnep~u-PCetwkpSzu~t6Yk>G=scf{HjKA86??o)gSGqzofXEx*8 zO}|02-==K%_zdmQNi}WI5$4ShWP~~9ywCiH_)coNOayxCvlTL)hh&X{uNA&@;x73j z?vh8~x9nRRFW{~cyxT{A4XiU{;=nLpZ{1J)`j31kIAy(d`iy%);Is9u>}AfsmA*qS z{TsOxIiQ{7ic|*3)uR?leJS-S!mPP#D$onyQ?sM~C6N z>%P#8E+@P%^pS;2osGa1)J$ATrdOMDSqN{XPe%@YO($~|u3r_)Z5H%xrYrO4?HYPqsL)`dG|ERpq?312f<0|Svs(;n$m z(+7LjwkyO|Fy+iw^Ev#HwXqQXNX?EgH4fG**$S?En9tN%?Jo4D_1R;5X6K%+wLUB7 zvvSS^5zYiJ@R`{7axRWYEds_SYlZuIE0*#*IkUYxh|idlzi@V|%HU2(t~r1GSbyR# z)9&OwXZlg|3r)VE+<{=Mo$i&|3*^99zwg5DC59JU6f_=Fc-=B+@3$gPBJYdAuX4jV z12xc3Hti+nGUp8V1U)xc{o3QHU_4cPey#ePz8MF7>U9OaTpw*!{Qh*20mcIl?eCxG zd*^;%Lj8z9u(uw7x3d1i$c$PG{-OFSJZii#-eiJ@|M-TxMnEZk?-E%roL41o?+5R0+K~@#;D>4w|5^k-pJLDP zN$yZw&bZ{w1LwF3N0|MK-6Uu4A@qMS?J$M#18$?c#+oPZx-!EhQPmMO^ImF+ANT%py^%i>FY398h4H-1|K1)yF z>lQsBv2-7FEkHiSuTabwGNJJ~x!(y7#4fo3x}0q@2byD&n5W!hmOGN8Xp>kIesnke z45R%9+B$6q(GeoELi-)a<~Hg|Z|ILNnYom;Qr$ter}n6dn})W2bpkW>w(RM~r>w8WPUiY*;k!E)9bAFmvPs2H zY#qwHN_(-5m-cq+&sJnYaM?ae(Vt=$%Ds?G`jMK)Vb)SK1h=R1+WS@4>-Va?u{{4*P0T0uxhY= z72}mP7sB5-i#08E@>j{4Q}*Iu?03#7)^8++Fq_}V+YJS*`(I;A&Y`~B+?(;YGhg!C z@z!sv;EQWcXd8x4fe3jR%n5!B{2%VK@tyQ7b@q3NP7(a<(b8w(3Hn@Z`8IB*&;Il& z_Nmklv26j-wN4sZ(HTO+5Ba_L;-$_6=lm1?zK}7<@9nqjWnW~Ecl~}6ygtgD6a(cB zcL?}Dz=^;=0c|_TwZ>A&Ou`2Ilhj6{mL>9Yjx96Dlh{5oo?-MWwV&*MWgoQ1E45MW z&z<9zahNhXU-{8RMy2+S-R=Y0^`T!G$I03kz&G*3d)v#~NSSu~h1R(Pd9(MQ;7HS_ zb%=H3tXC+$7O~w7+CGGSMMkG}WzDF(ERO1&dd#oG)b(^d4Z{AcLQM+da~vIg+hbOqlj9UUB`4?`c=v=(2~zE_G2 zC+t?{MeJ6E(|@|YoLWnQBVzYM-GF@hSpuDM&u1=lMxay1=d!%f|C2F!UdX<`!t4yr{^K zSp0O$cPMwhWv@ebt$P9*_cMk=p`bA*L+L)(`SQ_8_^6q4(Jwyi;EC{)9P(+bRpnD< zFHO8F;*=-buV=RjLDvk{d=WaQ$ksX9AYFq_TQ&zSwC*xH*1&DxxBYs~b6Fq!_VzjJ zQ}&yk$oR*ctL3bHz~g_h_oCIyilkO)<(g=r*cbSEI+L&0r6v|PYaWsFpL;v|^OV3S zRd-8bMJwh01ioE4TgzEpa##0(gZVh1MY`$F9B}8H9$FwZK*(=pe<|y%^yIqnmzweu zhHo-nv1{>%afffDzPguhSzX9SEfM?*^et`6m=n2k`{@YIh1f#TU$CY;c>W3=r=BTB zr;GlQ9HXwRTVzw+L6bYB_`mQSN1A(}XT;9C~4Z`wR1U4=pd!+#Nb*(7q^`;jE8~AEL8o4Mee4PKE5;{Y#!4Ju~xT(DQ41MkCn!#DVX`Am%z0R+RZ>8xT>UaGX z|K(Hs|0^5L)L+4ed1FxCH=4ih81|*qjKGm*ygE`dTJXc|;B(RA$k#ft?W)I8vxMKv zoyg7BcsKL;^8Qa*CZG0Wj?PRN|sR~oYO+C}UU*lf06P|nH1pH<^IUpwfLnjdcpJwb~nfdP8W zRTfXm2Iy)@^Q@0YpY4(?0Lli1p?;N$E|&0n#%SFo0j7G12r3T6_UEQj)?el$*4)Jcde#!nc!bY)h70sAPiO}I znWkYa1$xetnxWQONul0tg=VmKHPyBh>OFo=?O^y|zwIaIiqGL&ua%myoZoDpF;MTj z+M=O#px*xlwZ59PFgo$qn!y>B+{r>2i$p0@24%R#U){-A$1D#*B&l&;Gr| ztA-(Z*DEbvg@)?g&qr4=NBfzJcbPl(q;>B@L(j`C`B^no&%04G;8D}jjA45I8#Ygd z>HQluqk*t-Qr30a6PBg;)!pB-tAV4CnY2F9&Qv3w-mgk;9Z0*B=>5RPZS)p!2Kz> zpO^JRoMk6@p&D~nnS^I+ zI`DAE!m&;(H*s&9mI1I zIjCGym5~_FCUo+qs*98G%<3SX6OCu1>=WeX+Vi9EgwILBb7ea4#D==@R23xQIm?3w zKgfXqx#V8?R`w*+SF1S0DT4-Q-L*Wah0>lWzR1YNg6m)OQp z=#rS>7H~(QYZr9o@cG-&F{Nyj)MGL_^W8iAJqMdcVvJ6@UbpD7>G96%SMB@oylG8j zgj0^NYlbJu(Ms@09Qv#9oMc@zt-*$Ktc#{i(VN9n6(u~eo_>ywu%#iJR zZ>q+kX@JMCZ_<*d|Fi8sJFl=e)bEVupY*)4#O6ma{D2qUF?K+2VL!IpTkKEun_}Nc z;``k;9-Hso6yJ#jPy=XMkswQtAqrft>cJ6QYihe~)mwj(d3d-7 z=iA=2&%=L${td)(^~h~S#;C!L8q&b!`5-jU-o!s5#?;G5`mXCCDwaueRL{8?4-hrK!X zdHAyl{zS(i8z@{lPf=2^Z;^LNwFWo?Lmab39?{ibx%7*+( z;G}d-ane=%pV>jCoVoncoDY)yTVw2b`8s&GJ7L??=KS|hn*Y3X;0gD4wD3xoeWV1k!@1s~b-+CkaoNbl{0)yYcWIs#pH^Ui7u~27ctu z9z30s@VuWEJTCjVa#O5R5}w!7fhW?*J)UT05}uXmz!S`L>5wiMM-$hNC%$qMQ%LN zH7Bc!Hyo@bpgyp6Dnyp2)}~JjX9c!#X7w(j{-?hj`cNC+WZw zA#VxatK!=PFGH968Cq@L2^88OgivH$We64btE~SmX{7Z zeplS?z^3qkB)R_QgmmZwSKRKvCM`K`*OCrA;r9F%Qx1~-Gn+ez=cMZ=((a#8cp}OE znc5EGIjOw)+x;`Bm!t+u(@I>4FNT$3c`;neF37&=IYuWLX zljt4hr`?a#nY&7x!u|Bk#Lm1qX!n9kYTG==+g4q4kO>yN(Hf`dbj@Pa{Egg8O zT>g{#O)2uteP16>{Tlo-j(wzlQwsmd&hy>+qgvf(&G=99BgSLx50C;7jPS2FM9(_G-@Q;NLr zU#6nFu{}S%~$f`B$H1dshV6SnnKp)Cf}0dP>0V+hdyY}+co)?oVWWw>A(|o z#k*3{9>uq4a$Kz<9e5(HxLV5b+>;JG#09@<|G7CGcw+7M z(>Gy*rrNhBrUOsd6(>xIXHYuu_`e!Yw{+luDEncJQt<|Ps|mU zPKhUw4m^(f4kyxYUDAOk*ghV$|D?DFvG=Sr=mW<+2!$s_KL7jaz!S+!=r@HYnp|(_ z^$z0MP<9f#$`SW8$CDiQT$v6$!S=YPIiBQrtGg>pF<%ME)JdL*0ZNryMkGqW--1TynmR$Kl`7ZVDO8sOPDCYNe*{ zGPBwAU2-pwI^yPA?qT-OPq<4u3%_I=eys5Iycz0k*Q8C8`>dbgFOzq#SEl@JPf|Wv^zq(=))mnBsJ_^ ze0kH1K`VbC?d&tiQShA)UyjjETNpBU%gNnt6LoIE_X+r<=C#!8s)C;e_+F=7Oxi7j zM_+o{{i*#fs?;NtyQqHn!ku0t0AF^{E?CKX8D4&F;7vpD?FFB_?<@84s%R&*5m(dh zW7O~ zH2!}l_`1;7XEMIULF2!??fyV5PTI*mU8x0M3}1rqMSSCv;md9rUs=%jnYZ14nfL9f zw@K~y`_|btQltj*JG9#)dfWZZths#{e0JUKD)=e#`8)V|n08f< zhm6O+@XY%<-Z6wusiQBo;^hv%pZ`AszH#&=_mN|lg^U}#?dq*{%Ws_PR_bQn4_^%0 z`AdVwr_`i&$#tFi&d^S9NImb*n1>kiAa|8xv}=)e<3mPgFTS_j=nsYUx4nx%43T5_<3w)|8jdhb=t_K9?Q@ zUqTOFz#9-wf!RRGbHrjkdU$5+b&}1LGZcsAovn` z&>u3UdE5Qe(u0i8r3b;6(1WLAPk7t?*wTaGbLm0wCG=oF>9Pkic~j2Y?)DDYgFg-# zQ@!nO>wrD@CAEIM?QZFSJ$Ni={F^r-UGg%s1NPv^pt0TCZbk>}!Nb(K@!GrL4%mYS z**CrTzTW|Ra8}Sb;MKd|?SMTv3|-^J_w5eYgM)*{fAfB(i=Q`jz#iO34SjFB8#-VQ z76grpyzQoSz#hCcWPEYJL+3X;U=LD{vDw@1+78%*)ZDM}wwu}kdyqE;7kJxU)d72u z+~03|+f7Mrzqstd9@vrIc2{)39=tnbe7fJm&&xVs57O?B-gcLEz#iNcG=A)DSJVM} zuxHSi=4}`3fIavr?^b);U6PugE_<+*8e!gc7j?iM{9DlY+ddCJFX(_h_#w81x83*- z*n@w@?(w!8*8zKwcKy8V&h3Cb_#S$Rx7J*G;_MFCgIn3(+dS>YcEBFY!A|zJ8{GkW z@Gb0QZ@ZCSZ4Z`g!gj)M^vrHIt*ygS+c0uw`LlgC-hh4Y!Pz<_^`3hK8)h7~h&mhd z&dEn!e1lTkFk%xvO*?fqUKuoA^|mWaZNo4oL(8(x#&bhPzPDW zGWPHC@MS=18-{lZjG6F7osGjGW3#s%Z>pv8Y4LWK@u___evP*_yzNd)%}f7v&?Y;#}@+XT7)V z^=XNZu#tAkNBE1N(aYP8T9^01Pp?l)e1vP@r}7bML1X7m4?lU|C6!N0e1t>fyoC=& z%L*F5_qO95Cds3f`kPLlmYqMVe1y+1mv+0=rVqQ7+I#YL_Rb*wXnZNQPfL7+ZNkr> z`NoL6QKQ~jan!w>H^O}HY7Vf4T-({e_kgzo8-TNbzX6s4F@Iqi1I01Mq@O)qpcph*p@Eo8Ycoy&!;259=90feUyGA2`G2k#@ z6L1JH3LFHi2NnXWfB|47Z~!m@JOg+a@HAi;*dKT;FdrBM<^jh7`vCpG-oR6Uy?`39 z2k^j`$Md@ZW566>6R-;~3d{o512chDKp(IYczihcf&T*D1^g#43^ah(0*?ZNz{9|? zz(YVk@F4IM;C`S6+zUML&*S-Rz!-2BunD*m7zKU;tOvFNtAH)QO5jJp2=MQ~yMX@# z3E@?{#!X&2r>EYN zd4tLr0$-GFeky2;^|t$7>OFZE_+Fx&(#<;WBYN9?C-t7pTTjLk_@d%B71)j5@!gzy zPnNfEd$2#K_|0RyXX8Yf;ERgiGzX2f9=}QJ^{Mw{Wuwwg#c#H8{_?i_ zR_Z-jY}6azi?UIP7cKJ2^>wNJ3Sy&vNIPYtJ`yx8^WwWE^`0y?s=PI&;x`fEcHVYZ zr{0srMlFD!cKqfa9{)${m8th+Wuw9uJASj?+ir4dzk;$+X{X{hzawVhZFhNUzk+%P z3BIWK&Fr9YmABob)P4oAQFqf$*{HM|=xtY=+OHrs>K6E^Y}8pnosKh02@V1+n+OME&RN5&$IDXKuO6^eH;Q z8E29>_MeeYr3c5cuXx*W=2mAD@Hyj5630&HLHzN3z3n)2-vK^(?d6N=3WYH;S5|3d=L0IumSie@HfDRfz`l8KpnUMSO$y$ z?*{%9SOWYp@H*g+fFa=hz_Wn!fdSyXz}~B_iaEq zbKe522F?WPz!|_YU>JBe@cY0L;CF%70ly6l0dE4H1-t!unZUk-VMA2SOUBVcpdNpUHEj;51#KP zd(W}HbIdu%9AnI})&jeLw}4J?Ab5e;w?Ehdrh!dhD%b!fgFC=JU@e#k>R_Au!6S+D z#(Jf~>hGsJZSAB#&NJeYQQm9gl73Fxb*<)MDE7|Sk7s!0=hk_j;7Tv=*u*V}2ku8rI|dNJaXn{(y+)^@#|w)KQ6F4;pn zBQCiqS8lPkyUA&rdsT5s1$r^!lIUECu(peJ+U8zWT;js!8gWVITsdKlXL>ko>j_m{ zl8;`D{WvOD{@dEFo73mtu7CKc1B$CcdtBcZ5Qga zttV7*$;0Ty$j^LE9k8`su+z4lP{k!eJ0m~y0d+Lic5bI_J)w$A8qlYapE>T853F{= zX|7xP*SemtOF%sT(-?5BoSz z#U%kd_=fkIx`C5eal^l%f35u+6_*6;;KyG1+RF2?eVnJ_l7JmNO&zJV-6i`tPsJqx zJ9xq?f3e1SU)aZaMtv>%H0_8FMVw&e`LTVRr{a=;9V8z#)Y|SN`#4YSw*fo2 zm^i`O?zDZJr{a=;9i*=MtTp~UX&>jQxFlc)7ihBI+OEYu&Qozozz%YT*wNbVul8}C z5tsPwU^(%O)qZ|xALpsKBwz=rul<8{fB&<6oTuWFOMW}}ADVp6+U|Y(I8VhT0Xz7h zCO2E#y=NciskkIy2PYEqS>xto_HmwyO9FOqJoN_FcJH(!E+HRupS4|+eVlii>n-=& zLE7DJZTBbpIIoRAILIsAt?drm$9Zl1LF#Kiv&O$~*~fWp{K3)Wf35A_u#fZF_=Dsf z$6DLHZm-Wa{@_T?$*t`U*vENo{J~=CZ>;TJwU6`K_=68|pU){veAr;0_iy75{?aS^ zt#SGv?eqR^{J}L|*IqSecr!~KbS=QskPk>`@DY}e{e{yOt-ds z!9MTb#vhFLie_!M%|7qn#vdG2q~&)ety+xUaMy>i}~XL;5>@88BBq^|m)wcRuJ zdH**4V6<0itnD`2`!8+$!8z1N`|~B{eRe17+Tjn@c;!dd>(#cyAIu`ZW^MQDcKCzT zao=cdx3L}mAa&e-x7LdMvK{_lIPrtE-Fka{w($qa8?Ugod#WA&;4Qp++uCkzJN&^A z?!U0Md$Jw=Aobs=)^>V3{K2$bIpeQs@z0kh+Tjmg<&4AHZgo5S!7H3+S=&9<4u6pP z@4Kz-R<^?*yu>|CRzLF5cKCxk7>5&<{b+eR{K0Krx!2lmSv&l}3+$WL{#CZaAAF9u z(VCa~X*>ME-w-!i+bwB_KX^aqA=dr-843!yioKY{c5`VSE3jO`dv> zSGHK~;DUDegUPvaj(i=3XjlAzCenVbat@+y%>e=F&41^tb($V=cp6T9<$m6v=z#5|uV z_sY9}Z99$$+-G8UzOV9<>EwNk^BHQ@pSHH+J`=n1edUKfh(3(-8S1~vtnIkZ#O{1w z>Wn6i@m6hMee3ZI@ziPgQ>MAnlBEnvINywOwC(d#dK| zbLhr6r`gMW;MV>n+1pc^i6721%%1=IkUW{{^30`Ubz@pDMdwZ(# zlV8xzIH$QCyJ(H;dfVGmm7iRIUW{{^TfLHRZP&}*o~r!hW!f3%G~EC1vfAOB?Cq(_ zPri>njdPm)UU}TwzgT;_WYj6rKjWNcJNvJ-T@U;CTFuX8v@_~xskgY@+OC^@e68}6 z!Sv5Kr`f{(Yi-xnKE77@$wz5toL6sV|NXON{JPl3*D60b1HBmM)f@3Et@`X_A788d z)51q1 z*aRK|8^AZg9pFK*7JLoV!Tn$*_zE}|tOv`%KY*jbeV`ZoZ*UN}2aE%M2X+B>flhEI zc!Bzp?O+S|Td)b-3O0bxfjhu0U@iC?PzN`GmEhB$y4R!z{2}-&@GfuzcnA1j-~ezP z*c*a=(%3Uwzx2Ty|4;9>A_@Fj2+SPT9P)WH>CCHM$97pwxy!KL76umbdg{|OEP z7lU!&kHIeBLeL351gbih`Jk$E`43Rlxy%7ooy!BDs&knIsyde+fvV1BI#>zb2hIhj zg5}_3a5Pv3dck|aLEuC%4*WjY1so4L!Mni=+~YA8YyrOqHi4tS25=;}11tq=!D3Jc z3&BcoI5-!~2g|`+a5SiaUhsBs5I7W!18)VpfH|NO91LFI9*<101-u1p0tbQ(V1IB2 zmXnBeI7^cW0BZ-V;^Jx8)AIL0{}`-8EMJ?@p? zTHEcgj~9(|Hrg5c*kj~Ft?gd0kGs@9=0PvUK1OVLueIGa`#g^Fv!14%;m=oiWw5o~ z^Y(chbcc^o=QuJc@^RvD3fVCaxG)8>xZd>Q2;>SPH&hY1F zP={!3$2pDNJ+|tc?M3uy`13sfZKUN~p>Csn+@a3dve2jD&lh{;`_^{9w2wQCb2jv1 z`19mdTvndz?c)yPoQ-ydKhM4D5!UNHWgmB_bGCByV)*kDd9Ioz?_RgoKJHL{)=AnK z{`@BDBCPG6w2wQCJPG}C>vVfR*`E(F{CWK3x2^4-u#Y>8x-0Zz*unM0 z^j4m$?c)xW-w4>jCTf4I*L%!9?oj!SfE_%{eUz5Gblpn(xWmYApclgqKE!iutn2ns z`?$l%Z_v)LgO6yk!Fs*r_WD%$jli=TmR_58uUlpxcNle7=+m%+^VpB9*W;YV$Um|E zTGz3w+(y6-&LYobZO1u{@%&8IOzS#!Rd*GzgWRX~rX??3x5Pf~PY(nmw!7ax z->32#0XxY3bi=JYr`ezDsl3Jkza1>49?jZrioO4$@){~HY}mmD@{-neoYUCd&tueG z(ax}gMdXq#dEPqCY3%OjY2yzTaL#RQH>n-|;Im%&Piwm$w8I~~ne#Ghy9w>^2Xo1t zTJkn^_t@*RjX%h96!%!$jcbQLcpG^eYr8S+@CP%oyViE2+u;um*p!+w;gX?_2Wr@%HP|@DtfjA4c9~&R?&*#=gus+LRz- zD9(qSoDVzr|51y)1dsiGsrF}87kwY{UgP}rbhAE0-fL4t|My zG{g5y5T11gKmYmgI*YuMJ?!^+<%dSV&+tR36Psgg*X_Iac_SXDZtHeyyRP>8ym7w9 zcp33H^+I9Rc3tfEdERN`+eRxUt=B_@pusS;;5ya+kT%{e(0U(#qdL&oay@8wK|_M-o?uKOzZpm zlpp#A?dmz7`Iz&WaL#AcJK0;`m;9p`@}-=UOb1)Q`@kk}D%b!{26upEU@dqrsDl&1 zO7Q#OTyQ*C4&Dup2FHS4@OxlCa1_`L90`8I`A8}FF<1<~0~Ug>g2TZV!F;d|%mtqW zHECnU>-Oa%m6dN1n?HHD>x8zgZ;rTI44O1)wxV6_zsv1z6$mM zUj!4uIxrr567+z}z?;E&U{7!gcq2Fli~;k&?qCKO4JLp$fL+1Ppd0K6e!)3O6nGMh z0N(+_z*oT#@I^2PtOH%(lb{1!27cXx>w{OpDd7KtW56q59{44g0bT?Xz`uiC!SkRS z{0#hpbCR>*N$?Z!9qMer0@2c7_*1e?KS;9tOb;0NFo@PEKD;Bhbyd>70B zkAex{5wI)R2)e;sLwoGpKy+&uC}t4{OIEJK_PmXK1Q?Z6$i~93RZAUy{_Y6%nKa0?dk*65V^Fu6ty?Q>8U4CEXYu}=sac(t&x?XEL z;sLw-zRK5bL!ZXE6?u`Tt?h^h?4F^i^0fodr;)E6j_+n|M?7Hn3{916Ri|atv7yh__i-!#{7c#y=T_t?uBq1{9>&A#&enEu_VJwZLjra%h37L{;+B)W?c+J+CkO0c5_++=!~eIt zk6Yzy19mWuIMC|v-ee!oDL*-22Z?jPXKfd2uTSMC2kapA>Z#Ut!~upKRK6e2jq$%9 zOZmwGJ4oHR%i4}Oz%IY9{N#WgB;NWTtA9-#V3*%lesaJL5>xH8wj&NO>>%@{^?PBI zpB%7*wENoXCld!4c98zHelLvjlLL0Jf_gw}JK_Ml=XEJRIba8A_rLF2{AA()yXSQ& zKRI9r$ypOhph6o0XrDZeX`be!~u5oyz2Zu zUpku=hx;Ve^w`&y#C_6ZXIH2|OEY$hEvV&#B0e>S72q6w| zTjGG}-F$JteP9cI`c$w9oD4RAW#A6*Ua%IN2bFCAR4(T1_ zxKPG*LLKDDnVUcH&kO3c)j7qPo0lG0!L`G=MoL4RzLIM{$F(Co&3{+#xhY|7KgM+* z<+{v|=zQwet16tjAuGYz^iy}|PxGkZHs)9j@8A1X<&oLQ>xjI!;}Y}-koOzpg&^-f z1oPQJfm+kNWNmKW{H$d5^81yIb zFy7w>4+rlAcVO$(8DtRp>(PnlJLNf=PO?VaaE*cE*FDhtt3JIaTIKrv2iBX?t$GG` z7;?j$ef2Z6{Tux|P5(~Ozh>56D(`gC2 z2!|Z&NX{VF(bR%mCvv-6EuAh#28BP@I~ zta5Mm?Q?6;!zJXZ_dwFe>UU4{(|>^;9>J$tjvk&w4;AR)edNX>H`*fCW0i|vq5Q2l z^l$>X>iwDYv3g2`^Fwvn5ITskVfLmd~WI~Yscw6l%%v#yyX5FY4l3Tfa4RXGBYJX*){dWJJ^6mQ;l&|Wqe@|p@Q+u~3j2agDIh=86 zVV}NR`#x<2MS%dHS71uDX%lzj$hM(}o4em96Z*^VeC$w(hDHGUrM3&(G^{D_(w1MR1CT6M2`N zdFaO9KP#UX;Pd5owMQr4)&AH1_RE+b*rOAyXba4 zSJ4sOxw}61IAd2Cp~j?Zz|VW~pXiP8lkFcm)~MW%(!XCn%UktNjhoVohE6u~TR%7d z82#AK%ikZH@ln@_{>!!3nc3<(sz2&l9>_q?V`V(pK6^{F@KgbH~+{y!(SYW&UQYEPSkyvY8|BVo#wpb zU6r4z<^IgpW7k#n)5;6`>!1IsCRfc*CC9&ZRbI`5Y!x^A$7S|8N3?%EouL25`u5vn z;yuHsu2*r}LpzoKL~ZfTsc+4lBZipmqU>>VAY4FK2Z5@2R&D%Z{$XArp z?=r^Z;MH%QQhiW!L-n!xt_!~BMx!TXBkEX>YHvOp`q0i<_!KIy{GgM*1QWYrpXRZ* zG`l08YrPL1gx?qNdkt(cc~Y0X(?wsEZk1g=0k;0XvZ4Mp@BdA2?6~oFeyi5rE>g#%P{tbWk>jfL9=KRi>3zwgo66-iW#gV8_rT_PB zGJV84Q)k5BN@pr2OlI90>$5yaPhmd#aiz_E(~j}1HpX+{x8wOSV`shgU%9p#Pqp?FTG{X6 zzrAc+@BcK;|Az7T&g))p9$oLcHov#_H{zf4*FRtWncfqqCsDCsS@O4ff6PYjm8RaW z*H8cTjQL5w=A8dO%+HpN|CafAcRS{1v^hVo*Pq%LM|B+bC7x$Q+1dBN_uPAL_q`$4 zW*o0~z5iGK?jPsYd$rnYefIgGohsj;Vgu~6Z$0zOz{`w>bseAUB5^6TJcb zCTY3yH|ExFTJ5R-F1-b=SNQGq6lb-E1ordmt=IpD|Bmmp^YUAldj$GVu0h3w@!W$( ztyyE77OKDaMyv1n&iKCG|9y!5yxsQ)&F|}j^t#sH`{nb@XG4CyTmNP2@BQ-k`M-DR zPuhKd$p5`lf6VTCp7HFH@6eaoeV>!-tEH>IL;s20_v?)I+vDnQ*XP-N&odN|&-cUh znRegT_`e^jPig%<_XJ+oUR-Y;{i}B5dcXe{{_bDrfqB7mck1x>l|Rehw#Stv>uP6QM!*~tDe zvcGFx`uVrpPOb3DVQiAsPQBW(m7TH~pFqEQ<{B}s-)8)~?9#s~=U?vk2bw%#)9>YG zzy0zupTF#jugv&N<=Ip&Y8m-sb(W;!`_^YfIS0A_9~mmorpC!Hr``TY;6fXS z@7xd1a!zj}KjojyvwwDd<#)x$@a!mZv>J6gH`-j|yVlF~0P`4Ami*Y7(WzI**%@A`rM@vI{|d;Kr-tDw%phTrohKfgRRj)A#&k>@zt zv}rwmbKbiAl#1On^675&&P~kYD(3O>s$9-Nc}F+j)v#6%@%h(I_oubQcvc-5_O|BM zfZhJ{i##iYyvk3^`Fzs!@6M1HQn6$LYrO*bl{Vb0vggsi*6TFN|L0sg)Vw}(qS{e5*vR3l`DXpUpI_^FVrTc3VUvuw zev2lTkZm2`Pow^C>+?Iu(`KJm*Hyl}!jRUf!gpJ%h&+*>zOMKEzw7V* z{vX_8@2}Ne$6q^ifck&>`d$87otaZ?orgWi9OW!ms#q_^zH^GRKy2ah_Z)^@T*2SN z;xcr{Y1TjTl^*=|Ud@+JBi(C0WzGlY;n-I5`uMl=I+=4xYUFl?lf(DxGO$i;)_XwS zb=FBT*Rhl5*Ppt^=ihwu)Kd5>zc6n)_YQI$bsl2vgW_R(J+5J0M}GNgefVW-yQmMf z(T$R8`};lAEnnyN#(Zo}*B9^bt#9N1T7Ug-=KsIRi)i}#PN$3|R$Jq8>s}S(b3a*T zPlw#i-`<_<)(3kWGM>*due$Y|M9$t-T;~bWJ;@Hq<#TRD5P30&_&NF5BH zU()#i!}Y#XsUP5TiZ?<}nNEEfpJz5i=>29nWCWkL#YO7ra~yIPpFgjR z)CbIW_;hn3QqNpy>LfQxAH3MqNnMnlQ(@}F(LwiAnS9DR=G6IYo!@pRPt zRGT`f?5HQNF?B+&Gj*M*6K^LyZG)+k+D>}^8dE2(&U(fsQzw%<>seb&oxIXn&)#b4 zB%zBwWV?S{y6Ew{95TgOaimJ^FPqjNAJrV3;Vp{$PZX=>OPS$XD{k_mKk+C zKl|pJ^Tn0DjXIva#Q3q)&c$+07R(u05cL;s>MugOIq-Ej>+huPd>ol?S7z%^fSzT;z*5YXT5_!L)7Ue1AT|UuUf63*Ly&(>HA;KZQ?dXtgH#lThcZX!{V-1l5SW5fc zX8aj&ik7W!KEXL7GE{ByqsaJ3^XShwkP$>aG0ef7cSucVWJFWLRPT@<(a*WyqM~h|}H3P&#oSBL*2gkP)qPa?qT2jvMr(L*~3IyFu^UXwJKa z8}yW;=DdsRs`oo?&b!L4din?Eyld&I4`?>$U2e3VdCHu3Pe<#6&zSSh-A&IqYtFl} zZo22ZIp+1<^!SVByz_L|6R()_uA;l%=c>t}r8{|br*AEKd+4b_PTyLr?V+cIIelx< z8Kd`)a{AWdg1I;J$t^%!4t20 z7MdI?;`R8&rcRpU^@IvjCt8A@RAuUf}U{KDfrzNnRg4XOqc?+Fs8VlaHgX9>3MpNm*Y#al5IL`o4Of zT_%UPWIbh%sgufNJ$0X{la^#Xt=`m$H%0Hi-_*&|DSF01Qzx!eJ?oIElgX)icB9Fm zK2`S|H92_t>G8)+omBMG6Fx9?(%er^YBqJErRjZ7nS5%~^prEEPMqm_zq6)J%G34q z^QKN3()9rsO`XK|*E6q}I$7FZAAHr+$;tkDj>F}fx77T3f?U3NTQfk94|DnEiDRIi z80GTKld^$&pUy7dTx}Srr$oDaYbS1yo*Luwt)0q2dRkAHZ|$@U())W{zO|Eki=L6_ z@~xexZ_%@oUB0#B%FwgZOb%rkx@Vxtp`J6QOqXx%crx{b9G7qHRAlN&LtVbL)10aI z)l5F#EIlRPm`$w$l4+`wn>wi5 zb>bPOC#^GeQZY>LyTRnsGE7gYF?Hg-UGKNa)Jg5_dioYqC(b+c0b5O-Ouj?U+-~aR zl{@soy9}K)#;`Bu>@oN>Iw~BxXP?2RF}K;F$Jd)W(VTkXep4qkPQA}TlY`TxryMeM zQtr}I8%>=wxb(E6rcUDAdjI35PL?L<8SHI_zZ0LJXR*f_{?04$dNzBV;d7N?PuTMe zpUZ(gVed2ioeDQ=$JB`^wuiNR9vztdLo?Cs`U=~(M% z`kb18Ke4w_>#}{`IQc zB>g15*gn&Hs~&0Y;T@3|jlAR_wJQ<&EW&qDb+q&G zT{6Pl(&r7H-S9NE`TSPpyifAmDURE86{Am}PwIY&v0Ohs$}RnxG#LShv;1}|9M1CF zRpqzoTj8)5T|W+@`+=hxg%d2o6W#FgV&R{TJlQ zD^?Dkp#csf{TyQ4(s#X&gBtG_;6OZsk2_R6}t-^}kE%|rEi^ZIXc z{p0HT9=F72aeoun_mArtejDZ;X54F_#`T1MToc_sn^_sGrzX4Q3v|&&$F4it=y;*h zahhAEAY09^$>{eKva8DOpuUB%K=yseUWk4Z2Erqpcm5(%-J39izMbQ@+ZyiBN6@zk z=r@bLQ7yd$9BKl$~Wbe9d=DF!KJ!@09OL zja=hL*cQL<`!v7XL%)*>O`W!&(^9u|=iZoiUrE#7x>u8aqujEo%-z(%vHHkrWDGc) zD^GBp?DM(u6xYhW2qMRGC08oc8o3H$PvRYUvQ+ugL3y$~hFYMoJb9!iYa=R8R(Q}~ z=REmYqC?W6^JG;rwjm}@9#3PedgjTK1Ci^=lczGlL@)=r$$3&S6uD{0)znz!$+CRp zXCl9l^`4U_kCq~LC~`+Rq@R{2kBwyx=I6=k@vQN}Jb7Xw@=B3c295%!Qm1srCD~_q zzk*8>&v>_-2;q!+qFYW!Xp&UsmcMnRZh5L(&fK6$@^rU+(w%!CXSwCMK_v|5oHzyXB+Xc@EneUuzE2AL07zgB->>Si|)bo86M?5eJ6HP5&6U?30^KPGiz_@xYVhf8jIgP&C*bh(Cwf5tRX+Id_)T?gU z%3M!#1WDMTiX-Df-D}kSy4#%5ddG^jM}7<6jPZH$BIA%XF;8~GH@hrPUV^h{YM#`< zJAQheJPr4RS$R@NESxkaPd3LgU*_k@Grj23!aR8{j>7mJRmjb9NKSR0>=}amHOL=^{B_9pGEN)vWK#jQsU}Z;Q-p2WlqXw8Ab$(; zM>95C^JMEd$sfpk{9b7Bndp5EFQm%>jdVzv2WFP)|Z>}eHn9eshaQ6L6XcncpkfEy>)4`-paUU zznCD&?B$h*k$VMxS6K7L{#DUMKWVP{i_FJnwdQ-mV;E-!%)yWN?dz;L{DQ`?mM;21 zIK0oAdle4#aOmR+lC(j&@(vvQ_bzef(YPk}27NwqmCrQ`xn;^9NDPu3o-wU_0{@ZaOpqP9M7d;dbY;3c*ga9>sXd`Z!?z0welIuaW-Sw(EZx6EMzQs2KF^$ z>FIIpSe6F)VhrqM!l)og;$1jr==&%1BZ7Y5$FoPo7`eh&=BUaMI_O98*dXa2>y>D@ z`|oGOk8Qk6F6k+Bx}I@;9GzA$u9@TMC(mxIYNb=(oQ=7*pA&;5wcN%=$Hlg>(G_q= zD+`jWXJpv?v2L%c52Sf_RrZ_^lh|Prds<(F0A!>G{$fabCzeJFK3=8 z{XWOK@#*&_{W;dnUe?Vs%&i(YB+U=<I@T2rT>w)EhXHSulc_X%aI_Aow4)RDrW zjjeJfw6RsMz@g7RY*orNwrcyD$-M8am93hrY*oFX@9N9(9rf(}K`Lgi&aLRE#~%!m z_+hy+jqA1ApSOQh)~C(>Y>e?CL)X>C>TIBqITxENFVg>3b8h=?SMs%U?r4z8>2MEq zCq3sl*W1V$Xq@CM&B9H`SK2HEi)!xj&@PDKVRPK#(MJP%kfzDz{Gs1@5LUNoG-7$ zVH4BxWq%U79GEY!rC=vA^W|VVHaG|QgIKde^W{($ay8@*0rSCO%#*@=Ip#%vDe?=D zI|{i)$Q_H^5zLSA`SR*$*2TnpIWUejT9z-bPeATed;y#wC+;Jq8U^~l`|@BQ$88Qurs z-GJOf$UOk>MtHx0+@r`n4DaLcZbJSC$UnwD62!b7rb!k)#cQmCR&#rMSX@e*xqVE{ z?NiL{)tYr5-o9pON}IX8K+WwlL2^0G!Q4*Qui!K0oDGr_#7FVxv7x#q_cPc0`2Zu& z(~{E0hF;=&eJ`rD#Mv(MS@}B;VC#%LPj0F{4_mhgTQ`e&xj?P`D?uuES-s}zPI~55 zb6s&3mhA}k&GRXp^_-w!Iq@MJ!h+>gi^hG(!ODJBzlPt_r*p76gRBmV>!K$|2TQ;5 zTzP=&w#j?B1_t)xx59beKnHXf6Rdoz>dQ;J=-EAk#pC7KM&@3k@;ydAqGnK=IA$Dt z<2}KWJVdj`G26FsFLUcSW&zjeml!NZCu@?K94uevIpw|kG|5g2R{lI^PhH3h2TQs$ zSEh2^R{qBJ*E|^ke`7UzTFZ44GlOM7Fz@s-b^18#miT4++m#uCz3~b9wwCLret!1m(W%zzKjforJy{*&{A zja-`FUKzPGS5_d;^C0r?SM#Y5-7;pab7{U@Pu8`%Ej7oo_69w9RIsFW$Tjk6exKRM zX*sh4xtHhQvKubxW9je5oRiaEwI|)f_~GMikC~FKk7vG3V7}dr9*yxEZ|dLCRrgE` zR{l@*l(MdRLRqjn8>p_r*Grsg&M!~2-et41=77Y@`4J)kpPB)eOW6} z1>)+*-0fT-K?ATu(FGEc!Q6={kg#mz_biZz+nBGO0*ShVHJMl-9rKto$pzB&PUNN` zw}d%5ut0j;h1^W!jzMk?a__-*3@s4%53sLVfdu~$-uVR*It96f$h{xlr3Df>6W*f= zq{D;o9$O%t=D~Y>fkZ!y{E5i_33AJj`%`c#xD5Hzk^d;XXTke1c+Y|N6Y!o7?%eGHCNwVk6&lbLHzTC z4dy(k=%FXoU}tvlo)Uc4Ha-zK)@$s{reMk3*48I7ayHGuf%UH9H)FkT36_LfYE`U0 z5qYN8@!K)xN1v_C_syCdHf@fITUmpRpVx*2)}YF58*6ZTu+NU4=s}G@usVaPem6Hp zAH2u3<8?85&c0yzO|7%3IduNcde&%sb%DIX`b=C?V7#Za@45ncoi&lXp+F9D{nVNQ zd9yQm-c%rmqS5n~0(m54maZUxi&* zRUijknk4NHme)fx>3c9(-i**B^-!?9)lrjvjlpvG22IkB2Fstilh-?r&At(v{Xww2 zM;2K8@Xlho(u1( z$X|f`>F{0z?^(!Sg8VtiuSEWQcrSb>vsUdo8?Iz5``-7c)% z;{_7a&4JH_O^9_!d^0wo7jyL#HX)9=bq1S|pWcCBd}%B!zFmML;A)H zm(X#@?>St;Ct%Aw!zFSOyc35@hjMr)50_5U;GH&HqG!N+;Be_a8{V12C1x(XbB2p! z0rH0;e-XU3;S#h2-uc5Nq!PJ>$XyQa(%}-Z65gYROVnz3j~y-@b$E{-E?w8cdm_Bo z!@CUL8{s__-nGb`j@-@go(1n`;XMc5+u%JP-aC-L5c#{|y%^qm;avgmm*HIn?*@3U zfcF7-uY&g*@UDjUVR)~BcN6m0A^#Y>H^BRSc-O%DLu^AmJ_>9469@BY3-c+6`Lvb! z6vlko&U}huKJ5yTOFTOuYY+1&n)$RZL?ni1cGojcdurqaSqC20!9mtRBJ1D~^E8=x z+Q@uM(&7k+U9db=1R)8feG_C4`7x1rCdP?UZev2FtU#0I67<_MR3;a}=PvkoLS^a*Y8}U*=fqIC zZ#4VDJ?J_)RHl#9+@&Y=kKquSK$&2Wu z3Z3jgCoiFs73gF)I{7_1Sp}cH@cAQrs?o{I=;T#&vId6K9pLdPJobgk$S&~s93J(dGNv0mzJSO6P#G5skIV2l7%KPlg2zAL zaVS(K#KGemcr=DeZW27)*xjR{_{Z=FbxOkVP$@`fY$BbK^g*cHIf$|8J_{EV_N6p{g#OF!fGF;wd-%8yI5|^ZI z2idz)cY(_1*#qM9r0xUpc~a{^e4f<(AU;p(LC^yp0`YlL8^L7oD2UIKdK?@GegI~I z&0r3A3LFZa0X6U}m=B%@3&D$EDR>1O1zrWmf{r`o&GBFmI1vm3%fKjbD%csE4n~8s zz!-22*b|%&dccKXBDfe#1}nfcunHUqt^hN^RbUQS4Gsm@fEu_C%m+7sg3T^^N zfm^__;8t)vxE-7b?gGoeJ>XPuA2=PX2WNr%!8zbTa6WhlTnILTi@~E{1$Z2+0zUv( zfX(14@Dx}Lo&nc@XTf#gd2j=G5v&2PfSbUp;1xq9?vy^8@Hs;@#y^aA6*`}5 ziPXe9ElgTEfiu9a;B2r5I2XJLTmbe47l8@j60k2=3HAe*g9E^oUzUjn;;zX!X4e*|N}SHWK3>tG!C7MKM72}}Xs0n@?vz(L@j!7T8v z;1KX6I1Ky<^n#y)1>omk5%>i-0=x{42LAz$1HS<$fNrmNCxM}0IT#5}19^{;cLvCN z2feew9^hQ?CU61R8(ah?fJ?x>U?tcOTn-KZSArSfYA_qr!)5H+a2dBgT<+c&&RJu) zjNcqC6P^thZCkkH?g*E>-QkkIH(Ux{4wpL{!lm#)xD>q+E+vPnoKwyE|tOb>Em!&7S8h+&V|eJ4w@8P2$x5@XmaPJa9P<+lOhS1 z$70D#eibgOdr=GKjF2bds4WSOkTpq~j17;FU!+hQ)geOGrE4<2ON3Mm(nRYPAxpC~ z$&HPWsv(->_ll55haopELRNTrr(9BmJXV0*ln7Z}gxvH9d3*#put5>>;D;Y((lGlQiP&fVcP zo|~=Cv+BrYj?*K=gA7Mmtgfw%ki>IdDLBo&w{3GN+rt{djaIK(F zNI%-nY>3rMHbzK)bkq7=oHNGlyI+Yg&UTu9_sn_7E1gNsF!&e-amwQ1H7le`vAP} zNA4TQoeA&5@O}{aO~{`I?_=L( ztoM*V4EcXXt{1s~g?B-b#GQn9QIRBk1n&_=lJqIOM;A%o&yhP0xnF=2z{|*;gxr6? zyByx%z#nY_*L&ZGYSS$N+` z?f*7-mmqfsa_<6ngJY1p7rFOP>;E#me?Xmo1H6BT+yls+0`E8AeLwOKBY!5mo8bK* zypO?q9=zX&_rvi15Z*sQZVPgM3h&eKUWWXSk^d;X&%ygKcwd0`6Ue`W{3nqs$bAal zU%~sA@OBnU!mr^STr5d-@D4AQzRw`HL$UOG9_#|XfZT4y(*H$x#}>v1EOU{L#q&9J%9=`vtrw6ieJ?cu#`&Kj2*s?{DBe4c=~Q z=4T)`6r2r4Ql~x_xt*w)UjXl})XOh|cMt0Immv2h>f|fo-J2Tu<;YK?g*I@!alJ#f;w#WiI*cdKf<0jM99n=G$}a%b_d^xkOywmWaQxpdGKcT ziKYmdAJ0Bdgdo2d`ClP-ByydRvfz7~j0=vGhwnyyc%+nlAGsYOrTkua zcZrlKli}ShQl{Mp@7PG`quwj1-J}oi6)DMl4y(OMFN}*+_Me)-o_a}ABCfl48+z&^(<3E=&-3DY>0<^(O7>d#us;pq44|3)$%8HDS(Vjsj?Q|Vo18}| zv3n%(ekabjvLYpswpA6q^!y=k*huV3yH<7a)iY~58+Gw2?->$K4Sxr0)38YSEYB-% z$I@qSqzpjD=PkYTy9y#@WKpDqwgffxa6EbBGO_D~-Nhmf?9tw0X$is}y<99O+20Bp zisdwWT;YLYInxW3Wd}#qwEC?9s7e`P_p&dcRmMCSvD4ESAg3*wL0^ zxsryxJ6$Zz1F@qY7t4uE?C7~-IhBJQy-+NF8;bl($k&i7$jwLYSI8{{oh9;FDRwlt zM7|h>9Stv$OJkAWp+qi^M>kzcL?*(!TZy!k!8^7@PELh)uM#;u9l3EOa%L8ClS<^% zIbaGnAGztsT?p?%CGz=VcxRQ!#R}vOL2ebihn2{c70OPRNb@Rq7nI0}YIqlw$f-5h z=N%EMhK73<`|Bm6BW3J3>Zx6tj2ss!kB5L0zzA?sq&(4)xm+G8Yj0q#O^cMLx--{i zM9R7wnai^yrQ&Ah+}uc68qZu_5GhrCn9GYI<&jk8@{&kd(O<(}BkvaEEe8jKE5TdA z)sgb#?HcwP`MJnni~QlpUmq#!i}BSqMoQ&K=5lSMEc+gFd2^&Jzni)IEONh(+-=CY z7dbn?$>47AK5#F*e+2KBk^2C08<6`S$UOk>hv5ANynhVu!|?u3csId&DZG!t`w@7* zkNlq@|3l<)H|k{548c5IZqbTcx0f$?Bml~5!*pDLQjzsQ= zDB1HpbTT?hYVJlS&Hv@bCoDKd5I2Yaz z!FvI6e~jEk;D3Tk;Jp;ymGFK9-pk?rGkC9r_v7$hjohCjS4Yk-kh2#2FK|8hD{v#c zpN4lWynh4l%~6s)iJTz5aU0v?>2j^@c{WOt#`)}xI;-#Kt4-j(;Vybdr^7gBQMH4H zz1bEe{RdrBJ6L`BL>HrWa5cWKsvTT~?>lx!lz7s;vaD@=Q}t$Q6{b0;!waG&ER0%` zDAx4uD4(tM-mDkyPS*50g-eA)c$?5&S%h>`&lG+98OTGg&qU!L6E@b}d_a@76H zTa~YWfNLYeQPx}6-iVTTKIhi=)^iU>`RuI6qvtn8`D}fKM<0I7ync&EFML1BXWzYX zdg+Je=UP6uL`m3xRUEnW57!#?o~4w^5bCdgexyHsdVh5`g|5bqE0Ij>^F0$vBpaQL zpHw0_*lDf2L_A%vG1E#UzMDhxXOu`{tV4#+E|EUH98x&9M3UpMT?nz$NKz3t zY-5S^9f90h~_PN+td zI03og;3TjE_rjLLy9++%G_<{@IorI6M2;M39m`mWD zj*nRh??L#O%i*1c+?B{3f{(cx-ox-Qb$EO6G1tPo03UNbyo->(5&0vWGNBgUqwz5} z!+RV)=CkmgfRDKi-jm?H1K#Dx-HqI7;9hVBykCa*YH^{U9g^2jAj^89_szp)xrg~OsZbtGbV$*T zVp*BYxQ-~1$I=|KELoE$n}eDn@quQNADG3t<1FeyX9sCw#Oc#DBUXQq^G5X!j`?A{ z`-*2D%;(&3KF>c`5QV+Dk#|>f{`m0C;6N~*`&=@4Z%7|%;c_%tl!_f2s^PEl+^NO9 zFZvehVl`@}26Im$=atiL1@pn%K@XVA{c(jn2YNU)R;ASB6?5;*SWTvnbjXZkO=f)0 zAu~r&PkT3*2!0-V5Z;f#y8_-ngLf6YABXn}c>kQ-MKyJ)zn}&@k+Z63zb(VfG zZXI~{_iVc zmBD)!yr;r@zE`GChxbCS%$Nn=#a@{?2b>7bhxd4|%vuQVsqkJ5?=pB-z#wUG0@cHSk>n-%X%;hUpe~Z-Dn!c=Alr zY1_d~;4W|rxCh>Q;Jpvt``}#<@1R_nz8~K8@IDCN{qQ{m9t0cVeF)x1;oS)DG zK~8Z+!#m6=!RMJ5QD6*wJA)4N9_^G6Pp;e-4d^K=8nD3NsTj5>klQo%4!qYe zzvsg{jCHyY-mH`9i{Z`snNb1Xb3 z4<>^L!Li^Wc&EX;5#E{bJ__%F@IDUj9C&{K-%;>w2BX1K@a_rkGw_aq_gQ$C!TUVC zJ@CE=-$eLc0Sm#a@SX~9hfBIohj)-mdT8(tb4g4oyrWza+Zo=SUE&-M-)L|m7~>LG zKD>LnBzP!1J>V=b5zJ(sB)cR;W1ghBB=jotd!S3g9PrL`NqBy)%*b&`B+vMsITTC= zHJ3yUWS-=^q(d03g>* z>I$MX>E4-GoWA#nrnUg?F)^H_qm$U4oaduMmj^_5u0#;-u4HN)=yPxySOX3O(NSsi=3hvi z=y>WN&~c}U@I}YbW#9&ID!ezrdpf+gz!1+D@YgVpe!5AQYb-VX0|@ZJUQ4e+jqcMW{^!*>&S5ZnUqL-5`T??z2J zY=`$zO*-y^_i=ddf$tgk?gP()_3+O0O1J&+J`eAM@V*G|L-4)=??!n4f9$<`d{ouB z|G#H)As4O^Nbttw0t5&M3JR^3Ndk(9mmX2+_t-BJ5-JK-&k+?*ZJltbSg>Zdv3Ocf zofuJ!NYf}@dNTn96qSIAdTNi81mr3ZL14V`dw18ai={Q-rjV=U#nX=khJddE_$nw1gRxiUQWjCpr<}|4TY(omZdyPY zputAYD&;9djVVc@L?-X)Y(l*@p71#qtb?uUT83b?C*yBfHc0QW<{3*O&;m~t6q z1h~V%{TOgB1n$+q-8UF}cMWjoaQ0q3aAyT$?>`H?XL7IB3zX2M=`X-n0Gy4KX_PNh z_N3fQxd6Cd2i}K)x0&)n&UttnxF6%Lo%ewI^J&|_shZ9n}>mWLNK=VDDWchZ=axCP5A|IZw|)Zu{fh=O)$128Ji#ed^Zi7AO3s~ zx%t5tz>VA#Ti_YFDXs@@Z>M zm2wI2-VMCVD1($MfO{EmR{{45;I0PV1;G0d<$TJAf%{?LjsSNueDWA@j{)x0zSz<; zgRz&RsoVOnf9nC{>{*^yTbwb%c&n4i$EM#0)2!HY^z)mZR_yr+>;>t|xe|=$p)B?q zUdX+NIh^gzcq-4NWc-x@&Rhc@iwf9>2p;Y&qy&z8izr{G97D-C?j1)topOQ|TMfL+ zF0^7#UKNbp7i14J<6l0Rl5sAdN*rYg=NU}rEV!A$*!@>=E*yCMgy@5rwjr23gE5)?n2<63*1G(Js-HMfcsY9t_JP}z`GfE7g9D;-VNMu19up>-UF^B zlrK;&qkNWf1!W^;73E(jtATqBa6bgxj{*0?z*`Tz5z5t+j{$cCxK{&rU*KK?+&REq z58PS6{VedF3A`^*1}Ogm+y%hh2;6DF{W5U(1n$ki{V;I94%{yTcQf#Q0K9KovC2kk zn?LN_*I8gO|0G-NnIPA%Cpmh3k>5d9%$z%UNilcuW|(t%E&k%~1)H5iJc@lnrQk$& z0zJan&lYEP#-D|{n7bqApqF>CR^Z(OzKOFBcXQ^I&KtRO4EZs>V62Y*leq(LI^UP_ zUGE<(v<|=7RAg@*#hqI`6FmR5-Z|%!|6_l5|0jNb_&Dd1Xs?*X^LO0m{v4ehImRvl zC;9weZWY-Tle^wqRLb3*A>h+qN!>TrgF7L2Tf^Cx2#q+KFpaYbb>EmD+$4jWwc9Mt z6y;7M&b^-2G}gYX7rBP4e+ae@|9E_53+HSKwt>7CkB1GM%X|y{9N}zUofUYz2YHV^ z>ZPb|ACnvO?#AOQ)sA<6+MGu|%YNyY-`r>TSIQlnTl#0pHIzDoJLKM<#Q82+jo{R3 z9AiJE-#Ev!6*!!`=KOV+J;1#Pi{1PCX#bTFpRLS0oBg6zj$L|d5WI(fRl#`YK+jds z^YI1f2IzT`KEm|DeQyoQUl)Bg(@$Exl)87dL37<7 zvybz|M?mvT-XF>Mqe;nibC3JYnX&!7I^|BC4cremn>uTgDz{%jon3u`u_@H~s6YA} z{<;z#xq1-iiuw!ekRN~I7wBWk*K$s*{H#YYeOOs#BRS7IGQiG7b_ZL&&a=^h`Q!%Y z{>nEPSNt7ullacLSJ@X)zD4Ps&+5ru@!XPFu%aZkma}6$`qkW85{t|)i9N|P!%yIy zdPaslK7dbS70}O|p&RNvyFJV}o1k$n=hp3Nw5r8NH8+R1hk)G*jId8fwnU$WZ~Gkn zu66MPP8C}*XD)%CY~<*8>v;Q4aP$Ill!F{C1V_5taxStILY7j&$p-o=4;R^mqu{IJ zJlk4V?A*)O=C%t>h4+%6bC>R9+J+CSmPF1sd-oor?PS`XOxwDH@KV|i(snS&{%7bb znMOVgZ+ddovg~;F-cSA2>>bVCO}U*?cuF`=n*3vU2Y%GOg8#bJXYO^3Kx^+j;Rn}u z-ft-W(mjBj7d%5}E34jQ_$vNR!Z7!PZlOQ+1!f!hh!)unu1DMOXly;WDB&#KJjU`e z|1aVE!UD##k^eVFM%ubJ&B&h*e4(Q~m@WQjhjVo~7jsXLdqLRq$63eH1M$z1zlKu! z@#^V!kDrb}XXo7!_H6DXEs2ba6s=Uts@pD{FBkz~%Q?_XEA+p6~P zV*1|cZx2#O|3@>!+dX(Z{)-~ZWBgrZJQp3Ei;m7?4k)GXiWAJK^T}VPpN))d(+u#* z*#3E(uUayN{AJC9FXyp0asFA7sh;~=xJ$Uo*R|a!GV17!q4r|@Bx1@P(dk~};5TygAQ{?ljV1ALl0 zAv4cwUukdxtUl$+#k+!&isD^K6sknBK-C}^nv>Icv|@V8*RsbkEgHEf37a8g-0b*-o3uX zz?jUqB}3xZVNTm!&dolHw%I@3F^>p`S0#7FGxIHH5O5y|{J-{o<}z@+1RZ4h-r(xq zRL34z6=Ke1F4XyBZH%!N7$WpF6Q+ZuB(ooCFr}ut&cu;MX^y z-&W|?pK;vd@3X%J`ei}CqtNdiaJmlqeG2`~AEiBkd3Gc8^Ci&lcjvaRd>_C-i1N3FBW9%(KJK;_tlQm4E-4@q75+ z1OLXKS03NyZyE1@G2WT<*CEfe?dY#Tc4=SYWWY5ATQx%YFU%w27c&;{WA01EE(|f2 zy}z&Ao(_F8(CO2B{cOtEQ|R^L$M_SEK^IoJM^x?M!=pET( zZ$r20)M)SP2Hi?*~+*MA@fJDGeeBaqr=7Mk_j#y&Zm4G zdW@rd%H_j&`|rr#tgQI&hxm@YvF)pD=MG%aV=w%d1kYA{ap_y!8{9C-O4U1 zEL-}mm3PEX4vroE$fvGobci{;4>*cZe-QYIhvmc(zqvo)809wVKg;+%epFj#K4x5k zB>Zzq#{+rAnMeEnG$ z1Qyx4vLAM07atCE)w5Cd6668v{t4(oes|!UVBhsOWFg=E9vW*$fp3AH(Qdr#wG}wH z760}0_z#-`KJ4JX-r|4ii~l=#Z~$@*58fynANb=WHmlDPu3f z(}UpYL9}^-Hgjmxz>J>HMOWl9&Ka~B1J9FsU~6PrGmQPi?@NoAANl=5(FIy+kHjSY zkH8jOS&V2eop^}ev)#WI!Eaz3;gV)AM9A^w}t`K>q))% zK1v6=_~d=za~FN2@cs$j&*6RT9XaDAS1%#U;`Q<@$FIp{ZuRcW*iF4*)Z2rPQAoW! z=G6FkpL?8QH`8}__-;(VaehB*#tqLV$R z|7d6pKZ2ty^MAnM%{Ttq)kkjY<+Lvx9i{E4i=R(vSAAlK)$c&ZzdM>edVcIZcqN2f z?}sPup|3>R=EFzQAuY7$qrC&b3Z9L;`)G5phjR~q>8`H<{yZFg44p2gj_xLxeG~+L zvRmX=9HhP8{O0F*BK4nMuRTCd@I9Uf${CyNw2$fU za{9xbjvYgOuBAWOJ_CUNN_2{`U5)+Qe}78?&63b%!ojDsF@QFVOw-N@`V=311zhMJ zqr*m{i_D#RanBz4#9w_F{q!G{|DgOGM8nkU8_cIGxK z&DB4(u06wd(aM|!2%e{753Il*m=3N#M*sD~9=IHQ!!K2D7N2Kdfe!pQ3EsjUP`gn+ z7g$#HL7u%+IqSr8Url@K-A{h{)`?VW+xxzp<+(}0iM}M?7Ax7eyfB5chU_u6a428g z@QlmD`7Y1w!Y-Kt92Wz}#>h|`dm*+PIC=obCBTse9BG{AJ{34LPhANdLF^I_mhS+| zW$>1KtI)s0pUl_Z+;%he!&H7t<2OscQQ!M*A-|mlTpvQyzLd|zFkmQTX3TMkX)={@?3;$P45_1^y~ z{C=0!dwD+ik&G@*PFj9Xvah|8_jA)M8#>vX&6chI$y?6e-|oayo&+{yuP4AY93AlA zg-iZshm8b&yckPw7q%PmMdM*x0&I@}8@gwPY~%voo5T1YXZ)KO{~pGFqm{Otc<97T zU&fYue98NVGw02>l9%6)4}HJSns^T5IPzujuNP47L3rdjc;sDpWTBP4e2{S9AGGBW ztN;E>!Ed?MfBDX&pXd&uiMf3pTxI|^>Fzd z^?wTvpQoG&4zJ^LEuU*Vd@gq6N^&b7+wf+s-+ zGU2cL)9Y5XGk1-#e*o`KtmRIW-*N9eI>wpbh%@uNg!o?YADRlP@GiICC+YVn{VvT=`~>@L(X11j z;IlpOcsl*o`O}wk=JdoOU*?uk+=sI^rRVas-SjE>#HXw(!451P*SW^vV@^v+kel>4 z-YvqWXI!zhDVfW+rd#&OoBi$BI5T8xz6nlq@lon1zp4F@(H;1a?z>H*gR3V*gMVRs zX8fV9d@eO>`G^1IZl5ANKaQ-^Bm; ztqq#DSYv27nTm~sj?^3$U=BNojRBuFdwgniH#Cy&N{86^^^R5?XxQ2J*@Q0t|=mpIKPeRMSiSat%KaKfEHV*!C z*3vV%XN$E8#mRcWrzfq{{bh_3SYw>In{5H3hhxF~uZR8SjyJ*G!MF4&|4;hJ_=V_Z z`B5L#bL_j{I)4EA@TJkd_At15sf3dDU;3HP_#8ulLH?(FlSXv6aHRQ=^R-RfI9^Wh zp(osv!+VS?Dal%w!o3!&i1R%@26+VjJx7BvKfe5HXIY1*HC<%ZkIH<+Dj3(HfD`B2 z%5R7GEy{b78JpMNR`mx>)wle8@A<3F^A7zXUKk4wHuK!WyXfzY{Z(N5J>!o0tn>Y0 z|F&6oTkY8JGiDW7e=Ih<()G@~(ll(G`BwXlF3veK-RT>gczA!DXIb>An0h?k6<6kC z?27e_tEBNF6IbrdxZu5pAiQWb4#i*TU-$7}9KZ5#QdfUh@1ffdr)|ryr_)E_ApZ9i z*w$D_pMK6Wg9~ix$8&tfrk0)^>_4$mK5&`VLHLa}n$x~N*#0i>zYZ)b!14XyI0F8~ zYw}%$rzmy3cgOJVTgdcn_#F%O8GY99px=rOgulHwqGagd{wG$xN1HhtF0u#FXF#~2 zg#V0f9sj?m zcHxvwT>+fC@S$|RKe{1y2pN0;xU^;%??XKVk1*FZ41$l0?c=tw0lCsxJzrF7OX%p> z5!&fbJMnGA|38Uwe1c3}L@As4yOhsRcIY+n4}D25^b+sGN7z$*%o=Q!)mUWT`&&n^ z3`56gd{JxC4&g*L!nM8=E7Q;7j^MI$>=DCRJ4%PfJpZa8=B#BS3m)&D?DrY^ggDhO z`g8kjg&voVL;m13#}*lDzx!fWKejE;iI;vvym2=;)OqcVj9v5GX2#B%N0nLg7!_oX zgyYLw;M}wqF0!N0b$vpcNdaqy&JaF`%p9Uk-7nPWll%l5-b!&{Q4EZ_&m`1sBUW?= zb&r9o{3?7qJ6j5EJG^=lLA*Ag>QebKVXtt)!2r>@#Gb%PGv)d_VM z6FV~b5WwxNe?-8=Zt6b)E?D2IN+aHz4la}zF$>;iTwP*a`PtTtdGx;@xjg_3y2s)G zbehlj@hKZ_X8f81h0}uBm2^Y5lPh#v&aU=0&*Vx^-uf^^Z3+aXZY}!-oj`+S} zcXQAKime5)Q4G)LJ8|-I;zi1NIMmdc_izw64~kC6^%3AaTE_Y9jNw7>_)BQ;YjC(| zHhZIZb{%{&1KenBU3Sl>j72dUVpUa35@Lgq1RRwTOS+xD6@OVx+ehg48QNF;1xEEhL;cgYbRughRpsCW@w=Pl zcc+TBuHW5*c8uR$Io?hKk3Rg6B**8DHRSuMGm<&a3%S}tAM@Y=t!c`Rm3}K`e6kS~ zH#+N2&=C2K5;Kzi9mIEFi`5Xb=+J9RQp`gFoxktJ0~OlTSMj-3Co`7w;?JV->W2Jc0I$@zEte zd!W7UT)!0B4=47c`D-7v&miWa*f72-Yt<9&OlYrMqEu+_*v=!3zc3aaFf@i1kGZ(* zkX`6i$#~-V6~El@_%ZlZ=Y~Y!Z`uCO!{5=Q0od7{y8Co!u?Ae}zVAB9w<%?Zbcct3 z#7<^+$XG#V{5=F8$rt`BZ5dv0zqf+F2HMka`v1;2dN2=xXKyY_#qT${Kn<@j*RNu( zuL)qseCe(cV-v|X-+&%5ac1JMdy*EIIJ4|;?faJeD$bk%KkfsMTWDt<_R#!(j;wqP zURy$(y$w#zffkB=d-hxCJFF#AZ#?yX3_lo|0N3(;#1j?ZMY%S@i)S}$o-{OSOu|M* zZ!lMugwC-QBMRYXj{BoKPXgbt&7Cr8M&UlH`ef^Kj$7oJNiV+|D?>0D9K+vkJlXe%SdSuf8_w_@13&BoRRM{9k= ztb3t*(7Vb-I}aQcf}>~2QII_p21f&d@qBPJq#GQa;o_*n{y;{ItRN$XH%lFTxVWdY z7NHnV0e$4r$13`e{3wU!ipON51{+rMO!J-93ww|L>i9m5@0X43Ttjg9F4#cqG%KF} z^U=9w;J~BxTdZy0R??62}wNxzHM#|p7u$q&@JL6qO#K#oM$AikMJ?AMQP7G%tu z+~+%ae+hPzax)@4C!g88-vMhG_<`0V29f`U9})ys#nZJ0{~q|cDj}~W%JZr6U(iEm z^1J5BM#&C(a}@2%UXA!B?a-Vg-6~s`cvY5QdE1@F?egUchS!p+FJn~?`O?WJa>@xw$k3AV%i%d`Z(hb`<*st#J7n|Cbn5Y zo0@05J~U28e+3&n*cYuqN3MpB8Yg_Hc(dRPpii`h_Y^RhdG%@b1^qE${&scv5p;Ne z_%#b%UESK(ri`sahYw)=asa&46P=TRj_Hl=j-OA&%a78&iB$o^l=`mid+RXD7wAFz zjvdg~ri?vF`{}f=bxOr2Wf!C*w0{xw(>ly|DU}DR_-Z~nD1ad8wzFmp<6&$dr-iT1RJ;_jTq` zq-tYjf>E;7WE~fAIBBo7}n4)ju1s|3c^n z*(WXNAg%u?9}5|aDK@#-@2vGS!W;6zZs+?;_<%vai~|w3+YgG~Yu@&G*NEZ6GiTzAR(s4X7&w&L}idT=XfyfNd9Ht*{7PvI1Qa zMpim_DLCBD>qY)7w9Xo3ac32IJLD}r-SdQ#Q`P3c(+2O#AKCFJJ`LkN&Uoe1Xs!4? zU~lB?f);Qp92A4oTE8WL z?#5C|<*qEI{1s&-o$%}{=#^FIsT%aP@o}w5J02V3 zkW69RR+by#FzNfc&z9*x3%U)1tUMlftj%nfw7g)(7}gdEaN`#9ueV#6lgPqYRmJU~=$S&UfKa ze&cvxX$60>FUToskllhUMSd~sB!BUB%u~cP8Z=ia*T|bgdTG8DKY~B-U~5iE{QluS ze>HbTW&eZnZ^Bn;=Q`$3T>6wlA7@>Q9A#kAnpOyS%7CQ|TU37jP@d)UO#X)UgBJ4J z8_>Y?2fVav`rkl5im!I)Yv{o_$k^571u-|@qxlSd5swe{Y#4mV4>+HG#Jh_9UqBzq z#q_y&u<#d{2V*7hrojjOda|fB{rEOZUE9jbBRRmkMYJm$RXnP->qt8C{$~frYFlg9 z>(w^zD7NIat$39gC%9)^W}NYT)uO*dPvK6sqTt^J{6k#$x4C^ZVs8-NiOufa2|qTC zqYKL&-biwJL-{--X-j%`Jnbo;r-=5*uZ%Tjux=Lzw{%>q+Dw3ZX*Y2HGxXuE!R#MU zDj)wkO8K+bP(DKG$&=<`lPiaQa^`4%-R>8i_*{SNdBu2Tr+RbEGPImL&G5AM(@h-Y+ z4|vJ(VYdQ@(bYlnz0uVcYls$Wh`k?lVuty&0qtTTbgI!)&|J2eCo^}y=*xLWN_FH4*ir`bCW&e$$`Nquu4aJ_`J-e zVF>w)he7fv7(BVdUNQSS#KU1=@Z|4f`bp%=#P1*Ob>%T$?pl&x<_(}7Yx1KH^`9@?$vEEwd+4AU6 zv!2eHTeG+3_S&0Wb9*a>wXaluT`stA=I&%W1wMI_`onVz@FB5lsXwha&khnJ{}c6F z;9=vRs1COOL1-yE-s6|6;g{PUB|qf1+ z(m000o0HIKHORKHpRFNwD>6fFT$cIXSYWc zV%M4vJl)fCSbO%5>7P5UyWrdKOPeEWweX9H@1MPRyW;!A?&=l0`#JRVVt4mKPh+#^ zPO_IFYxuY3KI_UX*|f>nwEjBJA9!k{FYEjCsrA7Q`pMq{cN&{F_DiuN1Hu<$OV(Z- zD{emk>x6rVy%Zy}tx0Khcc10x*&wjioQ@uWA2k2#ZiuI$;nTh$<@H9vwZE6 zsh#;S0p?8PsM~!tvRh>TeLzk|6nl3+JWY(E*~BPbae2DbjXz@Zn)@j$na7aZL-4iM zm#&7dZ+mp8x$EpGe4Pbfznx+cQ?#nqwf48)NhcoJ3%jl#xvG_%=M0UsrXpX=Xv<&qLZ*Za9nma>Pw5nDcj1M`Jo? zkaRC}=KT}tpBaC#2YA?xKG_5P(|f^V@L4Hk$C#&ZSDg=@qW(&7B3|(56uKC{2Obs9 zGhTzapkA`HZ)}HGkZP{!xsz$!|TIgj{G2m5m%^ZjQn~A-@0gb7wu=o69^s z9q|oj9U$27IDDY}W$V|V-&O+;aA~d{|2erO)c3yo7~|h}`>VM-kXW}>=kZ|h?O^QO z4Nkn*gRdC5$_5>@sruG&E;dKigZh^xVc-;rD z`}m#s345wDZ9jTq0PU2bd&-HSR@_RwnzoiAqgVZ~Yfge}+$X^CZg3ohZ@2zlxwXND zA3pBp10)5Uxc~oja`C4%4Ys#bhPNvpe@zkbgWOT}{o~1%^>N+Q<$?Z#+UQfuh%oqcldpC(Au^aTq^!<>N3XVQS5PG?Fp6hw(S*0!r@PkY%f zh6i+C=-cE_ALaK?8TT>T74Dy>-Q#%|nX@hbz_?!EdrsST?H4i_&uqp+yBg1U#-X!> zb4#slCA6CdoJ)y24*||0Ven3SPw>p}QTTf%FSLenVK+3Vm0e`7hCWY1AG2Q&n3Qih z5jZ)kh4rB#d;aiX>=)M)Z?9o2@VLfeazlOD<{rT(;PD=T=qFET?2Ne%J^l=1tOgd* zLR?w!_{|&t=(`@Ac+zkE?(x%1;pB+Aw>o;S3iaN;5 z;oBDZ>}MEbq|D(v?MERNV)A3(xtl#dky1u;KfUo> zK;1lOKT-^kF^xN-P_)dHq;#&H?r7zw<~$Kk8-yofQx$qxHF zla1`$$NOeXHA&sd&Rkb^uBAQk-$Q|JW#@2iAT?fg4wsO#c`DhNN_(QwGS=lh+1U?{ z1+!UKsOb?eJBL?PrvA5N=fQ$t>{G^jjPV|)J=qG#$l;u%bYm-QWjrtPePUY=`+acV z&7sW!N|K9RD(g&N}>NS-SmW>Xw%|YpS=zb~qu*+5=sW0B=h(V7PJK>! ze*^a>;C>r;Ux8N|;gw4IRQy@CsXvTeCyWtGWT8l z7z~0`Ko}=+LZtEm|IR?$ecyB5qz^9_eRfc^L3dL{^93 z+Y|<^ZTHcyXyK#Zbo%YWFWk8p^)<5mDdTbC z0DbHz<85KQp5G#Q9?4kp8N(FX(mb*ZJ8~}1=R&)^w5M^I*g;J{!(*b28Ambay90}# zahN@I)SXH_>4Dd2jTwuw6lW(yd!hus5IQ&r~MxRLQ`OJ5&r$`3H2%Q~RNT<3A=D z`)4tG{_eu>nV6qs2kAre;-U-jcbFUVu~8&5qJ^fado?lT!JPw#g0dw3O(R`>W$IKB=GDc%p`E$%1@oZUVe%Afa;$C3> zO^LPbI@%L`-e1N!R6K8lMlHZ688>!u@N}Jb5F1GUX1)szGHXjd;FE1Kg!kmnjpKJ{ z$~h9J+k0z|uY7{Ij@F#zx9owYvJ+W5$5&3bFW=>_&J52wanF~1+V|ok$~JGwWKO44 zd`dAO=7#!1z6|>a`oZ8f-_1pHbGu5y*uTioHS~`zs@kz=kbNz1Ja2`!XEXm_2Rv7T z$Ey{e0BL!IZ|8dr z?Srd&E0kgX%3VK2rk(Q&o(RVJ(FgKS@0|lu3SQ(3g=jCr_@GCY@TvR)^hcIp+*Am@ z$#vMnyISL)|(zb7s>i(J$zFCz%tWt{1w_Tqn!|NmDzo!qV}%IWw@zog9g z@?`c3$`8pMng$&`KT$MO4#MP~!PpY|$N%F@UinAdmqz?lexf5IZj8l^FN? zgv|imy!h^&w6Ae`F~G*8Svzi~Z^c|a|4jS7up&{4BL6yySrsC)S-* z_w2XnC(^syeny<4pWk-Z4>q~RlkbkF75>-Ur}2nR@nh&u+uUE3od`eYfS7R+i|RO+ zYWyK5kHHzEziuqwzb$<}qhCYwIQkrJ>!eSyx6ku0(@r3Q8<^KN-JeAWj4cgJH-(blKk(8tRk@!H>$ zOdfLaC|fv;r?2;Wyk6eTJFUc6y!U?i3~>nNtFMR;#J~3s-qRTq_k1z9{YKU-Ep&|0 zSAp^N1B;xzr~qRz&#ZIpLSiUpkLiB|V>kVhy;SI&i-|wRx4D@%dj+g*$}!sd<)v>O z@dX<=`y79|Yv00Q4fTlw#`^8;8pA9nZm4-TMjhpJ=Q8gG%>TiLTy#@>e`{zbnK3-_ zMW6QJtix&!GVn&m+Jn}*?bbT-QqFpRXO5m@Gg-{N7IUg>qfBHd4L&>$OxfszG|h8O zee7S;hvI>~=;tNoI_=l#O+Q+DiHGGr-pdj!U-fCf54XERm6Lvq=f9!f1!Jt(L-Z?qKz69;U_pA>6Fl+a~Gyec4`#na!uWsQk7)>oHg*$e7joUG5X?|9b5 zN$CK4;R`Mdtf!a##l?v=(4O7s!V?;3SG=q}Ai)Ol>Spqa)5v2^9|B$2?>LS9INA$y zv)1A*-?l@)Uu=9>?2W^>%}y~f&u7tRS=g*vgV=)a^eVp7Ce|J{4qy#p5WKS)Uy8X- zJTnOUvN(k^TYbK5yJ*YEE^Td$rkHik>SQZcnP$cQy{Bc)Y5h%>6}vwNxqjWnP0K)= zb6@1+vEMq|p7*wko0@D}XYxCCcaD9_2QF@A=hzFP9&U2%J9fIb$sc6PH#2r@m~}Dw zl`MI4hwLDWzb5oYZg>>?_k*zwYp_+bv1`GZzQ4qG^LwbseE+leJv`EUf1d9h`C{l% zt(z+sqm8v3*_XRm|Dk{OMvYP4eZ!W0#G}!b+7I!`GI#IX8Q}A5Vhv?|>_G06SZk|e zUyR<*yX2jj`FDe(=S!IfZbmOYO{~s~lQRFtYLQ=~SD;T#nRMLk4dbLE=tnwBv71Ku zKEaXp>VJ6oi>|-Ix<(mop7{Ne?Gva&9Ik3&(s%5M)O!@V`=NUt^~sarEOGbsY1zXwGGKM&hTXmYWcK4NPL9)Kl-eIXIL@BU zBL-{6n&iOM##~emTst$Jz57G@2F)EBLy3zi=V2JJDEXm<0pbO~69Sgu*s(VP%Lr)4 znW3@En9HKr_VH`xA>ZH~OXz=ZLjO_drM)K>?Y{BzlPhIc?j$dM3HQ$};yJPBdc~fb z(u&PF7SVpJU;q5LdG8nO6P;F^VwbQUKArbgu-;mkQmj2pEM0&iSb5aPNGI zpVYc^WvsIqYa9Ne)&`QH!IIDymwpPdG>{rfAq@dv6aEk*l$gr z=q=6^8)<9*XcWAyc*-*UDhGLXs+)5`365jFwV$oz9OOEkmG*LP^dPicpF#c_zqf#Q z51&uxf7O+LfkFOSlE=TSL5qKrz(;v7!F zT_dNAS9QIyuJ+(5b>uZ(Kh!Mk&=1WSrhpKPV4;z+t z>Ie1L22GRUSKV8Z3cu=1f@MRHQ*5Vnwc8t9zE z%iz^ZpuxrP=oEN#GP?3o^d!2ZO1eZi{U1*_FyDecID|fE1*bFky&5^M>|Jbph-jQn z`wcLUfqu%55&gusL(nZ=Zp%>Mcl_?ux_-F{{8Q`jPrk=L@%k^={~PsRA`dL+vt`lpN-93(ahM$l>$#ffjUWhu!z?b$&WW!I#*AFs#Bwm1@bk1@Pb$-BD z27wQ69?JN$m9>U3E5EXiQv2LiQ*LqjqZ1EKe5Mqh*8Ci@ChhRr$X?iaj=1tW#6M?C z4{pIE z=OhOUoO6=Fb)dlPnXE5~6xex%?m5Zi3>F03bCN?t?4d>OImt~!>_Tw=8hD*nJk%Zm zUX1>)8EO}Sn>Ts>X6`V1H2m@w|KIlLF#9~@?;ZYM=P$I!BZu$u|MA&{_65k}`}{w# ztZVk5u%;4g!YMxJ8jbs^t9D>3vHWm#N)r*k->5oKOSz1shVw+7Lsa;~O&$)dF z4?fyfyBb5scb<9QjlaQqnem?j18mW713pN3B+C|lU*Z2%!7MukzC^z@Z^UobzKqTM zpH|t=PD4JBr{-xboYjkbAWzLJ%6i*9kq_jl`Aya}dm|snQ}b=J``G;hMxHo-xsN@d zz{pdx{Pk>P7kO%)xS_8-2zgDEC*etX!2$TBTRcG*>BHI%JUMX|;VGKb6+cF&#L?s? z@Rb<1SAXIiwfQ7%s_&@QLE>oS@p;%9+$C>IxV^@0)1$NMN8I{eJ-ui6)8(VZ34HW2 z_*fFox0lkVawjBj;wPOIyNUKM0Z9hu4nhuHN!~_u$og zyVm-v=g@~_KWVUIGa8u4!Jh2GWB3CYALYB@kH&!gIB**N;I3Kasu=zt_E!hr82%{E zv)8~khCiC}?6vTX;g7t0`x*Eqkv(gK{-=j&S6ga1_hrG$RyvR=gh?fMIR z%kf#?vR?38)(f4oUi~-mSz7Rv`26O2;crG9|cnN&Vdckj5 zFZ3?qh;rztI)e${Pd}(w`W&< z;Mh>{dT%q&{e>>Bmo8>bbM8JN_FKWcVtg#_M3L{u98;fGnQ!~>8L(sO zt-u6(B(Q|Y{dj}#PnV6eBgDXsU0*!fUP~<8vFk_M&kz%L?D});b;QOUyZ#*e`LkTR ze#1HTi@9!mCNjpZ8REiZjkRls8@s4}RcNfeY7}!ZeeG@>YdGhsE(|T_+G{UjzX#6`6`yC5Gwa+_@aTE=vs2vjto`Hc=Po73iFb0^M%XW0 zZaHHkCLH;`=j)8LAHBx&b&BlAe&G2!oGbW47cb9 z&c!{UeWKlE`omXA?C;_K1^pfV``7z3_C&2?J1%y8ke$R66niLO-`A2*u8BSD!k117 zML$vO!R%YIvJDTGVbc)jY>=I;7`8XRfA2A0*4y-_^C%6!yYi&mmIC%CJOVx|iMc9% zW?0i5l>_+U1bYx%z^eBe^mvJVEY`Q4&Y1%7y+H2#x z+EYwH=ijpaV9p&^e6c@c@qBC9i-|GW$ADix&!d!o_r_7`@P+ba#0z)+TS7j7J5Kp{ ze#UvLW%ccw;a_gC?+?6Xk)xJ%CZBRX=kg&|GlhA%G=T7MS z1n(?3WU)DCG3QGV$27TZscL_qX@6H-`+nLF@;M`+{p^JH%gI%X_vIX4D%aM&oL7;X zM(84+MRxuhaqa8An-K6PCA5EXRagAvvybpL;P>_rpy!&`Ey}gEm+uZgzO;eAziEFR z?Pt^Oi414&Zx>#4_Z)loqM(K<7az*C5JX$u2yOtj2%e|DR4C*j`G-Mt4(gpxj0I2g)|e2Ps=9e?s{oWf`TX zA9Ildi@w&~)x8`@24-bh?IYPkCYea$U9(p!LGIh!Geo+|{iv_Wy>PAb3(*^Ol6~Pi z$b9GFx)->9i9OyOxQ+}lxV|F+*ZI)4TOMbfFp{_V?pM?Ogl>-V(%%%d}g-?wagdPLvT_hS#4H5FH18=rn~oc{?v%^beI&e+`~8~+TSZ7&|`#y_KH+e=3nJD)hvVEf+D#?EKo$zc1wb6xm~1NQRs znXe@?H39qn?-)D3`A}}I{lNDexZ`o?#lw*~bC!#T_gBF?F}A}?LVfKe;8}Zm=TOGy zKTCGCx7VA;+6T60Pju<8c|bZsG%`AZbu5)09~fS%b>_@cbdq9wUOof%Zq+yL(~tN& z_UVfT-dI?l%Q~ID6Z09o@o+Yy6FWt>IP2e9`*OxL1sgU1oKNs+VNZV4wHYknGH{kV zaLO*%xnrKaXYT!j&IiClk6^=%Iy5W+|BB<|hc=f-d)uYhIVRQ_>SOjI-M~5JyUAnQ!~0Y50rt|Qg^n5DYsGnjPgawyD4R(4UU`tgj2`o@EM;&{MnC>&IumF zCmt8IE{@~z>&4m=^{dWsY2@>fH!c?+%JmXHz5O%+gO9GbG<~{wSd2Vqj-6MmdDhuy z*Nb+QuWaU6ay!ohAIh^NU!@Cevv@D;55~yXb=J<}aC;|h9tXEGsjK|hs2{q3+g!eD z4-Ula($*+&C)|#t{D5*erE==e(ljX+c0o$NB-2yk6Kxr-Qv6# z8QbyvZ#-8U@W8JW)0*6A7;^5R)0RH@sWL|wR-)o zQt#^7q@GSpBwha_#}URMA9vDZ=e&U={ePjeZlwF2yThf2TW>yyV!uh(uVox=K23~s z@K$Qgb1?Sc&g@5iyY$38Z$*+V+tdH?co(lp&iA5UQo-+sz!gQmtby-@pTXmtGn+^7 z+bsDB&}RiaoXc+)0PkqZt(CJT97?g)HNlhe(F=KZaJtn#O=k?n>3&b&T)^+TR|MXl zv4*yC^nRw*zMr-y(%z&StoECzD}1OQ`TryN2p%sMB0lK}oI`l_Qiavd`6uMKTUoMy zHmQBa5mfuUx0z>y=UDBp@qP;LH1VA{iD_Hkg;S5$1f%$w{U%*=lH&AL;`@nXj98s_ zwy3@T`EI8_k*IG(|M7gz=OcVh;6sjPmVBO4J{9;8y5H(0_L;vJm&z z=>3RWM%^;tmL4DHL96geRCstIAm?tRO#BHqDQ)0nC}Qik)I7wiY_^$G>Gc zYi`EoYdPBv4Pj1)r(bZNhk!@6&$E1w*X8-((usLEdwD~C$x-M1n}S)qhhNyW9(*R< zsX3@aZzg4T@ncnw^YFUXgBQ!FS3*5+?a}0I5F-KyW*&Tdhhraar_^~<&6Mv_n)wRd zt^F{{9h(iV;&qYctRZ~P<1>{H_F$D+2L^XKkMZZ-;O<6X%+(y?;>oPDg1@kfzqtwc zt4P4#2F~|ez<9iU4q=18tS)%CgFc#=f0%>2;G)*uFH;OIyuC8fq(NQk#?wkRh;Zla z*(j&oeC8+Qv`f3?@Xj3GldYpY91-4$VkgGyz4&%(;eEAR$otw0D4YzZ&Z>lV^P!#Q z;3D4BzUq*fvopK2JIAG6Ii=3+Dx=hXnOT&wL4HW7IMF{-Hc)o4uQzns*X8uHle|>L zlhI98S~HjfOpjaGZ^-PAuq!VKTib3Rt`owJEW?J3k0Xn3OXwrfzE&)W90hZpaR@n< zE|m^^xrm&B__KVG<0pRStKNqUl~n3XQ|4ipN8b|ME+3+Q&o{nXRV+6Z)Q!#oR)?$WM#);Q|x&w|}NV?U|~v+!|M!u?Q+H3aY_ zT8Q=iYL#;rykIQi>?xf!dq4Lk47PghZvs!I-)L9(7J%RQ_WRJ@N#@27dg~}M^`M_K z88W#m9Qiv2-s5?01Mf(Gc>9tj0*Ce`DHl$2x#mUDCrTTl&wA)n0)0xC5zD0?`6iQ~ z54nA@MT;Ez+zh`G|EL?z?@@f10P#K3r)%%E!RMY0IX#YtL)ea^`K~y>u^r=dkwb&7 zcr?$#BfH@CiFcfw`&E=W1JvUW^)I{PNn|~7&Xc|pKWJVr1G8*gx6ooBEAhB~KHXEwNytQ);u>a2e_YYI8G6Wchu(^m{|H=XAzvY$og1eyF1 z_RU>_Y`=q-1O9_GI|tVt82bq^azm zNCVDkuFbW<$=8O@jm>r2Y+uJ(lk6_pYqL|C&u06!4TSHMm)yp@b0_jDKXf7Ts+{Dz z(2>eXE<4NX-M_u~V+oVxQGdeq=ax+@*MiM&>oU~iVf*KOdo_`=ToEa_a$lT#V5#V0<-mUCKrc8K;n z@^Ckx2cSs@eY&BC=KgZ%(FQ%doYpeNp8_4tIx=*W4SWOi*u#3S*3I!HtA_jf+k1Jh z4tnV9_)ZrAOBPMtVHkuRZ&Vx8msG>SZ6W$`{w1o5%Qwk7Y4_=U%5czIAfyn1%7odtg#LcjG1ML+2S zj}dpP+VSXUdm!_U)r<47YMgV#E}+gh-aUtR2Jz0s+6neV-U;x|uom58v3Pq6@|#J! z^Ku8-#GIV-DZ|lETHsOSpS>Y|yA_$;gS_rVR-?#iOJmZuw%`A9dp>o?QD;}GlixFh zI@m|`8-s)Fq0|{Mc+vI|)Eh^=eJSW;;2lAI_HETq%RSp3fvgt|Ub4LiSs#a-f1J$S z?z}S!c_)5V|7Kah9$jd~&Kvym?dKKo&KS<*O5*+)-Wfm6oE2NYE|0w>6YwtvFWY|p zg}f8AVkd~Fn-r!$s&zsJ9Tvs9I#6tXG_WjO~txdjMxX8|* z$@m0!r`g*wDugV9>)yfWC!;H*54b;v->3-unaZ5hvw5-&Fe<;mh)yJntea$>exH z4z3=fZQY~uYwA=}=K<ga_Ho+2llKw&C7WAa^Agycky|e=au!hFXP=(-VO3@(DHBF-{+2wvo&<5P7i*U zy)lfrxd-nQT0T3CHiw6Ob~^OTfR-b}emgUOo-cqO3c*;_{=Kcb1t7CpDXxW&*vsSKccTq*E@dIYWhl} zFF$=LuGM;qzMAN3K6US(!yE^kYpMGtb=SLf-#SIz2I}5U-RFLc&rIFtse63(X?AO# z)9=fts9Q_j+0-pr0DRP~rEWQURAvX9y6a9+x0<>)PMo`3 z&D34H)Hz$_57a$G-B!2m%2U+6gSvN6_uXFx*?VcuHaMJ94xaNJn3tWR?hWpEORF7! z`7!!k!gv?Cua`$6~o_rp{4cOm_KEB*_0&wnMS=qs1L4FBEO zJ^!6|in^y!*YMxJcF%tWr>L7mUBiD1yXU_Fr>J|hx66Ow?)fkE6m@q|*YMwc-Sgk^ z-ruYjc2L*w->*9OuQ{Io_MD>bChBUur4M!RUvoVFy?=_jFHraNc>YV`K48wnh~lSm zMu(AK-2th!fBCG7>F4>cPOf}{ILL0+1NLA~??G3#;)6K;O|Bif$mqe?pXpaIG^2Ma zbIB%O@kgHsLzg%o> z`36DkVDlca?@wuCe7bePsztLVyu^L&5!MA>I+L|Y{A%N8GcMW6rM##<1Ns?6}~{9H=DH}Xl~Ym-~su; zm*7L~2@tDw$M1_9zZna@glLe@Sz#f@asZ#XCp72wa#V zhAzQ8_W2S^i=#~|^@6~1#65Rjv3t{hxjP=#LuQMo$kD!p{@ZA~l(Fc33&j$5QhynK zWzv7J{txc|-m87(E}lJxEJgTka$kT$?+3iK4!7+jd^@$RyFIU_?Y*>pDQ)lL-D$MF zpLP~--ofHW@#V<#GwTD;Rla;vulDSG=%|=SE~Qz!qFl%Kvnb8|Mx{yHJUuWQdA}Lnh#>Etz4aV0 zeYMrOb4h-&=XXd3suI=(9!1_2>nXt(F927S^!GTp(|MPt(XX+E&@0NjRxEjzk2O(X zRs8x0W0~KZIw{})J3mYMVK01e&cDFRm!o6gRmsj^Xr{Yu z9;E%}Ql0r+_h9IEb7p`q$!_#H`6ANm(8=ibqqMcy@3%jdtoT`9fi|k6x__~(>J$9l z<2L%bs`I(}^I};(c&!|q>U_L1O5^9o;my-$@wmGbTvdeVcQW}bJ(-he?_T=e15YXT z>cM@SzFQah?O(ZY>&#lg9bv5}CLELl*QMRV_4l6b*%twi^lV3*n7P)h34%k#hzkmc z%V-XS$Heyrzg`?{u|vmNH|Jcj$29oK#2%ZRd#b(IV+J}x`VN_7kA)L^e1~x%Z)Vju~0QSTh2?s}i!zMvai z>s;VlppW(#+{0R36nu$hi~T-(HqX62#?Zd>|A~JBw$je$=Kes=(1H&3?a<}jH=TPc zJ^A-!>PBR@Lm#2bbv8y^iPDqfpV7uf+RzyRl4FapNS}CmWwLY!bd3O~^a=6h zZ6(zI8Sj@{KJ))|`akUapX#>LF%N@dbM~3=kIruJa1XtX!GEuu3vS0TKJh2G34(jg z8TZ~K?pE2P3J5HZ1 zl6ijjWH10e7J(1tPY56QgLV1LdD7=vV{PHCt@!xUJ;IHruksz6t(Na5H~s7-+jaJ$ zXR~d#&^Op@ufpSw%{JP^I+inEYynoqJDRY8)?=rw2n1uV6BoD{xNG3C_%j8bfAZ^d z*fqecoW*#&D;^-+cd>tPrv*AH_LgyE$Esq!eBeOmGY@Gw~oB}>-MjXI}aF{@a$pP7Oz4d z^kj1hzF{f45j#fbmmXe%9k-~6H9+vNiO(KB!+|l74v&!cF(#h(Er<6<@=Wv0Zg}h< zw$O$lyi1)Zx}z0-OXqjl8wIqnkMGy{=r5Ic4LlrxmyP`3tLhx_MaYfT3@iCfcSfqd z7n3`l(VqPS#!9Yqwx_2(`prTgg*|N zy#W66X(zDuaJy;|)Vr0?3GTfbJ7))CbOpU(zPFONG&e~JYx=?$#XA?Os@74PGJ#l!0PMmjrwD&sp2tk+Rj zcHvB5jnT$%&dJQrrBCXs9Zwhi8#Mpmbw?NdC#CrOJ<2A^9hAxm>w<6aWbUa3-?A6W z;l~nm%pLe^T1UG9Se5r8eMhdP&S{OU2lfm%7pRDF%RUTa9}2!C-VuCx?)&k2G6fsI zgU$*4PKK9u($8#o=m@+m8k#&K+78gR=(GX;7M)t5k6?*!`yl7`n{mO*CeB0qvLhsC z%K6b+w``P`EsHJf&bs3!#u?@Ri_o8!QjYL3pYWOgW$~{c!PiG0&X^7jpGNM@ezRQJ zZ16hoNS?-1C*tRRLdJRl|3~>>@sbyLeD=0?_oXe%GyQw(DSzXuun0NPwbn=9}M?+1pDX%qXlUiR%);e<9T(G_a*e6=Z< zz@KTe(P!H1?Y8N~mkhscaQ!CyDx;6_n{+;O1w0pm-{u6J{T!O_Yx!QockQDu>_Z~n#7z8yyo7EPP24sn)AmRF_73mY z!oS}0__m*-?Ow>pUy+dxK81ITeZ*LFS7({pM2~s2)BUE3Z52Ydq!j244g|wPz@obw zb+0gIZO85hrg)r}qEABT2Hn}%2Yj+t#hr}}jlV%5HrU*wcYswreA>%N~_|o(0^p-MzU< zur&aimp`g_gx_a9n@qo=+a>Z#DFg7d=Fx|K>ofC*>J3hqFXCYu1yisQ8P~Px z*oe^Qx?bpMXfU%MybqsTK7cuf@(RxK&>72Da*hXl-*9yrClmf{Dn7Yw_xz@8E?`F&NpgG1~~ z3QT@q)o{)kytL5d_f^f~oWaYAOnzV0)0{1M`52SmS9Pdnn0@6qli$agorU&{2`0af zHSj|F+6zs7UsX>2aC>GD`qGyb8EywByD$Vs*rih~or_YnBr?LDJl&lC!MUa*?TfE6 z=YLeC)r_>K&M@bHa7J*EJ#D5r|ATzkB76Gv<~))row zwy&9M_DWVAXHEXP`DU+V)x`XB>>u3f;)Xoo;sqW&W9-s}E>1WrWy;+yP6A_X>`LW4 zRt>KiYhSv=#YyhD_GQaloYb6aU%tY{31=B!S>@t{Gf`$#yEw@kXJ7k}i<8=M_RNP} zoN!M>Fyg`x8E=<9=Hi4L(8;S^oJ7vIFJ9x~B=-V)YQ2k-nhWe{&yo{2HoX0O=r0{% zSw6d`Rc&I*SD+VJzmHvwFQ{`et_hGUl|~*Uah2?zHRqX?HSnYKVNeshnwAfek#J{LQ)KZ(c?I=6q~~8Q6liqN8WB z4!!`muLtghz#RhayMem`xWm9b7r2)I_k7x4M*FwY{tDV(0Nho;y%4yof%|UYeh9e3 z!2K|A|3B=#eSB5bmH&TkLLheCTv)0v4YsVnywfH-zT^h5*9t)bf3Q_Bkgx_d?W3 z=QV$PU%$Lw=e2Y1-Dj`0*IsMwwbovH@1@`!1@C3x{S;)}!MhT?Yr*?5 z+I@j`pFmzMk2faRMK622$~~ID@_2QkeOaA5E@cz#X|K8C(lF7U@rKK*g%{Z~-*I`B zJ3z16rd)%-d&f9yT=%to=Vj+Si|c+BiZAL6%sRzt>CF9e^j_vFH%?KT zUYuj}{eJ2Du%qvZRgimfmWfr=^Pb`qZ}V;ww%0-4)t-jA=**kYne18PeBiU~@1r-1 z(V1cNA?(y44-}cit@;SIyBiH_nx()O#M&C|Q_r!SSJ?d(&(mwjOpT3!~i00Wl>01MR zi_y28>f6Pq_sz*|8e;ZxdwshceD_XfO^9|6(6@c`Z9jb@-oagDL(O^V4fHKW-wsmu zU=edJb#-^kGVr}0e6gpvk0alH1boZDHv+zu;Ct+H@|~!wyHl2d@BQG*`dV$j+!6L; z;9Ca15%B#P_;L|Id?$4W!DqwZvwZk0mAa*MMR(d=7dYR((l-`Yf$!mKu^(txxwCK3w>Rk5c>(}TRnZNqi=6(ET~sPn{#RNCfYPS z7UQf*;1|MB$BTx)%ElQz<&D?%>J#;b`{;z+a9;TYyTC`M3D8O7)ZHhy zj8nz!nuBjFSa?Crj@5YqaTu$&A$Gcde%4W&A$GA;MS|A zo+p3A*D9WlUSdB@Jx~5#pq}LEKI(bAVfxG7=m)6h@x~+6Q-5!!-dyN>6LdD?*ATF8 zpsker4dzNuC z_3Ap?)zqtE+@g$Ija#pXdef*koq9&j!s+&9)GMT3hPI#8Jbh&9g}U3-K7CY8y=0y2@Lvz^ zjfZ};7pA>AF5Km`=gCw$yq{jy%U(vkGFPUIA5fHL=DJ3FTG>v4Nac3zGnWsdbxCtZ zGkEXohMmH@`+8FHzV0E>nZf(;Q>bK!h+@NLNc0_K@T=(l^AOC#iTE`|4&q4$?FuT?P4l~z3MF~;W! zWIAfa|2A7|L99n&8_ascIj7+NQ2y16o0L0#AaR5Ep!ASg2azo?*b2p?7WcoS^OSe} zdiM}{tRZ7}c<~8C_fj{OK+I%5bU#GwN_sdFKyP&k#UFT^)e~?bM%t_QN@=eK>Q0 z^HxXTWI1rI^TQ$j(_VkB0#0p5;Pi9gT;hjA{I)$fV}SG1j=&k$aE3W>cKG4sw-4tX;Ed`B zoB{{Vul#UEwhw0maI!iA=X?jwDnFdBw-4tr;QVDv2lT-h2hK7-oU!f0`4Mnp9f32! zfpe=L&cycN%mL1pj=-7Zz?tQT^Nsf5%mB{Xj=%{ya4z!0DQq9k`M~+tj=-7fzzO={ zT-rXIzQ9@35jfKvIGz1)rne90uc=3}|G$pFnd!henCjC9SGEslCvc{A1kTkCob7%% z-)bMu8^9Uf5je9PI4}F*T+=?B^}y-X5jfX5aGvzTxxRfkmB9JzHyzLiH#l&X`r-Uj z`*8jRIDhO2oUjAuWfZ9{BVBIKAe*&N3#E+BXAZtaQ3D6^ufaR;rtmm zp^m^=kdDB)$AR;LAI=Zkhf@Qb%#Of`IB*{K!zpVYP6cpUUh9B9 zSn9xu_~G2!KAby%^HE3OEOX#|*AM6Z_Tk(BoL_eY&TrL(y2ZI7 zEy_iEa`jyTV(P<+)5#A~i2FFZ{9H_$$DpY$+z&js%} z;5{F_=Yscb;5{F_7l8L|;JrvOA@IHjycdCY1ibG7Z{k9M2<p8)U2z&i@wPk{GR?t0UpiS{qnfXnd6_Fm9k`B#02t&JtN_R<=2 zMqm7ubn>7&v3`+B{!hAP_T#W8CcZk0T$f%}{F#32Das;VIe`47e&lXL*AW9a&jY%S z46i(c&6`B~&~-?N zJk)9AVN50NIg{L(Y248bT?=NCD>IAzOINes<~q*UpT%0t4dm`zXT@KFuH$du9$Dx* zF-*I2X?G5I&nE|GF6~0sA@jj|0eIgA-iyF{0eIg7-iyE+x{kaDyrJvp2zW08@1@|q z9K4r-H*}q_9K0*RyMp!~qy0+oegeE7qx~rDKLOrPfp?U+t>v!&vF=#YN%6A8wLOc! z);O7Ro4T>kb@S|- z$m7ty4JTHg$67OeV_mO1>ww+CL%FXye?z%4f3?Ul>B3%VV17#ek@C}zrt(`Fd0*5U zN1ghv#OJ`l3I^?F>I<&=qW2HFpUv-)pxx<7@X~*p`#8%zQ&ZFa6y`46zgaHD`!qx@WxfB8EzA82a1APg+^2n^P(e5mO9M>a15UuhNTGx_R{# zW}i<##+$J@Q(pZV>qvI8o!NhmndBBTdFDy>XO%@-Dj^22A z^M&&MnJ>6gFvm9c#l?cQblnHEEuQIuuImDgSU)lHln$Td!=o9{W;pmL$9M#IY9B!X zw93rl-t??cyn8<@K8o?z*)*dEgyKDeoVgGT#e3&*oG3loUrPqN|@CxznuLsooHi1D9FIhAr62M=kVZb$W8k(*nepy!Imo~GxNx2kiWq^CBW zYBqYy$V;`OKQ_Di!<-ocFR;#EQMqKCO&Q;a{^*1L=+lY!;Zf~Pl02kjTJfKv+jcA= zXR9;wHtm{z`{bs%KBe*i{Ck*E=Ue;v_`j=9Do-_M|B-fD*Hv6PdhKM8&zjQ9xyL9- z4x)5|_SAXj@ksYNx_hjhdrP8>{t(F2E;RCYocezGW4-o&UH&@%zb1d2Cm)24XOcf}Tnyi%OO2ht z+MC8e=c1;-_vrHttmh`|shG?-X`hH^pA^AU%H`CausYUawU#GdyN~a*Phu}JZD7Ek z28O#{yPvrz0~oBgSIj6*vngBeAMb{2r6O1LokH=JpC`>j?%XWhz90D=#oRL*{`?fU z+As8N@{)U}STD@tJLT|S!|%tjoeqPC;dk<0zc)W%?zmT;Y6J4ATJ&!|2qA?7rpazB*$LOymC43@8i+j984E38SKsKT(b;(8^GVO zqsSEp$8z^O^=Yf*Rd%RPUnT3OyQ|$XL_f+e$O*Tdp_>ZKT*fdj?A*t!yqGdR>)z-4 z7|$5{N*RY(VAgir?nI7qYQ*7V&E6zXcokb-ruJ z#BS&NAU5GZ_%VbI6g_1>FNbE!v11=fBd?yZT>;IumgU%+&}+)&4!N{2yz2GS&D}nJ z-jeNo=npwj6+4!6w<+T}X~JU^|7@tDhaq!(LuzUACuqJ1wl8O-?s zD{iIn6qD1zTD|s8kyByz!|03x|9DRW7cWoS(+|S^au09+xVU_aT~%xHlfligt2#M) zy)M;$9h&bArP}7q(fSnI+^bTUV!zGz^XfVC2)pY}U`pp?Vs{BQ>3!`r$pp8NjA?iD zz$oa^1GpGls!?1=uObME3dE zDd%ISjKNMB!`wds9~)iYE%g70ofYl$rFx!tMnyu-KjT_>uX~4LsUz2==zo*%51%Oi zvyQRYN4+-~3;%vo>E8c*)v-N1zLj1wc^2@mWbS6#)?I(Q(L<{lzfX`y*&#;0HoJPn zm9PEyX_^ZTG@RNtgR@LD7c{XCP4j^9RRibP+8=Qg{_71N$PVGa-}t-0siJ+4hmSvQ zIeX81I_wef^vjp@h-9mpobXca)tLiN-3#9gp{;rz?K`xPo1N@wz4&uyPEbBfJ#duY za#5=|KB`7aej2ekD5m;tX{7*55&g_+P)A4#PbYIgK+0y?1--B(DxQWX zSHqK=;KP3d*9`6nnXEl(_~8Zk@dj6N)wJJVa>%&|wezsi=clpvs1I}7IcCpT#a3vl zJ!3})^FZ?kem8s9pr!V&NehJUa+obbqM!jLCipdGm|g-)i8_p})ElO!In# zzRJcaqrbABBs-elH806V(q6}6+SAzujpWyPd%CXtYjZZ^UF-Q2SAehL25Z4%Iru&V zzE$9Bbc74L+#TZ!nb&kD%^u+X4tVm#_5$ZP|H~Ki_QMIja{L1H*TAR09{iEOf0*&m zov05{zU`lP!9%`hDtK!=dZk*u{?c>c$!5O)OR8lnZXmt(wH2<;taf!Ku{GU0yEmk} zXBTeJnXQL_e+c|y;I%(Q?kM*3aB}2^255_Y-0ZE*IyfAA#CJBl;yT!~8)PpugPU}Y z&S8o|`}dKD;?C?TND0Nqv483l_Nf+P+lVjfDPMx7Cy1peZqgr`$H6}eO)YpS059ph zsRWwxj^^As(6kfy-blYR?`pr^9$<9_@1cAbbH`KrLj_-UqGCLrzWw;WnzMyN)fr+$ zBWR~YW57GRc;9>H5@?=mXAY;oI@5C)3LSLk>FJ)X_We%~xUFVBvu2~I^ zd*JOK%g*4ux}8DvH2>#>huY%DxBsj8QTCc9=nTfT_3V1@{-cxNw}`PRDRj=SzY3aM z0X-Dw%%#8D#~EWxdz!tlA#)CHkhxN}k#tiCJ@PkjH~sSIk>tdCeZ|++FB~VswDc5AifvT5`p2(zCiR<{7>}HOD$qLrh8Xx`xjg z_?F`LD0L3Phh5?E**9889^n7e^e{ZS9vMu~!|<{6a0GZ0XwUNYk-NIC2;M9~E*sDz zh45eq9^4E+m&S&eGyUbKg*oT)o9Zo+?*a$enp>h7_D;@(+eCl&H=L@?XTQ;#^!osHb=K`$ z=pyX5=DqB%d!0GF4*Tz8Y`@=N|L^5qA##H^yb;5+>;*!gF?)1|>V>-B`-3LbEXYj8&Bc>4r!J_F8i;Oqv@c+R;!$veA% z69Z0!ckbsM#y!p%E6t^$33fT}JjOeZ^3J`yGlKJT-=W{j*>hRWd&hZiA@AM9dpGkQ zal7V?thFuVz4^R1kN0lmy?MM>;?~z0DATDw!>gZik$nyIwNLB{>R(EI1EV2NK2`0! z;ygPPN_$W1b@Er)qhR)~YknLH&-LM5`BCH0DSdgrr}~Bum5mQI0UxR#KGZ~P;r>D5 z%0cFYJjy)EVOG3%0dzc{&-hVkV<_>X((t1OPoTt?8a#k8s$vN znUq%(hrSx0bQbiPMI8D%e6$6bmz+Ci(H*pzc;D>pzjEVcY9tf~3S{G=oCFZT}yJ^00b(x0JitG|ejlP+eAzRX`d zGac%Ce;ab!o5H^cfC_*iq&O=%o>IbT=~Ygrf?>ZOSdfQ|3qhr_O*^YhYkHOzulT*jsK82 z?9|tsIqcMV){(d2VcD0xnBzX89M}cA^Id=Dk01{`jrwEW<1Es7%zM3Q7hBQTE1q3l zmpa?IABa9F#@p!H><6AK-`*8H)Qz~=yuz=suO3?;y{e)VCt_6aF|mxC_6;BnTgp}puCf*##ydk=X1248Ou^KA*V zs>eR7Lzgx}d+eJ>E0L8-&Wrg;k5GKo*PQwvQYY3mWMYg%8K)Ry?T>*p_HpoQAO@oS zOFO}D3ix3Y#v8$pvt@{{vtG-0TC3K+rL^um;Mw^sY<1{`{adTEY;}gM{Ic%A(Ycy8 zGuE@QSHg^26L5zxZt9Qsc^IFuTeyG4=ReYC6B~8?$A-a)zC&&=2j6S(9W=)@fzKWI zaUa58+2E{mFf_KFeItMD5Ot!|k&hV#XX8V-KI|JOo3n*es}JGxZMCi-+sw#>=nro6 zwRtaojn3Fhp{**uj}a@_cCz`=Onl{)^cS8r_t_f#?rYE3WAyd6jNei4kzec|vloYi z%>7zbor(2eSH&1(?;I8Jf?pSwftT@nC5PBze*bDS_M_sl`?2G6pR|Qda*T1w!Y+{w z=g4xpk!8_GXQ9*sQ+yvgTRhyx^AYHC8s6v$Ki*Z~?T26P%HIUWNcY;xkLl0YDCU1X z^y=SG;fbly6}-{+e$+8=HcrT*D_k;g|fft2Q;nK+3JdM>s%ny59VN##{nJXr|!Xj?o2-}r%kPGD1LoE zeBi~6igJjz^Zk|JUS)J*X3YiggW^T;cY_C;7>`NA4&(K<8RXCf33i$9QMuWzLyk$ZOVdKEKF3p_oFL-`7&_CHjAg zI{M6>@vN8m+`oMGgu6Jy+5*PFsk{#j*jJy`!25%kAC_3wM)@X-`7KHt$+D-|>2Aix z+#l)njqz09juIm(28Odf*T-&J%2}#ze|~?W`B8lK8l7YP8}zFDaC7c6@91o3k53D{ zb7fuojdh8NgmsC!EN5LJl;x~T)b)1OB?^1n>7ygtuVH+2_REaIG`oqpLT3Urp^N9? zk6aNzuW8=GADNkE#j&e7OJ$_lyFI--algW}_j+J+>)t!XQAR_Dp76qjj9qVZc4u_; z82YN1br7=$}yB< zC?}8yg58}uiS;&YgH9pr?+|msRCN4Q=7ed)Z?L<&%w!FHCh~GM_V?A;-?Om4XJLO| zhy8sW_V*2}wcLQd4r6zRnK$NObI*Z?=F*3`^kF`Im`@*W1OMB=e*w5J0QW`Uz6jj! z0rz{rJp%3#a9;}UOTm2^crF9a<&?`QD<~@{E5W-GydMMa$H4mu@O}ckqvlMGZCiqU zZ1@xz`tRB0Jr^g&$d_cy(<#5IbZsx>0bOch!2bZg`(6F37)Jp7 zLYdMBsWnrVIre5M-|1|mIR@vD$&DH)|NkrW@5GOM{iB_)*gwt#I79z(QogW%OV7~1 zL0{0n%&*u#jfLivXVHtIh2lOd(UVbp48<1}Pc$)J=y&}CflBGndd5uWgRWs*wN`F)+4BU)D{K-m2Y8tbz5^+We}Ew4RFpbCKiwS54GeQP_?X&AMt1 zG!wsh>#DMMlh;+dWLoizUg()DeEWXLem`V?0J1*-*$*Q7L1aG<+0R4vhavmJko^K= zzW~`kAK6DI`SaH%PC)i2A>)&f@epN*aw_Fi%4w9-C}$%3Gm-tPk$rSh8ainRI;k@{ zY3Oz6tQ*i-H=wh^=&Ue0YYsYV4mxWtI%_UEYd-y$kIuRcorO;7j!qhdPU?Y98oda- z?`ew2J6XXK60pY_av7l9!sgSh-9-F zyTIya-&LBJr}qAFC+_eda_9Ll<;b1<%194n4;|^{;jBO2oZSmN6yxygJ#U9Qr1&?dD|4Lr_sy*LHl2(mz86z{9@UPx)1FC*UQ9Y zuoDAOVqsd}i=EZ3UiS1aJP}_456B0Yk`;=-aSZZ zFzriEjO72Q{>M-B@Rz?hhVLWfJ?wx^J2+pmE`_xk;A`EyfpM<`2k8*$506Kpj2E`o zwk^?-w)T}7UEzx-S^Rl=LH3`gEB7;ZYTrgR=bR?+kjooGBFvxghWf+&nUG%_v!FGfri^x$&`vqJKRH)+Cv6=&6JDF0_TV#fo_ptrb2eZUysBt#7422i-c!sa z{xjM&_V3cB?o&1MZQaG(ZH8VAO*VSf%vYgF_8{6o_iS5QH_6VUEh7t|Z`ea<6Zzhj zUjGey7;QUwotN0Umz4F$ZOiK~u?v{DBrk%6n6%1?=pcQX56)UwAnv=-f;atRs?QpS zr@&GCHBf%4kB)l(P43{Tv#fF8-)u#O+y3{}?roOUt5?@R>;072&spsM${NTsf@c)Z zg*-((e)zwNu;&Z-*u%0#nl0;G`wwBq#&GhSe7GW)dUxmss}lM(=hO|bCqI=5o?MuCE z>Sh17re*xhtu5n69&Gs}CA%p?zn`VvLz(PrHMn*+^|Pqohx&cKS<|wSc8_0qxMgKZ zpC+V#*3YSbnEE|T{T@v@y`9*3Z|e63@1yU&+wy+Fp_WsD-c1qi(B+`!tXq1twSNG5 zdw694rz`Ju<-HpE`vCo&9O&9q$GTZL?_I`woeiAMP58jAW3+6|+LpNo8Kboa%@~FF z?M~`14mkKrC*?t_U2E63Jhkqfme(FS+_Ko})MWLrX5B))hiSK`X}4!n1N3R70#ne%3HI25@!29Wu@3!2#bzjR$E3K&> zn7!e_7gns;{=!x3TV8nQt(Gy%549{#$!e;?$Lxd8{^I)O+xtdiEw85ZZ3^+-P}&{M z#9BTH^lYkQjC<4G<>0>e*>x>LAKKdT`Wm&@rKyVcbmqYQ>sM@_zJ6`Xo5SB}xqsc^ zmVw;oSC8!L9D?WIuWpRb>_E4su)98DbiTWn*RLmyZi!~vAOEYPoARIub7?$cIrg!m zd%D}tukh(E_VfP7^PcV+Za@B`#NRxuEm55XFOSl z+#uUAm$eq%v*ovymE&_tYxKyBfl=z(#K^1oW)JnnGsL>L?X4SPKSO)_pf9*72AXBw zfhT1HR=d2W{A%3?Z|KB1>d*0xzwKOPSH6(WD(y}^t>bY^yxYZ9ILLR9UFrEV#jj6=CIUb)QS8i$1a*@a_H+n=pH)fd=SWlz@cV&HRxJKSWy@x&KmXX{SK7xCFY zBQAjtUvYvQ)1AZ7k@)#nH9K)0Glr4D=Dx>ke+Vs!8SErha2da=E!`pa6!{~fR}fk$ zpK5a;@SbAyt9aB_A7ol_4e1n*C-hl&Him)!2)fhsuhHpWBXjXQ`ZuqNyMf_Jor51n z{%#?!{4k$&cKmaEe!iG9*XfJy#MPPWhxm^5!wtuf&ttUxldi;{S&t7frZ1*Av5Bib zcVW4-EMk7X3s@72lrMb8h8)h=4$@{0{HFc8%1f9CUrCo}ObnhyPJUJ{^R)cWrLnd> z9c9$jeJ4LbF788Dd-tkp-TjTuPF(Cw>b%8oUJT6Ktx8{X-h+1z@B{Q^DgD?A-k%`n z5&B^CBDT8n%))$s^d5K4aQjlqn%o`WvttT62HbU?d0h(kZA{@zc0TLe|GvObUzCSy z`cmr9yomNoc-QmouLDPOj~4wVEQV(+p7*a#)FocM$?#b$N#||m zvmbZO^Hae;1n$YP2~Sp~i~bA_E#P4E0Q0W72MfN`dW!VRRN4_=N1=`Qxr#^YE#E_S z%$?`xn0?4GIW!gd?13GW&wThPa)V4ee4b}3mUchmq&V76WML7%OKy(BBc)4p2L}8P zpO!G5%CVV&EJ!w#%Tx!yyyNjJbdrABjDBClIGqGPZ%i%zKSBK%Z43loWX0hX>Rvt82inf925-Stzox^xgBbtW;2#42B4{1v`JH>$ zw!zcNvB!b8Vy&&Z1iw$8H6QK|p!a#+hGvSjDwlIUG-*3WCCC2d4ep+G>Nh|$|Jm0k z4mW3C51xPa@ug_i>gTc^n+M;w(h)!R{B@qKIKpPlwCy*apPO+H_KL?};Mzc5(jfX) zM4sJZ`df$I&xGc(r^N?O4FnnK_b! z5_sL5$ukW8k`ALS@u$JVI?v1t@7+zmp|$3PIv1Ae>O27D!u>?!!8^x+6-D1?dpzCf z^7Q|JzWo4T*1 zao!m7;xXh@cfj-kALhCZA2QA-Hg&g8cJ2FM|IM>c-j%}GG7o5uQ+_OVeLMxb($n`L zK3_#YTwPylg?iW{46lbaeEfh_`PY}7G4^zQzZb2n6}3*j#d69wkeLT4U#46}`3&WK zln+q)?X1br=YL9n-%9(f`rFeh$b)n=GFv+()ZZ>DfCu5@JZwVgaOKS*SIx=`-vmz& z!?p^bGtP!@2ZCD|SyT-0EM&^i-#7MQ=%+q(>`?$`s+l`wfFJa^rzb8Wq4HUa5IYA*5c5+@ep>1*GH{$ z7`-mOpda3P@6R?`Sv~1rGh^GGQhL1`rN-XPVSGXBO`0zi!_1{D=6TiU2g|N+<+ZvV z_6y=KzJq41cb*pSv9g$lYt-g!#wNhLfURGkPBaX_P|v90{?sBg(!ZJ=FcMF7o}PoWv6$dOkJ$h&ObD%yx5 z@A5VM@2q{^S#PPK+zGw?{n!k>N}<=BnXV7vj(;vW2F6b$S4Mtf7v-P8OY#%f;OC~} z=i=9y`>CJG6wI`m8=)89)ylVx0V@U#l&^mr8f)y#oKV-(?((9`YnvTjD~H#<4?RAG z9-gfpqc5JV9)m8Q(Z{~vVfYOkL>CX%Z-C|XSNh~OKC>?^`&P=|y8RVDIp?&b)Xe5P z&t7zNsDno?^ehICDa22_d}EVm3~y84d&&*lRNf4@7_M>Z2K2MbC+N3#wBOl8}rOvezhldo^8K0%-w@k)Z2aq zyUXaiXm5K}0d_0?>Qm=)4;jAb>M@)V5DD08CXlm9oB8C_=*&%LeY&sxT*%ztSG%sP zuf1-nxxbIShuQY?)6D&S>^sc1bq43S5uDk=d=g}?l73P?eElGFC;cq@qgCnY+tAf! zuVrm1c}7LETzZ82*_U2t?h>rsTi4IN-0)MIoSV1+awMB5gly?^tDT7M*1GIs$s@XX zagu+mwWNA<_)XX?`Pe_h(ZL7M{{?C2K=iF_Kf?p%4iCsjk{&PU1qR=kS~K-{B_q=0MXsY2UP!nqvH;BI5n> zkNQ;y>^M3_KCcCiW`8;OSl|_ahMsRf0UG7jS?_gX%~$cY-6^5?jeNJKGj|O_v%Ou} zI}Y9U_2BLt__i3@-GtrbQ&JXtIXD@ zjj_?)>5VQ8B`?zFKc_9N7w+eK(^k0?*O0AgY=fKtvC@SmPbWk_br)1O`g#R@omoa- z@db5fk4bQ?PrW{ld6q{0=sK%E%KTWDLfI4CKw}+E{(;ECie5-Qy zrBst2vJ^P?g72m5Ex8XoUgyy{Ud+kO7H75nGjn$n>k~Hzthdn*S)B27`%BMpqz8ot}#^x*dU zM?K$?vHqQwH(4(o$of=(-)f-4bL*CG?-q5|r-~VCVmc;w1G<{hpI0XyHG7qSt+nSu z+GtQc`QR4&`LSo;TISfQi+=3bv5MX4dvBcNTX?x}clqpV*~}@}s?wWtc)VQT*Xhqb z`ZF*CdzyJee&_-E^8o$nN`Ky>KU!za0hhPw&szH9txcEFA3xp9_?9~JY7zCnime)8 ze3X;o*;l5GYS%skpHg(#E^JciVq~r2>1diQeY~1^tTXeNbaEJdTx@KJ)PyDwQWVe9Y&|<{_5YJP5hP5M`_FSfjLEStW?&`7tn{}%mcbBQ!(yGQqX_M$5ZHq z4|%Tm5f5lJQV{PPv7}h7qdmX%?7}ij9&OUw*KvTuAplj_6?6N7{$zSBRhxon)cXUgQVpt2PTe*Z77I^Dyg%9ah1ATGip{Jei*2Tu!=EbDq&@~92gM4F!48@1Q zyL%Wb>9V2BfBX2Xy(j*$%4J;Tr+Ge_?6X18X1B%)zRpO;rvp6V6UO^_&w& zGqHeg4YW7$IYEY*cf#lo`~dQ{yK*d~d%4-?Hv#KKJCa^oRDD#nM9Yb3Ol;c~bSY2H23=yXM$*XT0kS|My1T+hFT_ zF_Vu04-^Mn{3745NBQup3k+mW0B!l+Q{0u<-?q}ocsopA6_YNY?^X2U1N8%YMeD9k z-^V+8sqPYJ;ON8a?oO%vh`Nd^q!H_qtzqCo`^y3=YYa4ck1;d)!q>0XbEJ{=VraNCb%DuO(A<)W zo!{ObGx>a1q-8uff^lQrkoe=-w(PQzj2(9FhEa@La$K}GIB3tG$2XESofjj$xtP3C za)oATOg+3c4xRYzd(e9sxMX}jFOcqo@oeQni) z$Q1bwM(#Bi?{Z~6Odn-GFP??X0L(eieJT6y%CIrDzd44TYk0(RauZMTody2C1ZVcP zXU(JjJjSUQJ37v9L2N?lfI9S~=61odh)b`hzTvZW<{7_^z6rXTGk@swHW$x&#*r9y z^V6|Gb`;x8dgDCWBloDGS6rS|>0rU;rm2u-xk@6k6#n;wntM<1?o+mAvA+0(N- z1&%a9hoW?R9%ynua2LuE=bWtg|=$xJsWD6PEa0vKO+WhCFwsIK{<=~ioXT(^ofCVkmYyAHB z`ZbPSyOvVxel?WuQ?8*@&XpPWa>tJl9YteLCZ%(O(0w`aJ=vNe_+0v0etiU;w!j?= z;Lh4le}mxoI(2n7Lr6%%cBXO?*$isJWl#1S+{FE8;SX7Jq_EvVkvoM zdC=RtQ)w{cDL+&GCA4qlJIVYlw6Aq&Pyc%T<2(ivhpeYxw?OlC=+5eM@eMf_@-OyEKdvzt`R*-Hq_-!oZOb@r5|@ zH96Zk0|T8;-_Ewn@lQ*@Lpr+)?>F#hedog@JWAnp$QonM2OdH*in*POB~2?xbDBnP>);mLu? zsq@V*^0^|sKNzo{dSc#PeEr7y&Hp4Gx+9c1`H- zk!Kv9|CCbkjYE`*Z!}SEq})$wQ|_gVP$!435j+G(K7|m&YV?LHozVU?bf4bdZ1@U!IuZ2SpmHHf6z0{DM>yvH0q6>DM8Pe za|VHP>?c;`T;+%Vpo`rT-t~`HIpd{VRDT|-d?2j@5G$xKu>$5_$>~b={#3!+H!_Y- z!&BAp)GF}$6nq+x)fnSYltkYm#`4SPn+r~{)cy%HPu5v#`?93AHFnBz^7bY$SAs*A zgm#uNCi250l$w`+MEM%!J(N#Vo~EzdG0}KvP8N@c-LZ=SPjpaR`&G?7e14U=r+`xS zx7MmG=*na4q_LKNtuxqqLocmKg43*H zsf#x}oYM1cKd+`j6XE3L0w@Q{Ptz{Y^dz)Sqtx7#N~v6p0Hx07_OI6&xny3h0{3)q zeu+BIugfnn@rBUWj1M)@{m!pv8{Km-51?mT&p54`aM~HCpAuv1iJsLu{!rSHzP=Us zIxl-u8t|d9ffej;%QiXB4?oi1!0*p@ii3RuUq`X;K2CA+rDNz8`QXUJ=Yvv1pPv9$ z!`})Y$+b$J3=bd zO=Z3@=c)1DGrXs}VFm;5B=FKt6+Y5AQ1ayK!)`q9b=ulQTQg{D26Zl@tsrfQN21{B zZ&SL#?3F0A?6tJ1y%O3>wI&eyTx%nvX!lLp9iB1wJl1|cFJZms+qC;_+P#8y71uEB zxi&*7dP4KPY=qjLg7)Vl*(>s-gp*w8u$B1dyL^IJ`0qE6F1pn22FuK;g&kh2_p za%!!1=7GOG?VNY;S4!!IzfdZN@Fb<;UY}9kMR|ejDyvgv#_xOEZzwmi}xYe$XtOjl>a9P9t-0w3PeywZUo2p-7h=*PSCzd^5u zlISHF5>5UBef({vy0p+3q(BQRi57R$j^>M2dkuMZZ0tZyDSH5ne)MQi?bv9I=tl9{ z0epwywAl^cVP5@YdjveU)^g5AF2F|9+U+QGhvKlK@gW?#54FAdinXMyGub%Z&%oPX zX5&n!AF^>Sr~KI8AM{m%|1}hQ2Alr|w{LX=9p7Q)Le7U~{#n^4a3t8DaMAc5MTW2+Obk9n-M<{-dSI2GV8Mlu760^UCI%j)zET^3( z-8z-j(fy`cTh8$6)D1JRe&W_4pDp{_#L8|*FP7j(nSO$Gm4}qJAu5 zp7z^eLB=)N2Ah0O;7BpNu6Dw-v;Qw1%^dg(UHDqh^>`rW)gg8)ddzq0lu&01I8MPw zn1b)1d6M5ZEOPfmBMY?_V-cplUtTwplPB4_iFqI&*^(Yt967d7?=xyn9YaVogT2R8m7HboO{evdZg4}LwVyLi7>D&9sSq&mf7Gt8hBm}Q2RwF$NpPF$KFNPVn?!Iwb z&;D82u^P8WZ*_E)d_`}JQ>g3doBeTjp2E)a^l%LS$>;@FF7I>O_=q+<9dv~Eym9)- zZ6kzzDm(5~@M~=&!hKBOvCwTpagP`{Tl6c&dw%}k?DGHZjIC@v+4F_abr$@gSZF!? zuN={z@~-ZmkH8<}llY^Qew@*k^YO=}w5Rxk@pa)h>8!b;GxGF}r1q*^TeSe3ygj`- zbKcKyo_v<{#m=NX4@c?J{G|3I4_~HBljTeE=QE-g{q2*~p5)=n^4l?05JfM!)=hmM^n`@zdB|=Z=3k-|fe=AKXs&2Uwf@b;ZLak1nRSwb%WZ!C8>VV2&cYs-p0E1iNjwVc=q$i2HDHAgl9L;a-K(dcJegvAOl&S@I1-$C!Rm@{DJ59JRkFX z#PcD~4xSHqe#e9Vo%K_m_jtDPtmN6s^DfUCp0|14;(3$j4IccitSvmh;dzZ`GtVX- z*2J>vcwXiCHP3(Y{EFv4cz((A3eU?tFY&y{vytZoo?q~6;Q1L3lWbNsk9b-%9FRoA z#-Kw(<2Si9RR2^r6<&qc<9km!Jn~yg>99KHn>6VN?7d?CSKU9mb+)*5!th2H>YSoZ zfd5tJ1Jz+pl1_M>7ziRS#ktKa_mx!A<2uYLGK-TLYiebxOfW2XMd zMy_(>_cclH=VCYMedXO;=)RB4W;M9=pG>M>$~>g{+OI#}t^ZHd&vE7_U}uo-^e_m`pO#|?AE`O`o(Vje@UvJ%f1fP_i`eG$o@p?r_*=wTtxZ@ zTJ*vu4)VRm`d!-a|CT}B{`{6O4(?inp$qeoa=FL(=A$Lp&)z!t^PeQ~8TwCqIwmr2 zc>6hGsr_m+7H0!TyruQ>Ku;@P1P`~auk{XXu+aDameii?j^sZ2arJyv@qlvAGr-fY zueVh>zUo#=?U#9nQuFy+l$w*@pp>t&g_4+N_G^?n!)+7gy_9v7cT)bE@^= zOUmh#FH>Gj`6A^o$`>e!Rc3FXTuoU^`55JT$_FS<^W(9B6fJl)2>==5JyoyC`>4-btyP7jOR5T%veD5M49^oh5#Yf|uf@}(M7{1w<7jX!b!e4JTdHsFnqkb}qCT-P6FcYujo`8PC*YIZFTLaC z` z$a!|-NVB)ELigR}HlHPc-`sId45^H+{qGGh`h$Xdfzc z;cp7sM=v$|3@a)J<=DrjTk##Vvtw0`{n?c!_p72`?jZZ*w~XyyVMPYnv1`P4ZEL{d z9g9DYp2_25_#ZhI|BJTC@xDJr9lkU6Iy@CdzXch4wOhyCvX)g~Up|lX8(hBv|GB1! z-xrJjkgqWR7qbR6na>tHBwJ2Cwtf%MRvP-rv=h#^$If$o3HU@hApuvHUu8q}0axk5 z>?B^gjQqDP*xH+dj-1{2=R`fZ89Dnh`xV~WHpSxXV&q7AHe6k7Umi2;P4{9C8a6HK zNqzL!&xM{EzkSeT7&Otmqcxs<-kCu^W?-vK$su<-i4M{?eti`UxVp;cx6F3O{huiJ z(&vAqH1WD3Cogg-eb%0lO-XvC5ud08oV@k$gtaK}^YmFNcxs*QwG?aIa_sb#->{A} z(f=#KTe%3Uz}wh@+5`Vd zQhS@Bqxix*ZzyEw!MeH+-|v8zxwmNuywCp@_hV>Zz&lB8iMARO?K5morqW&7cBa(Y zUnffC&ZbcQyT@NHofF2}ZTqyf10SA8Ryy*UAn(<#4u`(NO+34kn1b-DZaB5AG@N7R zyj_~}!p@wBTvj|C&9(;80mCpO8P6CMi4CU492 zQvJ8UE#~!aGknBe#2D*m(g(!GT61sS#O706uZelAGvl}=iO0%04@GA|On}BZBd$OA zunC2+B?pDI7cZAcI%^ouK6tFl=Y@})nneB^{5g&BONYl&;4$TTO6Tc*tLu}-QZX{k z7ux@$`66QYA~OMo?&{6xVr|si8=%kV-uN}pBSxQewvo4|=T-JQN_R%7D3@d>bqaY@M={CHNqww__rEMB>nhsZ3cWTBc6mQG-tLjqj`)5dv>FGkl&2gu zSyl5-NWr%*1T9N5mfizi!O#Q$HX4cSTFd?fx7ze|o} z^JNgTbn+`5TRjBrMeo*mi23Xh#zfy){N~r&^JrUoyN zEN4wOI>E_{b#>~dKXL~I1>|S@P^Li zF>C(;XqMU|A+}{~Rd{tjG%|Xx(a~Gg&`Nsi0CyX=u46UipSF%gZghMM`bzWWSag=+ zhvUer&v*0by}4Oq{S5t3e%{lRW?u935&h9R)FASXWlJlTdJA)%`bD1IMo$mcAveld zxExw5?{^>awhtZV%vqdg!+sXYsbsK;{>)D!PQbGdoUA^Myyhm4E%uW3cX?+Og;PYM z-U%|KHK0Obu%Qg%k+d7*t^xS3M)&5ul0^4Za17I);@8THNrOK0Jz-y*p>wH2=OTDZ z^>r_}&Ol0`ehT$k)vxu)VuJ0j7-Qc&klg3l$qe@rnUIXV$8e+AKPjU{eiQ8*`J^XYKUj8OL z`YHPRC~>Q!hzf&r{?CCdStFf=j%%RxzLE1ESN_e92ADL4(+;}TKHSa0+qzk^G z@=nZto#JoU#69E05p_1qw*0`w_K*yB|4#ixdw6$u|4z`{G;|F-S+ zlyUZjj{mrAW63ysEdJw%v~yzTID34KyI-etyghNSXp`u(dH8GY@_dp)crOor@p$e& z`5TM_b#3W*PZ#aXGr2lyGoF_;E}BEXEY=W)7Sizpee>`a;gM{gZD#EK{zZH7kXC$y z=tTOZx%TAm6ZzJuNv>m&e5DHU7naX*7@|j zF=+1Pjs47R$H+`@jJ*?i_vXxh{e5%x@1JmWqxiyyr{q{Lr!($Lz7FX-#0uKeh1|Cm-LbSVzcID@rcD??Aqx=Ke zk@8bo`$`;qGwqeqH^n!+eVfwf-|J+J+lxV17dK<86+r)Y3zlzx=$7>@>oV(Fx`$%s z%zD-xI*Ez7NZ`MtyAETer{r-2}OnRpg z{?$94@7~BeiUs@M`Bl<8sjh9RyvD)6*~2?SlHPfqck0pmIpMJhwD^$k)8IMn&q$@z zdTD@Cw$!PAOEJ0MpHqHUpW$uoNA=T0x>5Lkkw0{Z_l>>ozF)5RKk}(FX_NuIk*fPo4vQS^OzUs@&@f|Jljffm7x3m7xjA+G;c4) z@_bUiJ^d&>l@HyffVau{$#Z?$x(i$PlwJ#NE0f+o1Kpf6fxn1u^#i^V-SFKvtoPCF z)JHzLMbX2^x2LDh2e(B&x_R^w{XE^YA9?cA(t8(P&boZmb!D3Yu9;a|Kx#-?79#%O+LqdG;NtY^)t{<`>mOe$+5lI z&Y_RF@I@HDP_9T?sx?k|MD>j2eely3=E~QpqqDH^32W1t>pBgV%!D>D_chNeJJ&7= zkR!?XN;WD!Y}MV(R`49#-^Y6Th+H&V;qww=bDjL-UDUC8{^-x#d4992SN-w;{<=%U z_z%d1U#ITWn37BJxQn-;H#CzjEIpG>4NN>ur>c)S4^%pJnZKQCr=3PuE{#Pt~6EDf(rBpPmuuiH`Mj>n+f8BmGvs;V&pZplsC# zK7IGU;g`$+mwyF^R=>m>2k_9^fT!bcf)=fF9OI(%7ZvAc|Ask}|HtshUU*L9B7Tyd zy-+lO7XH4E0^S|K)0qNBUKleopD@0fPiGUS4l;f-;c3>?YPF`ep7_sU7Z>krj8g3C zwzG%tF!zKU3~=^vvCgN|nQCokc0Jsg^Sa=5?GLh$#j24yUxGOU90vg>|B7!m zftz9%@~1WT-w2&$A4j3Je9g=8HBW(K0G)P{_AKapin&|4KlpVMYLa4zo}HvvyymD2 z8Bfhm-k1m%{}{+0(42M<`pd2wNqyysXy0~!`Y8UC+<9^DzPF#A+oHXK{`*$UK0)M| zzM8(j_L!r)Hc`qSsH61kBx6Td0~|Xda&DU)5gyQHM{xgT>%F1DbB!G#nyW9Z^n{kJ zijdUS8%?d_WccpMmpC=F@IuhjAN(M*DLsKXlHBOZv6dMIioT_{u%SeHZyPV z+g{{R@m=}te?rD33w~ZI(psnJn_##0K267Jzizs#V@L0B<`{oFo4J=u?Hr?>R=YK& z?`d|c&L`kb#RS{!9Ardsf?=#^Q6^fb3-ufe!rukt{C_;Pz$u2i_icin*o=Ucf#=4_<711?h(%x@ZLa5{7RQ_<^z0y83eL`zxWR z*47>Vvf?Y)f9b6gz7rt!&S$NMiKlxc(L8}4n2!vPO|k6n(584yx~YosjKWjiKJ4Ut zny2Z%Vt&<>e@Ge^wJ-jC)3F!NI7eJ6dy%tt0`z|i{olg4)uUgOccA&(qVL2ww<*Rs z99cTR_?nnW{aCw%^&a|d_P<=@j;+ym(Tfx8#tRuI$8O{#8TLa? zsJ}UjQ89IIy}-~4{#AbzH_}>%clTBubd7NroPR!=P1`1JRPNdpk^}m8rg;*Zc|7L; zPxyqh=bwWgb%zK(dxi1Yp+&w+i=f8`E*^^0ig&#{QtdxH7;x5~{QWfZr?1}=+%Yr# z-t5}D=vn5WM`PGit?~riMq&u^VTg~&es}njH7n!G!k-~mLom6`0}s)@?zwo)SVCD#}dZ~LGPZ~5TMx!o`>c8rBk}tN zL+R`H!B2is>pUa;zzu!Q*}&)8Mc|ZdPa0ZOyE?+fZ7*l$iPo}ZmjOEi`4oN+fRAu{ z5LpslX1y4^JbG&`xe6RU_2^yRrbj%!y8jFGDmumQhdcHZ{NeiHMvfEw@WLK;2{?Iv z`1|A{q8|4a8L z^RO3dO1PV{VeDylQ!4+zud5S&;r7Lh4|J4H@MIz3o(|TPwPwB%-O>l$(ueUm34ioc zJLm$>Z(d3N_x{9@h250uvp?RV_NOBY@QUMm&>ugqc=JTm8o1*F-d8S&|NXm59URM( zHDnkvV1Rl2oNE}4Du!@qIXeOJyK;J26g?t1Qmo;ZJfOZ@-x_Ac;MRcGG+J}2bH zwQ3+xtK=ly!cD6P(i;guML=ywymdM+i9toNwjHsx(@s4hpn!nc6)(L^Nr)gszzl-6 zo$22MDu@C?RJ89*Yc4>5aGS$5owmH+-`abf>~j*-_MP|7=W{-boU`{@&;5DUv!1oq z&YiIV(0pLZfVK#+KuH=gBXE#M8mF`7XK+4#2|Cr1N=yMBA^zWuahEH0f=-6F;4Io# z^LH_JNav)bp?k_(rb9PNcgdykiP!);e|#9)1;X+w zJ0$zjGhio_+p)IdzZ=K{0Ka@g5H8Jsm5+WKzaEtR7U-k-*?#WV(ELp2@ua~g&CzsT z-Ox<$ocAc>CC}ON8AoS3P$L?zKeg)*;9omYaX7dJx~R5#t+vFG|=Q-ux8sXThtb$m=fV6*}L?;xi0^WIVXkj-Kj^dee+TVY z3bhZPl>1TMVL_U+abPd!zoxRcPPvj-8EbEtc~o!td*(=tHJ-6@Qv7)&vM0XVoQFNz zTy`Lg9Z*~>I}pJRu($p>^4&Gs53n*R7go-A(zW4H*0s@*CmEv$?^;^cVP_3KrT%#M z9zEYmZa^{70-jgwshUj1LYi-?p7{uE8Dq;vvmcFnn4Fpi$;GWr8sFC5jbVJvZyy2n z(G*w0JO=B464Y*uUDVh0y-MbZ8s`CwrIr zwe%524syXkxf5G2nw&fN-%oovjt^;dKHXm0-L&t~{+hOdb}j90TID=;(MD;F{K2z$ z{X)41oBW*7BkZ`T(?MT?@qua#l4FEl(Wmiq^kMzi9sb>s3HBQ~e*rmC9>w}E%}G9` z5386GxwMlHv+GtS_Li*-_^>H^$o~Ude15Y9__94+Gd2!*m=}094!Kd@U+XZ^z46q? z#{H^K8`&7iT4G-3@=kU^Ip1F5zw8?L4cim&DZpUj3E#$?Wd0bx(`{m;Q>-YvcsuYY z?z{tDWcxUpHSIwB*auwi09Vf@ba?IE@` zZVw}oPIy~h1a0}D-6yg?4?MEvqO0^b4i|7hW5qZfJ|3Rvx$kjCMV$UE9?e>OI9i#T z#pjy!d7b8(f};jqS5DQ;(V&@`qcJx#a-z9eKu+p_F#{MiH%qX~K74}bDdfTEFn4wt zI|nR^cjl4nwD;PmCi`CIV~TlnKFky7?kwUH-D@NJvluv{zz{{BwO3iR?8dV}+jii` z9qaW$e{R>s6=x~O+6*sLXJc{-S#cg z$7@(ih6d+3do4QNF+8|;TbM8YE_D%a2jlA*yzDe?y0-uzdw`)I@Vey;2VF9>p zpI*LZfIGU_*K6M%D^5<1V~h^~mgHDQc2_a+C&e?XT+fHSK&w3H3fhgdm9#5qjeXwY z`ElWE=84cU!H3|-TYzB|G&H$?_;{h*kDc2k&Qre9X`Z5eOD6XNf5yBM@R8M?Zz_To zvNb1}GsOLQctR(CuGm1iADz=SK)xJ$+Z@p4?@<2(o{Cpy(k8DXSRMPc^SWEX zf+i;Jfo=(Lk9;n%MbF?`C^QbnDF=yD;`z{$P}liTe6God;v0hb(4eo~zw1QyDBv>d z>Xwg;FS`m4D<;}CH+X1rcpe|AMf;+=nOJ4D=AFRW#GajoT>(Cn`+PvI#fOBo+p^S7 zYqzp-x6qHNvxldz2m4CG{WQ3DtQDkon)j=(JMmrO>s`PozP7+$=2{8-T?OvPDm>he z(As&R;)_)3juZTSwIB1K<0c*_=X;@ed5@+yh?;?Wv=qJ6%;z8E^! z|F!y3-+5ji)R$R7+WL5PsV|#*{8jq$chK{v;3$20p7s;;W%noLL7t!wqc8Bki+Mst zJQo7J?uBmnvv&OaZuxoD2Ca$9W@gQZAkO6;FJ*Hjn+a=J+)JLkh9!Br71_K5c~Xqk zKiHQ~zf#}coWb7o!-tq!t>!+i*5`leL>u~(OX`mwQD1idf!CUL( zH_*!FN*+u8oFtDv4u8x1@bmO*=7&CAwI0|>-?0H*>3bFRwIA;6tmi3yZZFYp_v>W0 zWnXO_+}1AovAO?*oP9XElN_2m+Qbj^dL#X06Ayfl6oV-?|33UxeA?-}^1vRu5V8}z z`)~+8``}Zat{$LO?tdTco3zH?6?t)1lKuZgd488Zj65g3uUd4~jM}wm8xuuYJJ`xQ zszo>B!gD*H_v2nO<|pmhDrX;#;)3|uN8szAD?0xu7+)x-b%;+UHC-b(3*a>2q1#Q2v!1;)OGmGbEgiixc5LTS6R(DV<*rot-edBH2`P?Q_edC*xKQIJ%d@no*4Dc zb(3#a-vv?bJ7ug?{vJZ#+mLUq6NMRTJAZT5L401KaSksH4~+Q3AwQP;hl0q!TS7rcXVOL zeLt2^pTBv;r>f8YyB+v{@KSE+d0M+p9E_s`s~;~L+cgnC{X%^0g4#i3TJymP^z{UN z$X;$%KC13w?uk{L8Ls*Nh|Lo0p^c-kX)CmL53MFrD_cU%_9$@F-tz;Fvq|<%byy|f zC_g-d|2zEO<^XDECFV(#d+zego4}lGE#oa_URXw6Nq4Eq4%9I(WUf|o5T0_%GnacH0}h&wCH5I>q_H z^}Sbu{Zx0@1ko;GeXnx-U$wsXFK<)-x5TpvEwqYhn`l2~eeV7@IBzS4tS)q+TT=wjL1GE>sM1U zjKqgpHzZ0}0Hvjs! z#J}I6zl8YL+7EDw^8q^iU(Um77dJVb;@{vrEG@{(B$*B5EozrFhdRZ-AD6c{@z#m# zYr#?Tu(7nCFb}K!qPd>w{+e@qbPpchbM)k$Yp$<^GBMD>d@O&(n*# zVaH^<@d0aDS5^Bycs+7_CdbSYAdAg0mLW;!xuC(u3i(Xd~Lm zjW7BlgYv_#`#x4RZp4>aiaD+iIh(w{y||+ixO6ww0%8&6m?uy_C0I@T!G6+;dlTc2 zBIx-^YY^*!XBY8DJ@JQX4HSQ<-k>kzyq^?%ltVkk$g0oxYBIdFWRs@~#5Dcrr;Zro z8@8sX)c2>*PV;GS08cCV(}ML#y4(Ogn> zMrMsLdZ|krUnA^BKRPSO==|pK4%&^-A||Kau^fPkO%LWm@@$b+n3SUZUL~eiU`g+XC^rC-=nbgNUm=JJ=Dg z-%7tf<9*{NKIZ)*<}iBq9(bocS~lLVB-inzeZSn(JChrS=LtRrInevpoDQr<^St1+ zagcHa@tA|Xr^&U#S{F8aM|N$lAP@LwGrr=WApSon_4+PF_N6yIRfdRzX*@cOd6;u402VRr^_vx-!FRp{wQR$xD)BJD28trPIHa<)Vu^#6N zB-35-XL60Ue7fbqW?<*`KC0)5BTZ*%4w*ZRe7P z@cQ+!xxMRRVSMxiC)~COTk^<5iyQi`TN~RnYDY}9#}nj3k*j;PE{44`d#Itk#{F;B zm1Wl|`OT^PvUk1(`mD9*N1@Yq>1*ubb+NJJm-?B$`n5GlMy>4>-_#fM)!O58rvm*s zUrFe1CjGs(Ye~bnqw8WH^s0+x8cQA+dvYFlofnT363g@oG53e(OM&<1T{~ik_Xj>{=vxiNWjMF7WCWz>8XVbAG;s>)0Kktby9!8IX&}NcMJAX1KWvyquQS zEoa>vQk@j{);R4$`Ms6j5AwScq7HgMw4s>aS;t7ID=cEpq;neAm2v+zyk8IRO`TKy z#qP`SzY^Y`g$J*}`>Hbb;le|&c8fES=BB&XK)+WV?@Xkz&{lbyYfX&Oai<+Mhgmxo z1kS|>;DL{b$0~=I4+`g9_|9(3?|z#!zpKUm7c@iUe%915*A-LAJ>l^B;%=k zzn>V0dYlSVkAnj}tUY)~!F#f-3Zi;)&AoiW||Fhw4?zmyh^Z5Vx(r)hfk^X*wx^8anl}ZG|tzr=n^p2;subMp&q{aCs?;!*A#MwUiTVxKI(9}i`? zS4`&YBmTea?hJR#G{3h0?o4;=SE(J~`~EGN?zPjAHU94ucXxB{w6Jt{bHCx!qppWL zsMx1RK~HzcOsCz@qpGJnY?e=tNH2HzgFZdVdbuON?bD;Fmpgin_~zw3qK-4RPGdFp zFn&0MEac80rv1)J6U&Z3CsqyoaYI`5TK-OJn~iOJ;9s6^sJUxBe|K+tl3a>;zc|CZ zZ~mW?V*dZ)#fuw;{<((d((QA*o#x0B=j zKSA%&6|IZQ@4RDVjWbn{w_pFApI1Sztjq@YMs20Pt(8~0+cr`ojJ`&ZG3||5hEPz!joA$KRm&im4ECr@Z1T;{9_7x>hE!u{V}~zF;dpN;haxU+1H)VI@Cb& zPW8~Fam|k#8r#>#g7*4O`VIbV@Ikj^PsvG*mHw;0yP@w2=$i*G9wW9cra%3rb7Ugu zukGV^=ny{QM8xUq{t&zsV;cHL`?`;szdN4QTwmkqnNY|XH+RePKhFKmzsAQfIWhVc zKfFG&T-E&9=dDawm^wZ0WVt^HJl_mYo8jpNpU3_$2|T|7S;<9KF8I82iCf0=mLGyE z5^}~KfX)Y?vt+YgwhOto^bsz}cvd05#vcc4S}``w#-)RyfjJXA;AagzIFrZrI|DfW z-j@$cpB3mx7#+DF{EZj6Ukku5zt#fmEe7_Kwj5xe1ivNE_8jdXoLc+%q%#VValZ-} zm1{O~hCT%ANg|AuhhHqkFV4g-M)~_^(}2=4dOv!goW(2&#xNd zQpZBgEHxR-9}lBL>=UY(O&*{PJ<{C&C^?8mY;$8udX4HvzJb4OWNsStP2GVnUia_o z0d#4f$lU(dzdiAs_Tb1KsV>){w%^kK=xw1aD+eBpynO*FFf#Y->jI@G^Eqsmk@ZSgQJB>vbOi}aQr?G z@z;x4!ZlR^zAGLPesjUkz+URnSve=wGan#EQ#~_hI+?S~D}mLVXC9Epe`g%!oW$2) zo>eeNe$-m}NIv;^ceE4_bAMRscz5l{MlnVZ{vbT%z~kw~BOAH_59bD+Seetum2L>O zbl?iU`y4Q7ud*H2*rn)2t^@xb9DHHBr!i%x^BIpdk!!2Sm+PHi-}+m*#vd_;<`hAB zHuxd4Mn?;Jxofq*jF0G2hwPf~>w3CP$lgl6KjHr-o2vB_;_ocZ<~Y$>+|xV16gf10 z16k4>;1IUi-fcHDWX_eyI)shU_ona4UZ(G*^!qzL;;;GM>21DWz<1Sr3~kH3zNO2i z{+k%H<8Bc0PigXL?Ah-wo+s9WPXKr6@|S6q$F+10@b`q1)6;#Bv7X>V%y@1->r1b* z&$<8~u67YIrE1up&R^K@@S>X7CFDrXhc0QWCzkYZ=|R4~p#AT8pS>6!%sxGoAJ^GH zcM@;vj+w@=VB~(8fLtnfwoPj-hhB;#FHCl$v$4-W%hx|KVb`&V7re&%caIgv9=MQP@J^z^?55QN!`2WEt4zthS zMSQo?!dB|RCL3>jDK=idv{613{>p#KPX>Ks5n~6}6$0b#cG$Q6kM!N75A=h_+;ct5 z%@plC`V(hEXXI=a&wSuN$DIwe`BhiCIiJVA&Ty7}Pc-%9l~~-9*KhFbi+p^1b~`>k zxAWb1_$14#x1V{=h7Yg_*jr=2SSvQQx|^|Ms{h&2Tln=$pm7f?uSH(`y8~FPE&0Cc z@jKIdw^Nttjsb>hKEnIA;4_a{K01hbCio=dlFxH<_$1?!$9G@hV{l;{$&GBX(LI0O zUm0Qz1>S5#_f8`(EaG}P2R?RB*#Dl_IlfBZ6FkUZobT~TfcMIR_Fn*Rb{F*j6S?*q zcs?2CGkkwh7ci^d^Efc;9-%s5mc4i%n9l(7UITODUcYrd%w5vAIMe-4#+mBFYvhV^ zl^*VbwhcUYSr>5b;QLlS$+R_V+rVk}*J+*VY2eg4)iMJo_lN~(TW;a>lj*Ky>`Q(4{@g@^1O+ zGRF8hAMOG=w+dhV5k9(-`VO^+IV&I=fBMU}7B*aaXie6-&?2_vvQcL^0j_(8|Ehn3C-l?ilVeZvzjABg`E9;Ef9!Ca+l?o3-Gr zScd5@qphAZ6xH8HN&V%q2BtNI5%}h*$Xx+)*T{WwR)0uFcg zY93!r`vh$j?RRKxylKX+_QqDNLkVL`rtN&IwCVhb3(mKk%i{AbYG%%D`_ql@HaP_w z@<+-qWw^r^lD`eH_Bc6YavAVogL3zr>99<`|6Oo<7~G0)X1@M56y z*yyP8KR@Mt&UQLigdKQ{ny?zyV`owmww!qkvG(+l)QBmUyLH&YhE?eOZ*{>?$Bu* zviux1WFJs(b@uIpe4lOh{%T%cG<-or%jz|;>NmH?%BdkUwOG{RR8m(JgyWagl083s zb?kX+$@+oHeX#}0!>psDpQa!?Q+*8P~==x;yqXzS-U#t96U#)4YAMKQVJr?vf4o=AX~)9QQ~+ zy_&`w-z`L^2BFjQ$SuuZpt=g~_(Z1#PjGClx6ESfL#(4@V!KQ|Q{gDLdx#u5{55A~ zVZR&`A7q%Cv+pi&mZ^65DC6ydHoL&L?yiFNANn*HW9@+tZxnm*ZQzxy3({Np8QrfD z)MMq{eh!UZ<0IR006ngQx52uVo4=O0{-o#PedMIOi~V;^>=ey+y8%~6T$*lpRvvt& zG2igJgI6A3|Ec2{!@uwHx63C;KgFznZTvUN=bg1Xg5Sg=*s*`0e=DDi=h4fzPr>JI z4LtXtea@F-$${*s<+Wt&e)!y?Tw}pSZV9zdgW*x7Ghwfpi~4yeMkrUnPtXePK3zd8>(b+O@9)Fs4zx>q}&+ZEj*>LrzzR2@WAH3D`FHP9@a@NI4 zqgS~zfl24j7+OTr+||>RPw&`+qdkKQx^dsZ*G9Xdpsj94JNGJA`!vql_gNFt z{d~{)edN-20r&=SQm#@swSZF!IGOXth=YRu=MXf@FTBW&T;rYdfsHh02Wwu^#Qo0C z=J@w!dojbY~PizgWr;&wI^6TVAbT&mYoWb9p1Lm{v_FNkG@L5}0(9Mk) zcv)`(rpx{R8@b`P&+@m?0q6|8oXa`btpZ-j(j|Hpd@Y_v9;$si42?Y*pJQbFM)1l9 zFYT+uE}HqY_OaRhH2cVZbR&nM^{UPEU(Y8Qm#g?rwSGanC)kWWB+=N|tKt;b@cuig z?i}?8okVBRX+QRSCHh-6#@7k(YlK(QFLJ%Lk-8N3mN!Dn9wKHw!n2E!y)yC)W}g(# zYM+#7&@eT=PDRcl#oguqE%~zg|K&GAS;74I9&iZ$y;JgP?TxSBrWP(yzG@vO?7nLH z@1VKpKNLApoF@2X*Z4^9Yn|ed`#HZ>i@z%z&JSiouF082k)06l=~>l$o98P-#-8`_ z---8A$9a!@_kBKJSm-PpM~v_LfLbTVdne3q-{Er=zbj86Ix3ERz|IH2&-&-!`Xz99 zc`RhXnwGepS2{(eR^kf;-V4H^HWsdbHZ&>(D;tLRz!9 zhcQ;NF1ulRJ-Y-S;}v9?3HWY1OU&brC)u(Q$F6Q34&%!`ZhFYVA`0JK0yD5 z0Uz4}Odf4ztFeX6l{V=Xdw^ zQ9s^Wx|U_;#1DhFa0}|szQ?@tz?*4b?#g}|UWRJ^>$hGUQI4%HbuMy?iEUnuc$3#hx?_KT?5+rvKXxIW1b z{1*6+*zwB!`~W(lJ1l1qk1G}_z&0qBQ*4%sonBcy#;uy9?+P|pzo6f{^V^h?F>Ya@ z_gjZOCI3ziP4Rsc-LbKam$UNDqY_UX6B9sZc!BS8uLmyja1|yG7xv=)TzFyUlN$fF zTR5W*9Lzc#_lK+Il=_O=txi7|A7E;(SaYvvMJM+0x89k|I|oy~zhMvWl|ah~u~m28 z9nQNZuTkiQ?aZ5b1w5v zFM=@4k-sy<3zU)35_TsA#;OALlu2Vnu-kHuj@9~awIY3Wz>`R^Lxy+ue zKiHl5ysvY`gWY?7Zgp<3JFC){y^wF0O=?SNCtoyqgyg9z|REo2YT!?pauPF2?GxX|a==IIN_iBALKbcLeKf9{0`yh8m4s`t3 z8(IZ<_P?NMP_~r6GDuRlKHQ_8oIYldo_x~(na=Z1o(f0&;RRa z-xr^KeJ@1brIQ(oo6AD(QhpDx60+vsC)Z}&F=`0oY&t>i?unOgPqF5zF# z7@B(yPbJ>u+=3kBcUp*=RX&<`czWI|UJt$Q4$oe61s8b->eEMa4o`>uIQZE_9D;m2 z2_DKH$kw!QR}Aa4*DmM&;WA`Lar#C+C46L8_R^2+RweKmdY2~J^26jlbk27cd{!(L zgfE%?tv~Q=xuvK4gn_*--<{ywM#;XljUHaPZZmT^!Qe2LRh_{>J|XDl(dcsbE6gSI zdldM4^4k)AQ?9xe|*o?)Sz9;K8SIu(d?MJW?tz`Z-f4iAp^xj*mIZ9 zJ_K+;*4leAuUK3bap&ff2SQ(N{?!SO4iRsi`d7U7ZT3ujru%>=9p>2B+N^)$^9G;) z;B%PIDL$2=m)|G*`@HpU>R%ope>I5j-&nAuVgIPLvH9$;PA%}xKsk)xx&7dhhBHgn z#ak z6XPgeg8xQl{}LEy==LQIPxSWAC0Wk;y!vfazx1hjzxpjm?l;#vCu9lz+FGi{6l$je z{SI5Wpdq7DaA&kd`*Hr+KyThyK>scDUqau~CG}rvV-p|l(t&=BBK_MMMN^v?=zn)= zqK{3%R+lpWEa^|5*oSzIvPVJt+9}?if&(Mqi^Yq+lJP3N)Whot@$At6ZU=cUg!~&i z^In|JdAu8Z{}AsF35DEh(MP!Od^51=EX@4@ zJe;tTwFO&W+V}B4KLlvf>eE6rR~`Rr*l^+9 z$lt;*!tctVNFE%^gHli4TCnq~eQU$F*xI)i;3-PgIMl#>%sBrN7-t{jlrcsp`{9qH zIfCX}*Ek(=t$KvVk?UkxyY`>FIl@?4?Fk!0tGgAhqMbu~CG9P=qiL_99Z5Twb~tS+ z?J!#QOk@wCeV29+Ei}o_rH#@KRGj7ekwf^3kK_+IXZ8?&q!s_MAD!KY|7gi`+MDq+ zjrbU23#&bvrEpe8F}NHh?pBWEA>yxHRo?xf#~tq7#;)uBP|hH&czEKMU7fugCjNR4 z`piWRjIYfZ?>>E-v#dYgo%4Ov5Ayu`K&X{8XBAyO&p-QD>ycqM0zX&Ke;6B{3!e`o z`$eI!o5%ZY=;R3CK7#Cz1m2_YV-)xtL#9WAi_Yh{0$jA7(U>xzX2W!E4d*1k-wRAS zfBF>fmhpchE4&|l~odz;(vAId?K2Yz&3= zH2ztm2QW_CIkQTKrLgXVodozH&s`|Q_5j=xL$3hf-)6}10I`%kprrY)v5a$MArzm=ax z|EH(G<8Jgln3zTTWY{Y(UHECuQ}NtD#XtB?!yg~d7UmRMZ#Z7kQG0m+T=~AevBcS9 z&+t?pK(ZZ--7>)^pL}LsDtGzu|Jh~Z-FjfSiCDifBpiFh=LUax)j!X}j*DGT&HdiH zy}MOZcV8bSe}Y}8$&_t*H;Etxuv0JT~VCh&DRAbud0X zFAICi+LrEb%OTcl3fztS>r^MJKmBNbmS-ote6@}DAH!A@5X+fbD`a(+Xo?&`1L_+h zZf-vLO>iDb|612+0{4G=)r%#Sk5EmA_Gq0!R^GvHpGB5Vp>wC`qml3W@m@A?^#{%Y z{1yT}!zX)J5PBusW96T|Snm#XI*&_dwCjGSe#pP>j}0OJ%7qVRj4EK*aI3$D%ikG{ z83JYpy69|(V(TM(dn6yBdh2z_#zW|Vt>bM1zAEHH^<*nDu`$F-FQW%1X}|vrb=^?huBX8UZVXqt)1`uwS4~)eE%tZ#Q9#tJOf|wI{eO|&U7EPQ)g;6V^dXYV_@eQ$yFY| z-w*8h_1=A6I%9*}O2zE5i(H+vu@;-%6PvBGHX_i8{N(O+oYk+IztQ#NQL*L6e=*m@ zK*nb@_jTXpy&XLNKKAZ?-l>DG_0aTH_@nuN&gv+HhfT=0sp*9mU-thd2HEWt^l>LJ zPgV?YvJWwGcWj%!uj}oO=XyT0G+lB-949O|ybesP(S2VVL zkS{mdw{-|O4$=QPY_sMLk{!ikarv=2j;)dWtPjYJ#;ycE#d%fW*NjbG0gf%$<7#6= z*$*~UF`hSvAr{+R8ok<$Foym918Vg~0k`(tj-Xwh!2eKO@9#%`sYNz-v_1(e4t=EZ zS;My_V}*5c2&Td-l|%y&39==FXQ8HF}Mk=IhC~8EgOdJUuy&{rC$q9JFJN_~a(!+1M~-`bOYY{5S<%6-)NOrp?Bt z-HlD_1>U2v6LrR>^{RP%lV{UJJJC~XwY`v+zQC}Fc(^*v(&HNU6!KBV-=~p{UtO#@ zEc>TAv@_<=9{5B4&I67de6OnNxSglMC9ef-!O1)dQYHeV+V?R(mvmNGtzk{7sSP&tLABm{YQLZB6p`K3_!} zt9WDKhez!+sHiH)EQd0Q+WSv(FNX#m|_`8`|lN$rfl|5)JLq9`k+T1%65NPsKMK zfW~R~r#|?nLdKPT_u#At*{xRbioea=p6B9o`*M%xrNpDEw^%?tYUlQc;P)ZqU+WKt z8PCl11AH@fq~JiK<_cH)DeJp<=2tvpY-us`JjUBo=qzKM zq~x>NOwK6K?+4%Y=3wvB%3i%o zyOMSfZ8@#257|d;w9bN*T$mV(xr?#2$Xz9J*Aux*0iJvKNG7qZh(ZM(hDRAIN*G!Ay6sBMvq=j7>7~!?VRaJ4??Y>!wDa@p89{?r*I}!xvCYQr6kp};gJxyKJX-Xx3TA8; zzoqp>UN6#|fpsK4jJYAy3p&$EH*uDxruIYZl;+++`%nr#nnN7Iu4oQ%0GUe*IqidwSnTcKM#hTegPW$D+ew0}B7`PrE3Xd2=xE^2}VsURAKkiQ{^u{^+i+K&%==GzF z(?4&3+do9y!8ijLX8_}b7$;KqIXA>OS&VZD&wVdM7&(WdFaTQ8PheN zl+1@jA8ed#dJCUo?3;X{{GfDQzFxYJg03IJc1O^OMr2F(pB~uY*;AbnupGIJ65ANv zZ@Szq%=FHmmXC;HD-Hjk=P}-uzdKG}jr3*hOwg9)jkk9_J`z9cgZW$|vBgO{N z=QH@2*OBE)WcXElzz2NJVy7g>%+ELI|8t?efd|_ldUc`awGs63V(AwA+fTnMc!!w0 zb}R3EbfI^s(Mr`j@cRJoY~~&6kZKoWPsF#b#~J0G181FEBbli~Z-PA9GQ!pmKVs^K zpY2ih<5x3(6MHsHo(}wJ1w{L4IS^w(GZ?E#4`29hDXWTjN2_D#kn4v%C$MAhS-?K5x-19uT zw=+(Lya zm~QHiv&NxSPMxzS1$t^<)*0xjT-sUanawkrC-vu<5VUNEma63o(o(Qr1?*a5VLkKO z8StEW`}DiPtBK$4@=e;=8uA3QrtGzixX39Zdc3OVhQ`MrRANiT3w-rdY0z{SiVz@-~_bO(=C@JLU>L$DqM zhi=SkmV-kfIHbZ)6O$qz%6}gc+>&TqC-Gmo@~-&L zT&T7*XN0>s4Z8__WM5@-A3fvm-SqWV^KVlh%Q&h<(*E$djMD;+<>0uVapp5llyUZh z=X~(g`Gi4PGh-DD=gctdAhOiTcuoFz-$)uS4}YaOQWoQ>21Rz_esGtacmUjGCuW0t zac^%;xXJTOgwOIT4zis^zt13d zr|Iw6FtG{$_hN#4_vij|vcX#G(7v2ivO3-eRW#SZp? zKIDpm^RZTB=P-RJ_jM5Y34uc;{n|Lf^yABW5%XH*impcflq-@i9mDgd(0ApFO#T6T zpgcocFV9~cxkxgYm`5UCRvXBd)lTHxqoa&nNncIy!qT~-_C&VBvzilYeTVrgwY7#^z3||H90qER@o!ku%A6V^tE9q`?f?|#T3$Ga)w##_d4M?Bi)<7?8RI&*<&`3 zy+2Xp>0QnQ6)%JIE5fHG)9*C)rZ0GFjqWYR=DL>rY1^osSdQre%|UxmKX!Kdisq&~=RF>?MD= z{u$dC9qb+kmqMOX4BMQCd<;bo$&qKBKA)|8YCr0h_s)&D^|^i?2)Ze5&=}_YaNZT~ zHLmCzI&$ z@~5E3G3Zf`tXz;D=(6Z>Uw|H(7rqNUR5$$|^icl){g0u?o9J>z{UBF#Z$@wB3oX6A zaq4{bhVOWHL)OyPp`+_*wdS*y_EFjz+Uc|d@ta!zyU<#1A-?(Jejm^8vtAm zV|6wNIX~74BW?-wEoLsNys&h^^ZDeYuw}|O%7#mxwP#-U=gME%+}nG=d^^vb0mf|l zJBtlaj!ykawk6lH{mPppz=bS{Z~O6uZy?8#lN-n>3_Xjn z&7$uN{U6&e+d=KM_S3WPG1m>Qck8!(!|<=v7M2ad-pD8OZX>+Wyyt%8VFG?4YUlGs zz8$6}uoxc6X6eoo-JLWt#QYch!;Gcxp(puK_RM|W>(|m#JbH%sQ2C8c{Zb2P`bEai z(y!KVei>#yVEg5JCPTZ&myU5GS9tweS(2@Lf!K4oDhkW*)3bQEF9t3)F zTMzMfJAXIwcMf}ta-nrjxwEI4{j;hQ8o>CP?`C0#f;=%}`F^Gd9aVkP6xQ+W-7?gS zv`;J4-7?-;e{=aeiapjDg__HW2g*yBJz|?9rq-)d|Gv*iA*L;*|5EA~bw2k@-e(@& zUQAqlfc``)aw9sAc!O#km$BdW*7nEH>Wqx5XlrS&q-Xgwe@~#LpAa2QyyIXWaMJors?i^dD24_&MB)ktFLyd}c;F&K|CkE#kZM-b)+O zzqLBnx^ri2+sLEwbAe}J-wtudQf6IaY#?U?N1)GezMBEh>XP(i3x7*bjzIsO(CH@l zxt@<`6`Zd%LcieOC%)BjFN^Y`&G;veexIT4G^OUBr*`0>Jh9@t(jXq3$2R3V+=IY* zY|=+3k2^Xid+WoqxSK0u-P+jdQ9EK8#8o;I>@a$9{rbfX_a0dnyMF18*uA~=J?Dra zV?)4g8+~tk$QgH#`Qkv%&?$My*WtXdiQifn%hbm-g-P< z-wF3jC3&SQX~)oxNu=+=n-(`r2IpDaS2fGvmeE!?%b7k5+@xcN z?sLWsC%&HnZe{l+;!HwFU_UZJQ1%Aq5 z-Ue=c!R>Z%Q=Qfw;Fb+;cY<4gaJviK27p^3xP`#25ZprGRs?P-;8p}~Dd08<+`56= zb>Nnogq!#$K3QBAmiV}^Pa{&2h)dqgPlpS&P3^aWhxVXMhflJp|9{|8)AOl@Mcga) z){-4Doui=pR)w4NOY^apzV3{BQ29M@EBtyQZYlrZ*Ra7Sd*92qc;{tguo6CZbHogQtG>70`Y97}+6=dI4T z_2BlA^y}6{+*)q)=F!K&&DPFt*ZZ4o)u`J)#%>_4(LwsP@~*!-F!=KBaao%?`sb+4rj3)m~OV10)z zDx2y|&*wMgnubqx#!ZDLk3kd8Q1Rjh-{z#;@VgLxhv0WlXi@}CQlN>|%Sq6r8#K8N znxsOL>!C?n5=|b*p04V(KK3|v_VM+?n=?CEw-nwBhA(b7*t0U05%uhEQ&9)bi;8@l zrN4Y{e7=u!-gW;oIQInKJHfX<_}+ya3_uPnzSb7~EjWwkA$WTaI38F6{@|DfjyjXF z{!7mEp?t46@cu7#*xL}_2XWl;Wk244uQo z>$Yi28-^m!FQUiWmK=kxoMU_qb3bs)XMa?F&HC7yX}eR;kz-|iaCqd#Wv!LH}>Q%$8eUpm)g*&#fzJZcwezavTwZw zI8?uVD{`)V3Dc2t-Lrcea;{qW+u?gZ_(;iZ-R}}$s3NY(lUiM_PPXgv{z+Ff^fjJGBZy1D)LO&;Cvof$*H=>`J z=;vF&th$Zvz&sV0dnCbpALGBd78}HUsFSfl!xkJd@lX{q{4g*rTf4Yn*^Zjnn8iC| z8_{9$p==22|~|77MXgYp_=fu~!Sh z^*rZ5N7!5U0B}5sy=t3Q6MKpH>7|>Gne%oZz_u^t`(q>5#2(u9W^DbgqkP}HO}71E zV4kyhX~USK>tgS5Zd6u*C&N{&$zDT$uR^QaKj)15KfaJ# zjoO>L)bWm!!u$nUYJpZ->s0Kn`P3x(>;|o_W873|bv?97gH|^{E3FewhE^HS>PBdl z39Y6;tM1ThDzxeWt@=Z!X~Uo&w7Lme$(P>@t$IVNTcA~+Bw9TM-p9fFO6cSd}s09o8{x%9skZ+OAy}{{{DY~uVTy_!8H?Hr+{mBaGi== z^!O|B)!D}4>qFr8&XPq9SM*sQd%0&_O#7g8HZl48=~u&pIq-;cUB*2FUtb5$2;T?s zEah*rp4l97?Hu)a-uW=h8fJ57PZNCAytEL$Qd84jM4u_}wTN+3;Oiv#s@l@);A<*; zy&k@*w)6)0nhvi0z;iNqW`O67;HmRyroh+k@O3JD?Ezn>!PlPf^(Oe*D~Yd5;Oo)F zYhp*gxg$1evH04{_%q>s#nB}V?{Gg@AN-kcR$OXvKE-;J#ktI`NBKUxoWK7kahC1A z9(>cl_Xc>I{(p&c^8GSjdysQbm|NdMOFe7$O|*B>PNlt+_D0%Wu?f;@J zqP>{5ke2&9vM10!Py1!suhD*ywmJV#D$Y~$6$Y2?XFP3Z4Z%sR|thf+-K zn!|I-p{4zjH36P8`7~N`7VYm`Lw<^RyUFX}ca_&WHH`D*d47@qQ!g^2);$ z+uUlYm$xe=zb2dBNL@z`a(kS7?G?za@~FAU?L_LkCUQ^HMD=ks_rCyd6Z3V!YV^YI zr-gi)`q5olL+D3qdt>NFd7`28GnsxeN_x8CRIi`q^dop0$w%s3y~n_zjQ?xD{*fyj z*~F|P^r8QgTWEhP!V53K{izxL~aRk@Rb|-p)I!Uo!km@$wMFHMWKVu@Imzhk|XKk6Ug1$v|1aD z_Ci0=+17MNv5RU0H~a+{?cSbj|EzPqZ=a^~#nElmCaShx>%J{~uNt5xzs^0V8`b3F zWI$1oDGYilQt*5A7VH-KK z8-_R=e+9kRKxNJpXhQBI{HA?oxyXJqbj!oXv_Qi_JSSapXe~Wnl-;Ao@Vxq$ZU*+y zRPmeY617LK?WjlFwS0G>`a<(OHHmuuBc5-9juZTTRf8lOXz*Yh)n`Z#(eVw)xM#C` z8i1p>hZ!0~$SsdSMkY|VTR;vx5Bkb}D=$z69+kl3P@6aOm{^&!5t* zW6q0xoIaB8Z$hp-ntSt|yg}Ys0=vjVC+?;DqS;Hgk#*v%oW|IDsZM(ndQqRrKD=J+ zu|uccC%=CNICTfg`Y`+F1M3Q>`TH!gJrw+^fm5|mxs1P$KFWZxaVRx*&?(6Oa^hm$ zEjK6{ZP-VjjeZ}jTYG&_k4T04sac2?6-hR zb@=Z9lYGS6z{HyThIf6K4DYu1v5H?)u#A1!whnb^7+=Epi_^%N-K}*aZ(g3|;9J1o z?B~4#J6`Vjkj50Jy$YDM4{b9r%Wi3}$0*e|BRjIIb@2O@xDEDm75Kw%g2y`6-9|g! z{$kzx^)mc8i4491J}1F{4u5Y1r%m9a8pn;`vkBjJ2DqfV>wwqPqX6$~z$>4iwL$4H zHU(I?-!TDR{7~TUpWYu{_6O|x^R&OAeU^4L?K0XZ?T=|oX)9=TZs=0l{3eU_AebyZ@&Dglz>&iasj{2&(dwlot(50?o>5V+I zZ0@D*7~`+KJHQ?O*>yk3r2JJS{wjoQ$~W$u=qxia9=f349O8EJN~|5D`$hhq&?4W? zzysB7*qRLoSxi3D(8M$FLUopPDKqwFK!1CVVhG;mGHwAM{buV2;&K4|6ALD|k_Gwq zndGGAIbU?=5?@BRZ)fc)Z%$xzwc3NJ2zV7^Cfw;;lGf=?-y`7D6Mm}>xfi@{MrZ7r z>$9s)WdC7S;M_UvfbIv?TB7t;bje{(-y68zL1#~5S55-o7}0y;1os(q@ig*$8u}_P zS3sPyo%jsd_V(raGFnJwyrny_wll0k7ev1 zL4TcT_CwmYX#a_JldrdNIRPf|UifDc`{Y`AL7o!i1v_#t@{$8DR7-q0^plL`^L&2c z1UCX5Mu4MayqLL_{8msNE(V^jGd}m^diKhf2P>zVbC)W|i)@xio}tYU`m2LBiq#Hw zbH)xN{;0y1OXuvk!?E9oiDPH;?(7in0*7kQifKpdea-XwB*qcq^WDhz9O9noiX(t^ z8gxB9jI(#|zSyn4oH-zPyoOw=#z|*W)e&cGTZyi~U$dW=c;fsP$NkTh{&^!szCJ@k z^_@rGI{%6|p?x}ix6pSfccPb~ciK0xl78jObWTUz#RcuP^lfy|?%b5l}b-!~rTFn>2wBobuvfYnw>3cWy(ftL=X^DqHpO6lnwxv2_&!dxN zhr!nj_?iiQ4-o@C!2466Zy|J*k5KGpYi%doXEqg~i8<)|$ktOtF!%e~|$)4%1N7>$!=)KktiG{d(AmY-tZ*rmyeVJou z9Z|K=T1S*E`(hXUloC&?pL6unpMI!Msu;f|&sCk$3i=7tPndpmwubg+D1Ofm_EYW2 zGxfBlADz>#ocAPb;=CO0=@MPBiK+C#87dW9Ie$1!{m@_7_XT~s=r0fX5?t1|Owr!S z&~W2h%-+e$^RXWENsg*wap6!`{w3Zgvfy;lr}bCIfzi}L(C5S95w7YXPUT&{A&dU{ z(%+`L^WDDmXYT^i8FN;a4!>|B`zrXVb5gIQ)tR!RX?5PuNZNI@!)bp)YxJw!kGBH$ z^Tv;{pYyTz(z_RtjV5Z58Vqs*u9WN({pJ&l{SIU64jF8$S10R_D}AzK%U=y*ta<31 z$~p&7^OJ9x?Gw)lE_gqTA$ zTAXoGv99Dw_RJIiqNlylQ|;kWZddh6%&$zn(kWzD^-6|kzO5P$%+}Ve0{;WxZ0vBU zH&zk4ta!f_8XjcsqL{y#aj4y-62z@JFv-73OFu70Y`>QmQ1E@HQZ*3awpEU~nIqVxq=ocOwtM2RvpX3K8(tbo+K)aRpE3|89jlNp`K@;V@n(+w}@d>Iw(fO_hmuinriVu|Y zn^)}BEo;A7lyM&~rj8QYwL&}9q^xe#PXtg{SOJ z6rHd%e8uAG^JfdXqd$J3=h(#GS1^3L{)eCG5L^e2M;M3Cb=!H%6$E-^KQJK;E2xE>gXAnRL^ z^=&+(oa-#!$sji9HW*rRuj<>-P{(ghWv0m&SzGfYFq-d~ zquKB3QfBPk1-!}k%cu{_yNQE{oz!1lhWk&JmPH;96+hhrEmb3I_m(8znfxmKOKv0| z4mfJeIE=*^ZdpM`oujom)ay>SvD75SCkI1bH{@0Y?k*h&KFjG_XMM%vZ0JPaaoZ(Y z+kOh6qs{%N0Y@6N{%DLx>!IM+3atlf~B$^8b=EH(PG0*uG0a|lE zYA_DJ@&dGe*r&Cf*BX5Y&{A=g^367fZF1KdtH_&^min}e+iUPOeQfdh!8}cRY}VGW zb<$-MOH>YVC!s_8krSO)d>y((JW;zfC&j%Udp8uFyMcJ309zN2Nkhb>=~l z7}+bsrrUU5JTzk?<7R)4A9I`{7E%qK7YkhE(sJHew4on1R<(GtYg*@(eje~?7{s9* z*)Il%cHq}u*Ie#yo=7ajT)(}USV-{{|HrOe!nrcwM1QHku3TGM(%f*@iWAxWpqcKi z$)f#`_F~%Ce0hw=@77*HPyB4H=90$GVzcf=R%DOZ^VxnszvY)*=0;Mn3D~8P{1)}? zc90gO6XzXt2p?TI^Y=Yv$a{5+njb!u5F8Z$aX?=jcRkuErzFXPD$@&0$?xPJE z#EG0Or?sz&{HmUACUBa4&-874rTPxo!GDC_zn&R3_dEWQwgEc7N~=7a@ejy~$)5#u zRPhCIRP97)u6dI`AFiDjz094DoxealSNmz^!#4xZvy2~)FVGX^N0Q^Kh0q~^@5qDd zlf>ggZ#UAe#>5&dHBNl_%Q7m3(CCW zf92e@?^S0e$nVW!eEB`?C)o}U>Y#l+bl(ikXAl$BkqeuG{7pp`i}?sA<{hld3BORy z=UIbO{-=`XZ2qT_=lUpbj;t+bp0D4Qg}nW_m1)#e@Y@H#X=8|^_`XW;wR1)FE&gvt zz668bp9Bnw3oB`no2+fT-wK{h!?5+dYuACbj;lBd-xbf@?5H}CJsMgm{vT-8;Xa*w zOfvaSFTWOyvm2`7`I1j1A6pr}cThfj`E0?qP4MGR%_$Yz6MNPw_SAZx?7@}jE?oe7W9F?+LQV8#a=z1@=dBK5Bij! z0qaC$0oh{@8D~es2mGG<4!P;ymwJ2ZtX~oQM!t$X7)tS{f_^_(WsGS z<(4GNjXI+>5K}5ABA=Uy3@ZOIMLBBaKaf+|)<$fL?5pJWSPy6HZ~t8Q^z#0!KcX+o zucZEtHM(oy%O-M}uOh!^;L|U|1;lku`}g^Nd^xrnI+-|*z6yx5nk;R6{!|b0X>`AFI9YoI}LpIahcpNHvFdBqXf z)!F1Yl~+814^vK&xd(T4IIePvI^Vgs`hyRaJ_F%*T;`yW{Le|jkQ>@F89K#dLE@5T zKQo8E;_bLP%C_sn0W zysO%;x5%S>7kZzimNmPQnyGMhTZHefh4%f6CV2OxV*5hSN#~ntP7AHtuLpk3AM26B zVLqRoF8pW;YmtJx4L_>=awcC z-6`KAU#6Hse0V+B&laDK7kmADqA#wy()eQKR3_$x_Q)5v(6{x)tAl;}a@fLI1cGrt zGNZF|hafXs@x?kjw-sE|@x|IthK;VsXu8VPo-&>Ey95Z;LPEF`F3Md|pCsBU zQZMIFYg=0rLKOwAyoi_6iwWTEfSPG(wLMl75Jdz`Q?Rthw+&*|9=t@f)SlDRCIkfq zH6jX6UoZdfZ}y&KKM#4LJ(qtzpZ%FUd-lw%S+mxfHEY(ad6WJq_DhrxzCnM^2ksY; z3p<#1wAK@yYrQuR+4F}K*@Nt}=kv60zkoKiuKE^m+j#pC*|UdvY7cAWCr8O&$gXjS z%aCVE=|@y{YK>FLxD2PhB)vRR*Z1ZJYn<q=%8gSCak*=@q0~NS$04T++3*K60{He$&#CoUPfNF{|^2?fDAj zlh#MjfUDzwQ}1ejpndR6+Ws`X>s-bvRqr}G)VtjLx^DzJ12S%HDC6oMV2($YOn}BW zqmQkP=wrLdOV!7o2bO`rB3qtYCqg6L>SOZll0Nn{XFT^aXS&z`&vM4|0Q~d@XCf7I zB-=-}Ww9Q~^%6BD;haTmm+FwGw2rLn6YtP_YJo46wiN$n9<-Ho2U9q=YpwixWk6f| zNafpQ=Vj!&^k~V_C!ymG8;jE`L%A<|k!&pXUL9bTjfJ>8jkijsklqFlSHpL*p+xl; z*}p3CI^mw*1>EvkxB$32@BHA7j|kk`L%1I&mAxnmxAe&WKj`p$#{S2&e;gfxJLz>h z!JYPt7NC>wbGWMtWc@nUU9xS+&M2QvXWw9N3|ZoD{Aw73tPoy&mU?p7m+>cHJ4cpi zkFFx50qNAwlfRk#dh)HU4?MMm`SPtSsP;4{_am9Iit;Er(7!a1EUb*P_pdq0>6>T@Q_3DH`>`8@O*}k1ihK&(dmy$9@US zsXX>+wAwqwUr$o`jzs0{cgh2LaPvTS_L=`z5%8*$Gm=wLJN_Gt0dl)pI&`W%YLt&X z>Z~BPsP@t8@rh~CS}EkI&*N8(ZKl@l7c#F?m)#q0-4T5EozVXhTV1W^VUJ>rT-nu( z%PYX9xykY&efk)>PQ{bvx$gS6)AcVb-_aLnsKd6_#d=^JzE?LxNuiB(q3_i@$oM2V2L81k5=_#aHgCRb z_ni|r9lmqo^M~Jho^y|!8ED03P{=s6az<#F=N~M>o{cPSmMktSbmoSBPoljaPP}vXd(Uq^JfMPeh5mqpmB8@| z?XE$WSw7s^f-^SuO>LL*H`1;DWvO2CzF2Xze$h7s6)2p4m%!e$Wr*LE8F_- zdSF|}-dh9ypN2=CX7B77bSKtQ&0Vgg&_!>h-+iFx7gBW0b;R<}ygHKpYfhCtS#zq5 zg%{BaH5XVO+ZoO&tY^eyig!1aa_9&6=W8z~-Z&jOca(GnvX1yijWf}M3$gY5i80ZB z#PH&H;-@L&pfg4Dsjs_zn;xtk4*-Yk+KP?TAOD_S^y#^jK9#e!3F3HF+gNDw3$|yE zQ(~R<=KWjH4mx?W)ybhrtCLf=)yc{K1HQhGv5Wemv<}rF!lC8TqwC}dDKGJ?YwiNumitK*< zdJh{r>!U2jQ+^b7JxQD68M}^p)^+L_6~KOg^^ts`#sifDC&Lq{DqUogNq*F6Z!rHbfqUF>yl06rLIdJ2Bvqu8N?`Z`a-xaA+}K0cH#`+JI+pw zEl#$zD}gW7PTbX+ME(yg=y6WpbUMP7z_SZ@gd?Z_AWMnMG~5iI$M@i>2w5@`-l?;8 zv`)XeTzL5rV#&%j8J*Anjq-EYqdYH{J#Wg-MHbk7BtOuTJNLcu6@UMed$gY4)yP;F!sG9wMPKS=h7dbZ`r6-ml*$h< ze-tqkKkZK1Txd$NM0S?Tu%~u1_P;GW z??L`z`oEfeRd=79Y`u5+_z!`DyJ`RKEaLv53m;((rZw{7nBAXkTn28g5B=G-F48{W zcFMj={;w$aC-QfY@6H5G2X|ADeTD3GDz3HUw$6!J`Nw<52h#bXdUsd9qu+k~jo6wO zom?vq^y=ZjA-pZ9?uG%l*4HMh*IH zJ#=nyMV+$wtl+oi3KwT+0^iGjB}xy`|6c{JBOP!BaWLgWSR@)i#%gSJkAw7f-IKVF zIZ}Q_S_jKsu#Yjm0DgT3yW3u5nWdeI!RDraiOgdw0@#W}+vQQ_!;U*-R-Ad<9Wwi{ z+bO=Y)+Sek^;jO^{G{a3{4VOwKu1@<_fdByV}^acVZE1ioPB;jb;~xd_2`AsdO}`< zhHX90CvF^b;~Z@AdEoFMHu=yWu3>e3w)Kb89W=R`Ync~kcTu0)mv#PdQ>brgY+T?E z$6TAwTpRktHEdg(V}0Um+;i2*96P#;I^Fzz41FNn>usKuF+SMq#m6q(`zF3@u-B^? zv(_gZyoKEN4Tvue0xvT^Gb2sfUl)du-6&$fvqe?A9|Ptx=|9+IwCCvXYyAnydpcgg*$>Iu?2Y%(AI)c)E5tiaCK+(}C)#?8 zw%q=+#xbhryg^$T)ECur&SosvGnVzCo}+yk4;zc*d>-GRm|uh80|*!S1IPzBFeU?>y}$fcfq+m&D8X@W!cGkD7R zHtxee@IbK4j+rzF*2dVN4lM z_KPHkf$?|HwEU{AuOV_;HihRtN{-uJ4*Xg-9RTiJ)|M_Fzs_p)fj)JHqAxaTdw!xf zbpVsspV%qXEgMPcgk)b9>w}1F(H*O9-PQV&_QB=A8?~di0H?#@xvbqv!BOhkTQn*? zVLfN~*Ai>>GWKshY&WN)V?BhvcX8_$`{eemKurT>h6kPr=E52?e( zQ;3bni?0W_0Wcu zGsrs0*`4sFbo|lCCAaTj?L&+i>jZ0)%Asu34yd+&8`}SDy@h>}+FniDuY5i5Puxwa zxQmuQL-`tQznH$sM$w%ea0hi*yGu9akJ~Q;MrTv|`DZBKUHkQ2m0uCAfgSwl3)-)< z`-{~lnqubp2bq^M3tJA4kRFJx0H1cOSNJY}74^O=exxqzrvwj*A0=~H!`_n#y*`y< zv#3I^h}y!2Kub8NQ8(ulBV(4ud+Ex^xCXoT4c$skc+~CWTu;7Pg7PhXBbBe0rNQbx;d#Y;Q%D_aq1m#QKIom{ zc}4Cv9l;np#QUe~`kGPbMH@udem^q?JH$r**Bxi$utj{S(lZk{!+60C&rIU{;=Cf? zOf4kN6*74G2==7;_GsA&X2uwFfBv7f?gTTdBy5wjki#c?iFLfM!e_9UbBycxe|^&c zGm^86R?ZjZ6MNX6TWlX&lW)ex1KN-d;PL0ykF0yF9Y}oodvGNmp%#3g3K=)~LAA2? z=XCIDZ`hueM}DxoC9&zSd#Cyif35Rer>nQgjaxX@()Ftt2i*_4fN@wq><7EE)@?eh zee4SGXZNxr{PdsHDP7;yC%Ed6BU*=)^5}OVzaL6zr(-&c6+lU8g*BGFbCTo)lpxaci*^JMaBL@sgh(7Ej7vCw?3$ zzi;}hy`N`jXMeoN2oCMHZ6MFxyO-r-&x6+Uvd{@w7apRF^tb0Jvw26cQOwST7(ncmLw6TMpxgnUJ0z9gn+!Uw)xc_-aA{sA1JeJ_&~Faeq2pIqV|9rfoVH1sgEzG z^pUk}b5YYoQ$$~mh?GdEfI_&thonpr?wQrU5yPke`)wc`6v5WR= zE${4JEAU5Y6Wd+$9Dk&}Z!ZhDJn$}F)Aq1$8x# z2YpjX2MPHvM*CuEJcP4+cxcmH?swQU z?*Yyk!1>FVmr%dA!;im;$Q<~wp$K^|nw|F9`LSWYcT$)9cond21XkI0Qu#6pt6~t! z2CxV{!p$R_PguQs!bckqYaY1Wj2dMLM$I(Ejzf^J8O9gn<`6}75ZUQ!Z(-ZP}@G19!Tfe$_ zlQ@&}`5s?M_VGIAn}(Ilo0@Opl=+M@i~bgLDYLEy_RYX9`%J3rssz5vrX|&`rj(#)<{Ydu~R5Ql+Fvji-*`L7MthPZ$y8jXKTF7gqFN$?2{>SEN?ROcB zkJIaZN1647gN@_gijaSMP-Y?UZUA27o{f(f#kJt|I5&4n3e0V+5mN2xTY$L_FpH?BKvW44cYdU*qRn_(@Ltjwqul-(bMz9f=e75-6I@k+t4eTnnbu3J|BZ&F_txHL~m$VRC>DA8wwd~=?#ia)s^mG*Zj2c+J_-7UA<1; zL}E8tI>AppDsQ6aR*%F&`jWh1jb7*K4E4=oY-D!rRTt}6ds+M-SBFDih0s@VL>^W0 zjyqu*zs36$U7{fex!RR3u?Tv76nfP?5UDzo<&Dz*9r{F6_J}vy;IX!@cw=q z7d$bPv3~|$IEhsEihPdrUQ)@4BzhP@T(A^+&^nKA?7p_6hYILsqQj#b8}MlLNMuPw zzv7;&(=1M$9;y2i9Zf`aEbVuRwrKx2{*iCu3&@kC`FHKw#CuYl_T0ZapBKeNc)#dGX>vo;*+btmH{~uzr_*9_%y3HvZ(~ za9*qmzw}<2H;E#dpLh6$}=1K>DsGn+%wDSUbl$#e)?H(!X zpoTfEvpRH&&#Xh0o%(m{P>bk`>}XD|$5;bNHpN-P&n13#2K`#Vqdi*PIa&no{x+0d zb-Z_bHtA&7I@SuH-H@A(h=)scIb#vxxACUYH#O7`ui;Xbv81q_qWcp zG@DI-JeS%p1K^z6XNX#ed4DpLz7tjW_nBhSinR ztv$)!Ic@1WxL4xa%vp~yXUQ*4@y4P$)&OvD9dK!k#b4EV@x+@ceV5;`d}#|(X}o1d zGL3`BD2+4UH5SvJqwSi>aT{B#E*rnyls3xQSJ0kb4z!pwuBE}adh}Pa=peGd@v_!* z_>v~BC+{dYd5eD7Ik>Wq*)fehqVUXb9b-I|epYjaDjh9Kx4VJ%k774W8sE05N#h$G z+hfqb*03?~7FoyDu8dFXSjWZ5licmnZWy7(F<%bmrctE7K_-qMmEZ7i(i=$&Nh?T) zlFF~}BvO1^2Y-$fS{+f>$gpm%Txz1J=ky`Kubv(J5X>Ubb? zEIyLyy>?dHj3j)tFy>L5xOE@;MXl908S^*5Qz5c*L`oZN*duK0m}I$zkK@c_xdv@I zI=6C-F_&CBNWB%vPVGY`$xGx)7jli51XGjr4DDk^<(gs%C~oLm)LVxP$VuVVHe#b& zJ}A~54uP!$SzlWOuSR8kln1b(*|^Nn`JHue?RsyLm2s8OPX#n0J*&%gaD+xQ&zJLP zuNV~n4}*Ff5nEF8eQBh*`iyg^5=)jBRd zg8e}JkE8N&1?vQB2V#zJI+*omk54vE2fGdYxp{FPGEV2o-v_U6@ZRaC*g9($l}@p1 zmJew6Ib_A1e!S84b4QkWF}L@s_jX)%YzlNW6*&{7jXUVeZS-Xia?AGbzcANHzH~9y z)vkwjoINCUuEVyL_#^#Dnd@rj)KB@l=emCL0{PO1bQ5x;7peT0^GL5J%^^LPG@JBf z(oE7Jq%qQuLwRENi87%<9@(F@zo&JFY`A)-7$Pzx+)g{*#lfD^PR`C)JT-Oh2cC8Qzx-g|;a?wKz}QxRk8g!CHQaBi-CsT4Xzy$t zdD3MMKx1wWk&OfWpmt6rwtdFd(gAe6_*`IxrmK-3-<%Zc{Of{P_f`1VYae-OS&Y5p zzz_5NDQ5Tk+?Aodmx}DGkvWqW!(o)%%7NS z^J{}9Z9lR3xqfbAeKU~tP1=5zPe|KOtJ8MX&$_u#RG*3K&K zY4_lVmuP>Nxr00GZw6+o+d<2(i>H>}X4G8tS?I{EJ;m$d zXYG~RJ)DY@Ozp&gpWAq^J@*RM%8~_I!&R^b(7wIO$^I0SInkc4T248a*C9X9QEtZ9 zu~cgZ%CvBv%*huw-fE+cHl%Y%&j@@SV;hG~@YV=6+eXVtv=Q&H)n7qd(LSiXVIh1T zu!0ZWdrbVW5|iqOsdfUmOUx~w_twb1B72sruln<$JY&w4-`|_qX7}RL_6GfagE?CM zZ1RDTe6v0jL%n&ocI@+I+kL)GwErm2Lp<`m#@D86^zn%9vlmyIulcy3^(eZGn@-5pcHb1oRGY_5nC^wyGDIFPfMyQqM3~3t!O2PZ%?Z z(9+0vm>)zZE0}*OX;*8CV(>nTKFg129XQ(yUhhwVQ+qd7N2>79C6@2jUYX9~|A=ym zE&p_k^Lms&3cUA#uVeK4UU>dC@D|mZWJj=Z*&}$4WPf~Icfj)EraU1zcmL(iRO`40YlxW&g$IcCo_@68yvu`MHSHj6Yg!ErYOGtl3nnxOyD>2FoM`wnzrU-oKo#l^eVzZ!AIk{$eG#vXX z`k}o+x1N;0&{>RQsU4e6e=G6bztC>Z$?8VQVJvV$>J7xSxWPB-byutV;jaQ`a);>(%#dq|*S$)4X(s%7s z=P>W)_%U-k{C8!G|I!`wy_&w)gnf_Nk$+9!M}&Qk;=LG}U%`1XH~(l{I&cDBQgKoY zPPD#uJTAY>H-KvnIC(R~iKEB889g?hpVIf&PxA6(z|rCFhRsU%2DOZ4yf{m4QfzW&?C zb2g26^nLjKw~`_F)NPL8v+M`!a`73mYTnz(Pu=qsr32~ilAT)DPh&hL(%%n8#}m`( z?@|1_+hYDpIxE7xP{BGgoExi