git.iko.soy/rowtype-yoga/purescript-protobuf
on master help sign in
91 files changed+18941−9376
since splitsnapshots
unifiedsplit
.github/workflows/ci.yml+79 .github/workflows/test.yml−18 .gitignore+2 .vscode/settings.json+1−5 CHANGELOG.md+134 DEVELOPMENT.md−33 README.md+1−234 bin/conformance-purescript+1−1 bin/protoc-gen-purescript+1−1 bower.json−39 conformance.dhall−15 conformance/Main.purs−94 conformance/README.md+41−7 conformance/generated/.gitignore−1 conformance/spago.lock+1623 conformance/spago.yaml+17 conformance/src/Main.purs+104 conformance/generated/README.md → conformance/src/generated/README.md conformance/src/generated/any.Google.Protobuf.purs+151 conformance/src/generated/conformance.Conformance.purs+407 conformance/src/generated/duration.Google.Protobuf.purs+124 conformance/src/generated/field_mask.Google.Protobuf.purs+257 conformance/src/generated/struct.Google.Protobuf.purs+296 conformance/src/generated/test_messages_proto3.Protobuf_test_messages.Proto3.purs+2597 conformance/src/generated/timestamp.Google.Protobuf.purs+155 conformance/src/generated/wrappers.Google.Protobuf.purs+469 failing_tests.txt flake.lock+251 flake.nix+175 library/README.md+383 library/spago.lock+1453 library/spago.yaml+42 library/src/Protobuf/Internal/Common.purs+189 library/src/Protobuf/Internal/Decode.js+53 library/src/Protobuf/Internal/Decode.purs+421 library/src/Protobuf/Internal/Encode.purs+406 library/src/Protobuf/Internal/Prelude.purs+76 library/src/Protobuf/Internal/Runtime.purs+284 library/src/Protobuf/Library.purs+54 nix/conformance.nix−22 nix/pkgs.nix−21 nix/protobuf.nix+182−27 package-lock.json−13 package.json−10 packages.dhall−125 packages.json−4578 plugin/README.md+79 plugin/spago.lock+1695 plugin/spago.yaml+28 plugin/src/Main.purs+1601 plugin/src/descriptor.Google.Protobuf.purs+3283 plugin/src/plugin.Google.Protobuf.Compiler.purs+340 plugin/test/README.md+1 plugin/test/Test/Bench.purs+68 plugin/test/Test/Main.purs+140 test/generated/README.md → plugin/test/Test/generated/README.md plugin/test/Test/generated/empty.Google.Protobuf.purs+61 plugin/test/Test/generated/msg1.Pack.purs+188 plugin/test/Test/generated/msg2.Pack.purs+227 plugin/test/Test/generated/msg3.Pack3.purs+120 plugin/test/Test/generated/msg4.Pack4.purs+212 plugin/test/Test/generated/msg5.Pack5.purs+232 plugin/test/Test/generated/msg5_1.Pack5.purs+58 plugin/test/Test/generated/msg6.Pack6.purs+64 plugin/test/Test/generated/msg7.Pack7.purs+58 test/msg1.proto → plugin/test/msg1.proto+1−1 test/msg2.proto → plugin/test/msg2.proto+1−1 plugin/test/msg3.proto+16 test/msg4.proto → plugin/test/msg4.proto−5 test/msg5.proto → plugin/test/msg5.proto plugin/test/msg5_1.proto+11 plugin/test/msg6.proto+15 plugin/test/msg7.proto+13 psc-package.json−22 shell.nix−37 spago.dhall−20 src/Protobuf/Common.purs−62 src/Protobuf/Decode.purs−156 src/Protobuf/Decode32.purs−83 src/Protobuf/Decode64.purs−116 src/Protobuf/Encode.purs−247 src/Protobuf/Encode32.purs−71 src/Protobuf/Encode64.purs−92 src/Protobuf/Runtime.purs−196 src/ProtocPlugin/Main.purs−994 src/ProtocPlugin/descriptor.Google.Protobuf.purs−1659 src/ProtocPlugin/plugin.Google.Protobuf.Compiler.purs−214 test.dhall−23 test/Main.purs−116 test/generated/.gitignore−1 test/msg3.proto−16
.github/workflows/ci.ymlnew file+79
@@ -0,0 +1,79 @@
1+name: CI
2+on:
3+ push:
4+ branches: [master]
5+ pull_request:
6+
7+jobs:
8+ test:
9+ runs-on: ubuntu-latest
10+
11+ steps:
12+ # https://github.com/marketplace/actions/cache-apt-packages
13+ - uses: actions/checkout@v4
14+ - uses: awalsh128/cache-apt-pkgs-action@latest
15+ with:
16+ packages: protobuf-compiler
17+
18+ # https://github.com/purescript-contrib/setup-purescript/
19+ - name: Set up a PureScript toolchain
20+ uses: purescript-contrib/setup-purescript@main
21+ with:
22+ purescript: "unstable"
23+ purs-tidy: "latest"
24+ spago: "unstable"
25+
26+ # https://github.com/marketplace/actions/cache
27+ - name: Cache PureScript dependencies
28+ uses: actions/cache@v4
29+ with:
30+ key: ${{ runner.os }}-spago-${{ hashFiles('**/spago.lock') }}-2
31+ path: |
32+ ./plugin/.spago
33+ ./conformance/.spago
34+
35+ - name: Install Plugin dependencies
36+ run: |
37+ protoc --version
38+ echo -n "node "
39+ node --version
40+ echo -n "purs "
41+ purs --version
42+ echo -n "spago "
43+ spago --version
44+ echo ""
45+ cd plugin
46+ spago install
47+
48+ - name: Build Plugin
49+ run: |
50+ cd plugin
51+ spago build
52+
53+ - name: Test Plugin
54+ # Need --experimental_allow_proto3_optional until the CI protoc is upgraded
55+ run: |
56+ protoc --experimental_allow_proto3_optional --plugin=bin/protoc-gen-purescript --purescript_out=./plugin/test/Test/generated --proto_path=./plugin/test ./plugin/test/*.proto
57+ cd plugin
58+ spago test
59+
60+ # - name: Install test dependencies
61+ # run: spago -x spago-test.dhall install
62+
63+ # - name: Build plugin
64+ # run: spago -x spago-plugin.dhall build --no-install --purs-args '--censor-lib --strict --censor-codes='UserDefinedWarning''
65+
66+ # - run: mkdir -p ./test/generated
67+
68+ # - name: Generate test from .proto
69+ # run: PATH=./bin:$PATH protoc --experimental_allow_proto3_optional --purescript_out=./test/generated test/*.proto
70+
71+ # - name: Build test
72+ # run: spago -x spago-test.dhall build --no-install --purs-args '--censor-lib --censor-codes='UserDefinedWarning''
73+
74+ # - name: Run tests
75+ # run: spago -x spago-test.dhall test --no-install
76+
77+ # We're not running the conformance test because the conformance
78+ # test runner is a pretty heavy build.
79+
.github/workflows/test.ymldeleted−18
@@ -1,18 +0,0 @@
1−# https://github.com/marketplace/actions/install-nix?version=v10
2−name: "Test"
3−on:
4− pull_request:
5− push:
6−jobs:
7− tests:
8− runs-on: ubuntu-latest
9− steps:
10− - uses: actions/checkout@v2
11− - uses: cachix/install-nix-action@v9
12− with:
13− nix_path: nixpkgs=channel:nixos-unstable
14− - run: nix-shell --command 'npm install'
15− - run: nix-shell --command 'spago build'
16− - run: nix-shell --command 'protoc --purescript_out=./test/generated test/*.proto'
17− - run: nix-shell --command 'spago -x test.dhall build'
18− - run: nix-shell --command 'spago -x test.dhall test'
.gitignore+2
@@ -7,6 +7,8 @@ node_modules
77.psci
88output
99.spago
10+.spago2nix
1011.psc-ide-port
1112.psc-package
1213generated-docs
14+result
.vscode/settings.json+1−5
@@ -1,7 +1,3 @@
11{
2− "purescript.addSpagoSources": true,
3− "purescript.buildCommand": "spago build --purs-args --json-errors",
4− "purescript.sourcePath": "src test conformance",
5− "purescript.packagePath": ".spago/",
6− "purescript.addNpmPath": true
2+ "purescript.autoStartPscIde": true
73}
CHANGELOG.md+134
@@ -1,3 +1,137 @@
1+# Unreleased
2+
3+# v4.5.0 2024-12-02
4+
5+- `spago@next` build system. Reorganized packages.
6+
7+# v4.4.0 2024-10-15
8+
9+- Bugfix #38 Add `MonadRec` constraint to `put` functions.
10+
11+# v4.3.0 2023-01-30
12+
13+- Development: purs v0.15.7, node-streams-aff v5.0.0, assorted improvements.
14+
15+# v4.2.0 2022-12-27
16+
17+- Add doc comments from the `.proto` messages and enums to the generated `.purs` code.
18+- Improved dev environment for __purescript-language-server__ and __ide-purescript__
19+ with `PURS_IDE_SOURCES`.
20+- Use `spago2nix_nativeBuildInputs`.
21+
22+# v4.1.0 2022-12-10
23+
24+- Nix flake. With one-step spago2nix.
25+- Upgrade dependencies.
26+- Delete `mkUint8Array`. Upstreamed this to purescript-arraybuffer.
27+- Delete `manyArray`, `parseMaybe`, `parseEither`, `parseExceptT`. Upstreamed these to purescript-parsing.
28+- Refactor `manyLength`. Get rid of the FFI, and a slight speedup in the benchmarks.
29+- Delete `Runtime.positionZero`.
30+
31+# v4.0.0 2022-06-02
32+
33+- Change the values of `UnknownBits64` and `UnknownBits32` to `Bytes`.
34+- Upgrade __int64__
35+
36+# v3.0.0 2022-05-27
37+
38+- PureScript v0.15.0
39+- Protobuf v3.21.0
40+- Replace __text-encoding__ dependency with __web-encoding__. Consequently we require *Node.js ≥ v11*.
41+- Replace __longs__ dependency with __int64__.
42+- Remove the only NPM dependency: __longs.js__.
43+- Rework the async I/O in the protoc plugin.
44+
45+# v2.1.2 2021-09-10
46+
47+Now the codegen
48+[Nix derivation](https://github.com/xc-jp/purescript-protobuf#nix-derivation)
49+is working properly.
50+
51+# v2.1.0 2021-07-25
52+
53+Reorganized the `spago` files so that programs which import generated code
54+can use `spago.dhall` for the minimum necessary dependencies instead
55+of `spago-library.dhall`.
56+
57+Reorganized the PureScript modules so that all modules except `Library`
58+are now explicity `Internal` modules.
59+
60+# v2.0.0 2021-07-22
61+
62+Upgraded to PureScript 0.14.3.
63+
64+For byte fields we’re now using the `DataBuff` type
65+from __arraybuffer-builder__ v2.1.0 which allows us to avoid array copies,
66+and so may speed up encoding and decoding in some cases.
67+
68+Created a `Protobuf.Prelude` module to eliminate many import warnings
69+in the generated code.
70+
71+## Breaking changes
72+
73+The `Bytes` field type was formerly a wrapper for `ArrayBuffer`, and now
74+it is a wrapper for `DataBuff`, which may be either `ArrayBuffer` or `DataView`.
75+This changes the API and will require some changes in dependent code.
76+
77+## Bugfixes
78+
79+Fixed a bug which sometimes incorrectly errored with “index out of bounds” when
80+decoding packed repeated fields of double, float, fixed32, or sfixed32.
81+
82+Fixed a bug which would cause a compilation failure in generated code for
83+enums with negative values.
84+
85+# v1.8.0
86+
87+Large (×1000) speedup for decoding packed repeated fields of
88+
89+* double
90+* float
91+* fixed32
92+* fixed64
93+* sfixed32
94+* sfixed64
95+
96+# v1.7.0
97+
98+Upgraded from Protobuf v3.14.0 to v3.15.8.
99+
100+Now supporting [proto3 field presence](https://github.com/protocolbuffers/protobuf/blob/master/docs/field_presence.md).
101+
102+# v1.6.0
103+
104+Upgraded from Protobuf v3.9.2 to v3.14.0.
105+
106+To conform with v3.14.0, we’ve added a new type class `Default` for
107+awareness of Protobuf
108+[default values](https://protobuf.dev/programming-guides/proto3#default).
109+
110+# v1.5.0
111+
112+In the code generator, when `protoc` hands us nonsense descriptors, then
113+report the error instead of generating uncompilable code.
114+
115+Export `Library.manyLength`, it’s generally useful.
116+
117+# v1.4.0
118+
119+Improve `Protobuf.Runtime.manyLength` for stack-safety in the case of
120+packed repeated fields.
121+
122+# v1.3.0
123+
124+Newtype `Protobuf.Library.Bytes` wrapper for `ArrayBuffer`, so that all
125+messages can have `Eq` and `Show` instances.
126+
127+Nix `default.nix` derivation for including the code generation step as
128+part another derivation.
129+
130+# v1.2.0
131+
132+Preserve unknown fields, so now all Google binary-wire-format proto3
133+conformance tests pass.
134+
1135# v1.1.0
2136
3137Added parsing labels so that parsing failure messages include a path
DEVELOPMENT.mddeleted−33
@@ -1,33 +0,0 @@
1−# Development Notes
2−
3−## Generate `packages.json` from `packages.dhall` for `psc-package`
4−
5−https://psc-package.readthedocs.io/en/latest/usage.html#local-package-sets
6−
7−```
8−dhall-to-json –file packages.dhall –output packages.json
9−```
10−
11−## Generate docs
12−
13−```
14−spago docs
15−```
16−
17−## Publish
18−
19−https://pursuit.purescript.org/help/authors
20−
21−Because `pulp` still needs `bower`, we have to tag the version by hand with
22−
23−```
24−git commit --allow-empty
25−```
26−
27−then
28−
29−```
30−bower install
31−pulp publish --no-push
32−```
33−
README.mdmode 100644 → 120000+1−234
@@ -1,234 +0,0 @@
1−# purescript-protobuf
2−
3−[![Test](https://github.com/xc-jp/purescript-protobuf/workflows/Test/badge.svg?branch=master)](https://github.com/xc-jp/purescript-protobuf/actions)
4−[![Pursuit](http://pursuit.purescript.org/packages/purescript-protobuf/badge)](http://pursuit.purescript.org/packages/purescript-protobuf/)
5−
6−Purescript library and code generator for
7−[Google Protocol Buffers version 3](https://developers.google.com/protocol-buffers/docs/proto3).
8−
9−This library operates on
10−[`ArrayBuffer`](https://pursuit.purescript.org/packages/purescript-arraybuffer-types/docs/Data.ArrayBuffer.Types#t:ArrayBuffer), so it will run both
11−[in *Node.js*](https://pursuit.purescript.org/packages/purescript-node-buffer/docs/Node.Buffer.Class)
12−and in browser environments.
13−
14−# Code Generation
15−
16−The `shell.nix` environment provides
17−
18−* The Purescript toolchain
19−* The [`protoc`](https://github.com/protocolbuffers/protobuf/blob/master/src/README.md) compiler
20−* The `protoc-gen-purescript` executable plugin for `protoc` on the `PATH` so that
21− [`protoc` can find it](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.compiler.plugin).
22−
23−```
24−$ nix-shell
25−
26−Purescript Protobuf development environment.
27−To build purescript-protobuf, run:
28−
29− npm install
30− spago build
31−
32−To test purescript-protobuf, run:
33−
34− protoc --purescript_out=./test/generated test/*.proto
35− spago -x test.dhall build
36− spago -x test.dhall test
37−
38−To generate Purescript .purs files from .proto files, run:
39−
40− protoc --purescript_out=path_to_output file.proto
41−
42−[nix-shell]$
43−```
44−
45−# Writing programs with the generated code
46−
47−*None of the modules in this package should be imported directly in our program.*
48−
49−Rather, we'll import the message modules from the generated `.purs` files,
50−as well as modules for reading and writing `ArrayBuffer`s.
51−
52−For example, a message in a `.proto` file declared as
53−
54−```
55−message MyMessage {
56− sint32 my_field = 1;
57−}
58−```
59−
60−will export these four names in the generated `.purs` modules.
61−
62−1. A message record type
63− * ```purescript
64− type MyMessageR = { my_field :: Maybe Int }
65− ```
66−2. A message data type
67− * ```purescript
68− newtype MyMessage = MyMessage MyMessageR
69− ```
70−3. A message encoder which works with
71− [__purescript-arraybuffer-builder__](http://pursuit.purescript.org/packages/purescript-arraybuffer-builder/)
72− * ```purescript
73− putMyMessage :: forall m. MonadEffect m => MyMessage -> PutM m Unit
74− ```
75−4. A message decoder which works with
76− [__purescript-parsing-dataview__](http://pursuit.purescript.org/packages/purescript-parsing-dataview/)
77− * ```purescript
78− parseMyMessage :: forall m. MonadEffect m => Int -> ParserT DataView m MyMessage
79− ```
80− The message decoder needs an argument which tells it the
81− length of the message which it’s about to decode, because
82− [“the Protocol Buffer wire format is not self-delimiting.”](https://developers.google.com/protocol-buffers/docs/techniques#streaming)
83−
84−Then, in our program, our imports will look something like this.
85−
86−
87−```purescript
88−import Generated.Module (MyMessage(..), putMyMessage, parseMyMessage)
89−import Text.Parsing.Parser (runParserT)
90−import Data.ArrayBuffer.Builder (execPutM)
91−```
92−
93−The generated code modules will import modules from this
94−package.
95−
96−The generated code depends on packages
97−
98−```
99− , "protobuf"
100− , "arraybuffer"
101− , "arraybuffer-types"
102− , "arraybuffer-builder"
103− , "parsing"
104− , "parsing-dataview"
105− , "uint"
106− , "long"
107− , "text-encoding"
108−```
109−
110−which are in
111−[__package-sets__](https://github.com/purescript/package-sets),
112−except for
113−[__purescript-longs__](https://pursuit.purescript.org/packages/purescript-longs)
114−(see `spago.dhall` in this package for the particulars).
115−
116−It also depends on the Javascript package
117−[__long__](https://www.npmjs.com/package/long).
118−
119−## Generated message instances
120−
121−We cannot easily derive common instances like `Eq` for the
122−generated message types because
123−1. The types [might be recursive](https://github.com/purescript/documentation/blob/master/errors/CycleInDeclaration.md).
124−2. The types might contain fields of type
125− [`ArrayBuffer`](https://pursuit.purescript.org/packages/purescript-arraybuffer-types/docs/Data.ArrayBuffer.Types#t:ArrayBuffer),
126− which doesn't have those instances.
127−
128−All of the generated message types have an instance of
129−[`Generic`](https://pursuit.purescript.org/packages/purescript-generics-rep/docs/Data.Generic.Rep#t:Generic).
130−This allows us to sometimes use
131−[`genericEq`](https://pursuit.purescript.org/packages/purescript-generics-rep/docs/Data.Generic.Rep.Eq#v:genericEq)
132−and
133−[`genericShow`](https://pursuit.purescript.org/packages/purescript-generics-rep/docs/Data.Generic.Rep.Show#v:genericShow)
134−on a generated message, if the generated message has those instances for
135−all of its fields.
136−
137−All of the generated message types have an instance of
138−[`NewType`](https://pursuit.purescript.org/packages/purescript-newtype/docs/Data.Newtype#t:Newtype).
139−
140−## Examples
141−
142−The __purescript-protobuf__ repository contains three executable *Node.js*
143−programs which use code generated by __purescript-protobuf__. Refer to these
144−for further examples of how to use the generated code.
145−
146−1. The `protoc`
147− [compiler plugin](https://github.com/xc-jp/purescript-protobuf/blob/master/src/ProtocPlugin/Main.purs).
148− The code generator imports generated code. Trippy, right? This program
149− literally writes itself.
150−2. The
151− [unit test suite](https://github.com/xc-jp/purescript-protobuf/blob/master/test/Main.purs)
152−3. The Google
153− [conformance test program](https://github.com/xc-jp/purescript-protobuf/blob/master/conformance/Main.purs)
154−
155−## Interpreting invalid encoding parse failures
156−
157−When the decode parser encounters an invalid encoding in the protobuf input
158−stream then it will fail to parse.
159−
160−When
161−[`Text.Parsing.Parser.ParserT`](https://pursuit.purescript.org/packages/purescript-parsing/docs/Text.Parsing.Parser#t:ParserT)
162−fails it will return a `ParseError String (Position {line::Int,column::Int})`.
163−
164−The byte offset at which the parse failure occured is given by the
165−formula `column - 1`.
166−
167−The path to the protobuf definition which failed to parse will be included
168−in the `ParseError String` and delimited by `'/'`, something
169−like `"Message1 / string_field_1 / Invalid UTF8 encoding."`.
170−
171−# Features
172−
173−We aim to support binary-encoded (not JSON-encoded)
174−[__proto3__](https://developers.google.com/protocol-buffers/docs/proto3).
175−Many __proto2__-syntax descriptor files will
176−also work, as long as they don't use __proto2__ features.
177−
178−We don't support
179−[extensions](https://developers.google.com/protocol-buffers/docs/proto?hl=en#extensions).
180−
181−The generated optional record fields will use `Nothing` instead of the
182−[default values](https://developers.google.com/protocol-buffers/docs/proto3?hl=en#default).
183−
184−We do not preserve
185−[unknown fields](https://developers.google.com/protocol-buffers/docs/proto3?hl=en#unknowns).
186−
187−We do not support
188−[services](https://developers.google.com/protocol-buffers/docs/proto3?hl=en#services).
189−
190−## Conformance
191−
192−At the time of this writing, we pass 193 out of 194 of the
193−[Google conformance tests](https://github.com/protocolbuffers/protobuf/tree/master/conformance)
194−for binary-encoded proto3.
195−The one test we fail is
196−the *Required.Proto3.ProtobufInput.UnknownVarint.ProtobufOutput* test, which
197−is the test for preserving unknown fields, which we do not support, see above.
198−
199−See the `conformance/README.md` in this repository for details.
200−
201−## Imports
202−
203−The code generator will use the `package` statement in the `.proto` file
204−and the base file name as the Purescript module name for that file.
205−
206−The Protobuf
207−[`import`](https://developers.google.com/protocol-buffers/docs/proto3#importing_definitions)
208−statement allows Protobuf messages to have fields
209−consisting of Protobuf messages imported from another file, and qualified
210−by the package name in that file. In order to generate
211−the correct Purescript module name qualifier on the types of imported message
212−fields, the code generator must be able to lookup the package name
213−statement in the imported file.
214−
215−For that reason, we can only use top-level
216−(not [nested](https://developers.google.com/protocol-buffers/docs/proto3#nested))
217−`message` and `enum` types from an `import`.
218−
219−The generated Purescript code will usually have module imports which cause
220−the `purs` compiler to emit warnings. Sorry.
221−
222−# Performance
223−
224−The implementation is simple and straightforward. We haven't done
225−any special optimizations. For example, when encoding a protobuf varint, we
226−allocate a list of new one-byte `ArrayBuffers`s and then copy them all into
227−position in the final `ArrayBuffer`. For another example, when decoding a
228−packed field of numbers, we build a list of the numbers, and then copy them
229−all into the final `Array`. Also, this whole library is very stack-unsafe.
230−This may all be improved in later versions.
231−
232−# Contributing
233−
234−Pull requests welcome.
@@ -0,0 +1 @@
1+library/README.md
bin/conformance-purescript+1−1
@@ -1,2 +1,2 @@
11#!/usr/bin/env bash
2−exec node -e "require('./output/Conformance.Main/index.js').main()"
2+node --input-type=module --abort-on-uncaught-exception --trace-sigint --trace-uncaught -e "import {main} from './conformance/output/Main/index.js'; main();"
bin/protoc-gen-purescript+1−1
@@ -1,2 +1,2 @@
11#!/usr/bin/env bash
2−node -e "require('./output/ProtocPlugin.Main/index.js').main()"
2+node --input-type=module -e "import {main} from './plugin/output/Main/index.js'; main();"
bower.jsondeleted−39
@@ -1,39 +0,0 @@
1−{
2− "name": "purescript-protobuf",
3− "description": "Google Protocol Buffers for Purescript",
4− "main": "src/ProtocPlugin/Main.purs",
5− "authors": [
6− "Cross Compass LLC.",
7− "jamesbrock@gmail.com"
8− ],
9− "license": "BSD-3-Clause",
10− "keywords": [
11− "protobuf"
12− ],
13− "homepage": "https://github.com/xc-jp/purescript-protobuf",
14− "ignore": [
15− "**/.*",
16− "node_modules",
17− "bower_components",
18− "test",
19− "tests"
20− ],
21− "repository": {
22− "type": "git",
23− "url": "https://github.com/xc-jp/purescript-protobuf.git"
24− },
25− "dependencies": {
26− "purescript-parsing": "^5.0.3",
27− "purescript-arraybuffer-types": "^2.0.0",
28− "purescript-arraybuffer": "^10.0.2",
29− "purescript-uint": "^5.1.4",
30− "purescript-text-encoding": "^1.0.0",
31− "purescript-longs": "^0.1.1",
32− "purescript-node-streams": "^4.0.1",
33− "purescript-node-process": "^7.0.0",
34− "purescript-node-buffer": "^6.0.0",
35− "purescript-node-path": "^3.0.0",
36− "purescript-arraybuffer-builder": "jamesdbrock/purescript-arraybuffer-builder#1.1.0",
37− "purescript-parsing-dataview": "jamesdbrock/purescript-parsing-dataview#1.1.1"
38− }
39−}
conformance.dhalldeleted−15
@@ -1,15 +0,0 @@
1−-- Spago configuration for running the conformance checker
2−--
3−-- See:
4−-- https://github.com/purescript/spago#devdependencies-testdependencies-or-in-general-a-situation-with-many-configurations
5−--
6−-- Usage:
7−--
8−-- spago -x conformance.dhall build
9−--
10−
11−let conf = ./spago.dhall
12−
13−in conf //
14− { sources = [ "conformance/**/*.purs", "src/Protobuf/*.purs" ]
15− }
conformance/Main.pursdeleted−94
@@ -1,94 +0,0 @@
1−-- | Entry point for the conformance test runner.
2−module Conformance.Main (main) where
3−
4−import Prelude
5−
6−import Conformance.Conformance (ConformanceRequest(..), ConformanceResponse(..), ConformanceResponse_Result(..), parseConformanceRequest, putConformanceResponse)
7−import Conformance.Conformance as C
8−import Control.Monad.Writer (tell)
9−import Data.ArrayBuffer.Builder (execPut, subBuilder, putInt32le)
10−import Data.ArrayBuffer.Builder as Builder
11−import Data.ArrayBuffer.DataView as DV
12−import Data.Either (Either(..))
13−import Data.Maybe (Maybe(..))
14−import Effect (Effect)
15−import Node.Buffer (toArrayBuffer, fromArrayBuffer)
16−import Node.Encoding (Encoding(..))
17−import Node.Process (stdin, stdout, stderr, exit)
18−import Node.Stream (onReadable, read, write, writeString)
19−import ProtobufTestMessages.Proto3.TestMessagesProto3 as T3
20−import Text.Parsing.Parser (runParserT)
21−import Text.Parsing.Parser.DataView (anyInt32le)
22−
23−bailOutMaybe :: forall a. String -> Effect (Maybe a) -> Effect a
24−bailOutMaybe err thing =
25− thing >>= case _ of
26− Nothing -> do
27− void $ writeString stderr UTF8 err (pure unit)
28− exit 1
29− Just x -> pure x
30−
31−bailOutEither :: forall a l. Show l => Effect (Either l a) -> Effect a
32−bailOutEither thing = thing >>= case _ of
33− Left err -> do
34− void $ writeString stderr UTF8 (show err) (pure unit)
35− exit 1
36− Right x -> pure x
37−
38−
39−-- https://github.com/protocolbuffers/protobuf/blob/master/conformance/conformance_test_runner.cc
40−main :: Effect Unit
41−main = do
42− onReadable stdin $ do
43−
44− msglendv <- map DV.whole $ toArrayBuffer =<< (bailOutMaybe "No message length" $ read stdin (Just 4))
45− msglen <- bailOutEither $ runParserT msglendv $ anyInt32le
46− stdinview <- map DV.whole $ toArrayBuffer =<< (bailOutMaybe "No stdin" $ read stdin (Just msglen))
47− request <- bailOutEither $ runParserT stdinview $ parseConformanceRequest $ DV.byteLength stdinview
48− response <- reply request
49−
50− responseab <- execPut $ do
51− responsesub <- subBuilder $ putConformanceResponse response
52− putInt32le $ Builder.length responsesub
53− tell responsesub
54−
55− responsebuffer <- fromArrayBuffer responseab
56− void $ write stdout responsebuffer (pure unit)
57−
58−reply :: ConformanceRequest -> Effect ConformanceResponse
59−reply (ConformanceRequest
60− { requested_output_format: Just C.WireFormat_PROTOBUF
61− , message_type: Just "protobuf_test_messages.proto3.TestAllTypesProto3"
62− , test_category: _ -- :: Maybe.Maybe TestCategory
63− , jspb_encoding_options: _ -- :: Maybe.Maybe JspbEncodingConfig
64− , print_unknown_fields: _ -- :: Maybe.Maybe Boolean
65− , payload: Just (C.ConformanceRequest_Payload_Protobuf_payload receipt_payload)
66− }) = do
67− let dv = DV.whole receipt_payload
68− parsed <- runParserT dv $ T3.parseTestAllTypesProto3 $ DV.byteLength dv
69− case parsed of
70− Left err ->
71− pure $ ConformanceResponse
72− { result: Just $ ConformanceResponse_Result_Parse_error $ show err
73− }
74− Right x -> do
75− reply_payload <- execPut $ T3.putTestAllTypesProto3 x
76− pure $ ConformanceResponse
77− { result: Just $ ConformanceResponse_Result_Protobuf_payload reply_payload
78− }
79−
80−reply (ConformanceRequest
81− { requested_output_format: _ -- :: Maybe.Maybe WireFormat
82− , message_type: Just "protobuf_test_messages.proto2.TestAllTypesProto2"
83− , test_category: _ -- :: Maybe.Maybe TestCategory
84− , jspb_encoding_options: _ -- :: Maybe.Maybe JspbEncodingConfig
85− , print_unknown_fields: _ -- :: Maybe.Maybe Boolean
86− , payload: _ -- Just (C.ConformanceRequest_Payload_Protobuf_payload arraybuffer)
87− }) = pure $ ConformanceResponse
88− { result: Just $ ConformanceResponse_Result_Skipped "Skipped proto2"
89− }
90−
91−reply _ = pure $ ConformanceResponse
92− { result: Just $ ConformanceResponse_Result_Skipped "Not enough information"
93− }
94−
conformance/README.md+41−7
@@ -2,18 +2,52 @@
22
33## Running the conformance test
44
5−From the top directory of this repo, run
5+### Running with Nix
66
7+From the top directory of this repo,
8+
9+```shell
10+nix run .#conformance
11+```
12+
13+### Running from output/
14+
15+```shell
16+cd conformance
17+```
18+```shell
19+spago build
20+```
21+```shell
22+conformance_test_runner --enforce_recommended bin/conformance-purescript
23+```
24+
25+### Running from bundled executable
26+
27+```shell
28+cd conformance
729```
8−nix-shell --command 'npm install'
9−nix-shell nix/conformance.nix
30+```shell
31+spago bundle --platform=node --minify --bundle-type app --outfile conformance.mjs
32+```
33+```shell
34+conformance_test_runner --enforce_recommended ./conformance.mjs
1035```
1136
1237## About the conformance test runner
1338
1439[Conformance README](https://github.com/protocolbuffers/protobuf/tree/master/conformance)
1540
16−The `nix/protobuf.nix` derivation will build protobuf along with its
17−conformance test runners. There are way too many fnords in the conformance
18−test build system. Whoever wrote the conformance test code must have
19−immanentized the eschaton.
41+The derivations in `nix/protobuf.nix` will build `protoc` and the
42+`conformance-test-runner`.
43+
44+## Dev
45+
46+To generate the conformance `.purs` in the dev environment:
47+
48+```shell
49+protoc --purescript_out=./conformance/src/generated --proto_path=$(nix path-info .#protobuf)/conformance $(nix path-info .#protobuf)/conformance/conformance.proto
50+```
51+```shell
52+protoc --purescript_out=./conformance/src/generated --proto_path=$(nix path-info .#protobuf)/src $(nix path-info .#protobuf)/src/google/protobuf/test_messages_proto3.proto
53+```
conformance/generated/.gitignoredeleted−1
@@ -1 +0,0 @@
1−*.purs
conformance/spago.locknew file+1623
@@ -0,0 +1,1623 @@
1+{
2+ "workspace": {
3+ "packages": {
4+ "conformance": {
5+ "path": "./",
6+ "core": {
7+ "dependencies": [
8+ "aff",
9+ "console",
10+ "node-buffer",
11+ "node-process",
12+ "node-streams",
13+ "protobuf",
14+ "unsafe-coerce"
15+ ],
16+ "build_plan": [
17+ "aff",
18+ "arraybuffer",
19+ "arraybuffer-builder",
20+ "arraybuffer-types",
21+ "arrays",
22+ "bifunctors",
23+ "console",
24+ "const",
25+ "contravariant",
26+ "control",
27+ "datetime",
28+ "distributive",
29+ "effect",
30+ "either",
31+ "enums",
32+ "exceptions",
33+ "exists",
34+ "float32",
35+ "foldable-traversable",
36+ "foreign",
37+ "foreign-object",
38+ "functions",
39+ "functors",
40+ "gen",
41+ "identity",
42+ "int64",
43+ "integers",
44+ "invariant",
45+ "lazy",
46+ "lists",
47+ "maybe",
48+ "newtype",
49+ "node-buffer",
50+ "node-event-emitter",
51+ "node-process",
52+ "node-streams",
53+ "nonempty",
54+ "nullable",
55+ "numbers",
56+ "ordered-collections",
57+ "orders",
58+ "parallel",
59+ "parsing",
60+ "parsing-dataview",
61+ "partial",
62+ "posix-types",
63+ "prelude",
64+ "profunctor",
65+ "protobuf",
66+ "record",
67+ "refs",
68+ "safe-coerce",
69+ "st",
70+ "strings",
71+ "tailrec",
72+ "transformers",
73+ "tuples",
74+ "type-equality",
75+ "typelevel-prelude",
76+ "uint",
77+ "unfoldable",
78+ "unicode",
79+ "unsafe-coerce",
80+ "web-encoding"
81+ ]
82+ },
83+ "test": {
84+ "dependencies": [],
85+ "build_plan": []
86+ }
87+ }
88+ },
89+ "package_set": {
90+ "address": {
91+ "registry": "81.1.0"
92+ },
93+ "compiler": ">=0.15.15 <0.16.0",
94+ "content": {
95+ "abc-parser": "2.1.0",
96+ "ace": "9.1.0",
97+ "address-rfc2821": "0.1.1",
98+ "aff": "8.0.0",
99+ "aff-bus": "6.0.0",
100+ "aff-coroutines": "9.0.0",
101+ "aff-promise": "4.0.0",
102+ "aff-retry": "2.0.0",
103+ "affjax": "13.0.0",
104+ "affjax-node": "1.0.0",
105+ "affjax-web": "1.0.0",
106+ "ansi": "7.0.0",
107+ "apexcharts": "0.5.0",
108+ "applicative-phases": "1.0.0",
109+ "argonaut": "9.0.0",
110+ "argonaut-aeson-generic": "0.4.1",
111+ "argonaut-codecs": "9.1.0",
112+ "argonaut-core": "7.0.0",
113+ "argonaut-generic": "8.0.0",
114+ "argonaut-traversals": "10.0.0",
115+ "argparse-basic": "2.0.0",
116+ "array-builder": "0.1.2",
117+ "array-search": "0.6.0",
118+ "arraybuffer": "13.2.0",
119+ "arraybuffer-builder": "3.1.0",
120+ "arraybuffer-types": "3.0.2",
121+ "arrays": "7.3.0",
122+ "arrays-extra": "0.6.2",
123+ "arrays-zipper": "2.0.1",
124+ "ask": "1.0.0",
125+ "assert": "6.0.0",
126+ "assert-multiple": "0.4.0",
127+ "avar": "5.0.1",
128+ "axon": "0.0.3",
129+ "b64": "0.0.9",
130+ "barbies": "1.0.1",
131+ "barlow-lens": "1.0.0",
132+ "baskerville-core": "0.1.3",
133+ "baskerville-mycroft": "0.1.0",
134+ "benchlib": "0.0.4",
135+ "bifunctors": "6.1.0",
136+ "bigints": "7.0.1",
137+ "blessed": "1.0.0",
138+ "bolson": "0.3.9",
139+ "bookhound": "0.1.7",
140+ "bower-json": "3.0.0",
141+ "bytestrings": "9.0.0",
142+ "call-by-name": "4.0.1",
143+ "canvas": "6.0.0",
144+ "canvas-action": "9.0.0",
145+ "cartesian": "1.0.6",
146+ "catenable-lists": "7.0.0",
147+ "cbor-stream": "1.3.0",
148+ "chameleon": "1.0.0",
149+ "chameleon-halogen": "1.0.3",
150+ "chameleon-react-basic": "1.1.0",
151+ "chameleon-styled": "2.5.0",
152+ "chameleon-transformers": "1.0.0",
153+ "channel": "1.0.0",
154+ "chartjs": "0.2.0",
155+ "chartjs-halogen": "0.2.0",
156+ "checked-exceptions": "3.1.1",
157+ "choku": "1.0.2",
158+ "classless": "0.1.1",
159+ "classless-arbitrary": "0.1.1",
160+ "classless-decode-json": "0.1.1",
161+ "classless-encode-json": "0.1.3",
162+ "classnames": "2.0.0",
163+ "codec": "6.1.0",
164+ "codec-argonaut": "10.0.0",
165+ "codec-json": "2.0.0",
166+ "colors": "7.0.1",
167+ "compile-fail": "0.4.0",
168+ "concur-core": "0.5.0",
169+ "concur-react": "0.5.0",
170+ "concurrent-queues": "3.0.0",
171+ "console": "6.1.0",
172+ "const": "6.0.0",
173+ "contravariant": "6.0.0",
174+ "control": "6.0.0",
175+ "convertable-options": "1.0.0",
176+ "coroutines": "7.0.0",
177+ "css": "6.0.0",
178+ "css-class-name-extractor": "0.0.4",
179+ "css-frameworks": "1.1.0",
180+ "csv-stream": "2.3.0",
181+ "currency": "0.1.0",
182+ "data-mvc": "0.0.2",
183+ "datetime": "6.1.0",
184+ "datetime-parsing": "0.2.0",
185+ "debounce": "0.1.2",
186+ "debug": "6.0.2",
187+ "decimals": "7.1.0",
188+ "default-values": "1.0.1",
189+ "deku": "0.9.24",
190+ "deno": "0.0.5",
191+ "dissect": "1.0.0",
192+ "distributive": "6.0.0",
193+ "dodo-printer": "2.2.3",
194+ "dom-filereader": "7.0.0",
195+ "dom-indexed": "13.0.0",
196+ "dom-simple": "0.4.0",
197+ "dotenv": "4.0.3",
198+ "droplet": "0.6.0",
199+ "dts": "1.0.0",
200+ "dual-numbers": "1.0.3",
201+ "dynamic-buffer": "3.0.1",
202+ "echarts-simple": "0.0.1",
203+ "effect": "4.0.0",
204+ "either": "6.1.0",
205+ "elmish": "0.16.0",
206+ "elmish-enzyme": "0.1.1",
207+ "elmish-hooks": "0.12.0",
208+ "elmish-html": "0.14.0",
209+ "elmish-testing-library": "0.5.0",
210+ "email-validate": "7.0.0",
211+ "encoding": "0.0.10",
212+ "enums": "6.0.1",
213+ "env-names": "0.4.0",
214+ "environment": "2.0.0",
215+ "error": "2.0.0",
216+ "eta-conversion": "0.3.2",
217+ "exceptions": "6.1.0",
218+ "exists": "6.0.0",
219+ "exitcodes": "4.0.0",
220+ "expect-inferred": "3.0.0",
221+ "express": "0.9.1",
222+ "ezfetch": "1.1.1",
223+ "fahrtwind": "2.0.0",
224+ "faker-ffi": "0.1.1",
225+ "fakerjs": "0.0.1",
226+ "fallback": "0.1.0",
227+ "fast-vect": "1.2.0",
228+ "fetch": "4.1.0",
229+ "fetch-argonaut": "1.0.1",
230+ "fetch-core": "5.1.0",
231+ "fetch-yoga-json": "1.1.0",
232+ "ffi-simple": "0.5.1",
233+ "fft": "0.3.0",
234+ "fft-js": "0.1.0",
235+ "filterable": "5.0.0",
236+ "fix-functor": "0.1.0",
237+ "fixed-points": "7.0.0",
238+ "fixed-precision": "5.0.0",
239+ "flame": "1.6.0",
240+ "float32": "2.0.0",
241+ "fmt": "0.2.1",
242+ "foldable-traversable": "6.0.0",
243+ "foldable-traversable-extra": "0.0.6",
244+ "foreign": "7.0.0",
245+ "foreign-object": "4.1.0",
246+ "foreign-readwrite": "3.4.0",
247+ "forgetmenot": "0.1.0",
248+ "fork": "6.0.0",
249+ "form-urlencoded": "7.0.0",
250+ "formatters": "7.0.0",
251+ "framer-motion": "3.1.0",
252+ "free": "7.1.0",
253+ "freeap": "7.0.0",
254+ "freer-free": "0.0.1",
255+ "freet": "7.0.0",
256+ "functions": "6.0.0",
257+ "functor1": "3.0.0",
258+ "functors": "5.0.0",
259+ "fuzzy": "0.4.0",
260+ "gen": "4.0.0",
261+ "generate-values": "1.0.1",
262+ "generic-router": "0.0.1",
263+ "geojson": "0.0.5",
264+ "geometria": "2.2.0",
265+ "gesso": "1.0.1",
266+ "gojs": "0.1.1",
267+ "golden-test": "0.1.0",
268+ "golem-fetch": "0.1.0",
269+ "grain": "3.0.0",
270+ "grain-router": "3.0.0",
271+ "grain-virtualized": "3.0.0",
272+ "graphql-client": "10.1.1",
273+ "graphs": "8.1.0",
274+ "group": "4.1.1",
275+ "halogen": "7.0.0",
276+ "halogen-bootstrap5": "5.3.2",
277+ "halogen-canvas": "1.0.0",
278+ "halogen-css": "10.0.0",
279+ "halogen-declarative-canvas": "0.0.8",
280+ "halogen-echarts-simple": "0.0.4",
281+ "halogen-formless": "4.0.3",
282+ "halogen-helix": "1.1.0",
283+ "halogen-hooks": "0.6.3",
284+ "halogen-hooks-extra": "0.9.0",
285+ "halogen-infinite-scroll": "1.1.0",
286+ "halogen-store": "0.5.4",
287+ "halogen-storybook": "2.0.0",
288+ "halogen-subscriptions": "2.0.0",
289+ "halogen-svg-elems": "8.0.0",
290+ "halogen-typewriter": "1.0.4",
291+ "halogen-use-trigger-hooks": "1.0.0",
292+ "halogen-vdom": "8.0.0",
293+ "halogen-vdom-string-renderer": "0.5.0",
294+ "halogen-widgets": "0.3.1",
295+ "halogen-xterm": "2.0.0",
296+ "harmonia": "0.2.0",
297+ "heckin": "2.0.1",
298+ "heterogeneous": "0.7.0",
299+ "homogeneous": "0.4.0",
300+ "http-methods": "6.1.0",
301+ "httpurple": "4.0.0",
302+ "huffman": "0.4.0",
303+ "humdrum": "0.0.1",
304+ "hylograph-canvas": "0.1.0",
305+ "hylograph-components": "0.1.0",
306+ "hylograph-d3-kernel": "0.1.0",
307+ "hylograph-graph": "0.3.0",
308+ "hylograph-layout": "0.3.0",
309+ "hylograph-music": "0.4.0",
310+ "hylograph-optics": "0.1.0",
311+ "hylograph-selection": "0.5.3",
312+ "hylograph-simulation": "0.6.0",
313+ "hylograph-simulation-core": "0.1.0",
314+ "hylograph-simulation-halogen": "0.5.1",
315+ "hylograph-transitions": "0.1.0",
316+ "hylograph-wasm-kernel": "0.1.0",
317+ "hyrule": "2.3.9",
318+ "i18next": "0.1.0",
319+ "idb": "0.2.0",
320+ "identity": "6.0.0",
321+ "identy": "4.0.1",
322+ "indexed-db": "1.0.0",
323+ "indexed-monad": "3.0.0",
324+ "ink": "0.0.1",
325+ "int64": "3.0.0",
326+ "integers": "6.0.0",
327+ "interpolate": "5.0.2",
328+ "intersection-observer": "1.0.1",
329+ "invariant": "6.0.0",
330+ "jarilo": "1.0.1",
331+ "jelly": "0.10.0",
332+ "jelly-router": "0.3.0",
333+ "jelly-signal": "0.4.0",
334+ "jest": "1.0.0",
335+ "js-abort-controller": "1.0.0",
336+ "js-bigints": "2.2.1",
337+ "js-date": "8.0.0",
338+ "js-fetch": "0.2.1",
339+ "js-fileio": "3.0.0",
340+ "js-intl": "1.3.0",
341+ "js-iterators": "0.1.1",
342+ "js-maps": "0.1.2",
343+ "js-promise": "1.0.0",
344+ "js-promise-aff": "1.0.0",
345+ "js-temporal": "3.0.0",
346+ "js-timers": "6.1.0",
347+ "js-uri": "3.1.0",
348+ "jsdom": "1.0.0",
349+ "jsinc": "0.5.1",
350+ "json": "1.1.0",
351+ "json-codecs": "5.0.0",
352+ "justifill": "0.5.0",
353+ "jwt": "0.0.9",
354+ "labeled-data": "0.2.0",
355+ "language-cst-parser": "0.14.1",
356+ "lazy": "6.0.0",
357+ "lazy-joe": "1.0.0",
358+ "lcg": "4.0.0",
359+ "leibniz": "5.0.0",
360+ "leveldb": "1.0.1",
361+ "liminal": "1.0.1",
362+ "linalg": "6.0.0",
363+ "linear": "0.1.0",
364+ "lists": "7.0.0",
365+ "literals": "1.0.2",
366+ "logging": "3.0.0",
367+ "logging-journald": "0.4.0",
368+ "lumi-components": "18.0.0",
369+ "machines": "7.0.0",
370+ "maps-eager": "0.5.0",
371+ "marionette": "1.0.0",
372+ "marionette-react-basic-hooks": "0.1.1",
373+ "markdown-it-js": "0.1.0",
374+ "marked": "0.1.0",
375+ "matrices": "5.0.1",
376+ "matryoshka": "1.0.0",
377+ "maybe": "6.0.0",
378+ "media-types": "6.0.0",
379+ "meowclient": "1.0.0",
380+ "midi": "4.0.0",
381+ "milkdown": "0.1.0",
382+ "milkis": "9.0.0",
383+ "mimetype": "0.0.1",
384+ "minibench": "4.0.1",
385+ "mmorph": "7.0.0",
386+ "monad-control": "5.0.0",
387+ "monad-logger": "1.3.1",
388+ "monad-loops": "0.5.0",
389+ "monad-unlift": "1.0.1",
390+ "monoid-extras": "0.0.1",
391+ "monoidal": "0.16.0",
392+ "mote": "3.0.0",
393+ "motion": "4.0.0",
394+ "motsunabe": "2.0.0",
395+ "mvc": "0.0.1",
396+ "mycroft": "0.1.1",
397+ "mycroft-z3-wasm": "0.1.0",
398+ "mysql": "6.0.1",
399+ "n3": "0.1.0",
400+ "nano-id": "1.1.0",
401+ "nanoid": "0.1.0",
402+ "naturals": "3.0.0",
403+ "nested-functor": "0.2.1",
404+ "newtype": "5.0.0",
405+ "next-purs-rsc": "0.1.0",
406+ "nextjs": "0.1.1",
407+ "nextui": "0.2.0",
408+ "node-buffer": "9.0.0",
409+ "node-child-process": "11.1.0",
410+ "node-event-emitter": "3.0.0",
411+ "node-execa": "5.0.0",
412+ "node-fs": "9.2.0",
413+ "node-glob-basic": "2.0.0",
414+ "node-http": "9.1.0",
415+ "node-http2": "1.1.1",
416+ "node-human-signals": "1.0.0",
417+ "node-net": "5.1.0",
418+ "node-os": "5.1.0",
419+ "node-path": "5.0.1",
420+ "node-process": "11.2.0",
421+ "node-readline": "8.1.1",
422+ "node-sqlite": "0.2.0",
423+ "node-sqlite3": "8.0.0",
424+ "node-stream-pipes": "2.1.6",
425+ "node-streams": "9.0.1",
426+ "node-tls": "0.3.1",
427+ "node-url": "7.0.1",
428+ "node-workerbees": "0.3.1",
429+ "node-zlib": "0.4.0",
430+ "nonempty": "7.0.0",
431+ "now": "6.0.0",
432+ "npm-package-json": "2.0.0",
433+ "nqueens": "0.1.4",
434+ "nullable": "6.0.0",
435+ "numberfield": "0.2.2",
436+ "numbers": "9.0.1",
437+ "oak": "3.1.1",
438+ "oak-debug": "1.2.2",
439+ "object-maps": "0.3.0",
440+ "ocarina": "1.5.4",
441+ "oooooooooorrrrrrrmm-lib": "0.0.1",
442+ "open-colors-scales-and-schemes": "1.0.0",
443+ "open-drawing": "6.0.4",
444+ "open-folds": "6.4.0",
445+ "open-foreign-generic": "11.0.3",
446+ "open-memoize": "6.2.0",
447+ "open-mkdirp-aff": "1.2.0",
448+ "open-pairing": "6.2.0",
449+ "open-smolder": "12.0.2",
450+ "options": "7.0.0",
451+ "optparse": "5.0.1",
452+ "ordered-collections": "3.2.0",
453+ "ordered-set": "0.5.2",
454+ "orders": "6.0.0",
455+ "org-doc": "0.1.0",
456+ "owoify": "1.2.0",
457+ "pairs": "9.0.1",
458+ "parallel": "7.0.0",
459+ "parsing": "11.0.0",
460+ "parsing-dataview": "3.2.4",
461+ "partial": "4.0.0",
462+ "pathy": "9.0.0",
463+ "pha": "0.13.0",
464+ "phaser": "0.7.0",
465+ "phylio": "1.1.2",
466+ "pipes": "8.0.0",
467+ "pirates-charm": "0.0.1",
468+ "play": "1.0.0",
469+ "pmock": "1.1.0",
470+ "point-free": "1.0.0",
471+ "pointed-list": "0.5.1",
472+ "polymorphic-vectors": "4.0.0",
473+ "posix-types": "6.0.0",
474+ "postgresql": "2.0.21",
475+ "precise": "6.0.0",
476+ "precise-datetime": "7.0.0",
477+ "prelude": "6.0.2",
478+ "prettier-printer": "3.0.0",
479+ "printf": "0.1.0",
480+ "priority-queue": "0.1.2",
481+ "profunctor": "6.0.1",
482+ "profunctor-lenses": "8.0.0",
483+ "prospero": "0.1.0",
484+ "protobuf": "4.4.0",
485+ "ps-spa": "0.7.1",
486+ "psa-utils": "8.0.0",
487+ "psci-support": "6.0.0",
488+ "punycode": "1.0.0",
489+ "pursfmt": "0.17.0",
490+ "qualified-do": "2.2.0",
491+ "quantities": "12.2.0",
492+ "quickcheck": "8.0.1",
493+ "quickcheck-combinators": "0.1.3",
494+ "quickcheck-laws": "7.0.0",
495+ "quickcheck-utf8": "0.0.0",
496+ "random": "6.0.0",
497+ "rationals": "6.0.0",
498+ "rdf": "0.1.0",
499+ "react": "11.0.0",
500+ "react-aria": "0.2.0",
501+ "react-basic": "17.0.0",
502+ "react-basic-classic": "3.0.0",
503+ "react-basic-dnd": "10.1.0",
504+ "react-basic-dom": "7.0.0",
505+ "react-basic-dom-beta": "0.1.1",
506+ "react-basic-emotion": "7.1.0",
507+ "react-basic-hooks": "9.1.1",
508+ "react-basic-storybook": "2.0.0",
509+ "react-dnd-kit": "0.6.0",
510+ "react-dom": "8.0.0",
511+ "react-halo": "3.0.0",
512+ "react-icons": "1.1.6",
513+ "react-markdown": "0.1.0",
514+ "react-testing-library": "4.0.1",
515+ "react-virtuoso": "1.0.0",
516+ "reactix": "0.6.1",
517+ "read": "1.0.1",
518+ "recharts": "1.1.0",
519+ "record": "4.0.0",
520+ "record-extra": "5.0.1",
521+ "record-extra-srghma": "0.2.8",
522+ "record-ptional-fields": "0.1.2",
523+ "record-studio": "1.0.4",
524+ "ref-lifted": "0.0.2",
525+ "refs": "6.0.0",
526+ "remotedata": "5.0.1",
527+ "repr": "0.5.0",
528+ "resize-arrays": "0.0.1",
529+ "resize-observer": "1.0.0",
530+ "resource": "2.0.1",
531+ "resourcet": "1.0.0",
532+ "result": "1.0.3",
533+ "return": "0.2.0",
534+ "ring-modules": "5.0.1",
535+ "rito": "0.3.4",
536+ "roman": "0.4.0",
537+ "rough-notation": "1.0.2",
538+ "routing": "11.0.0",
539+ "routing-duplex": "0.7.0",
540+ "run": "5.0.0",
541+ "safe-coerce": "2.0.0",
542+ "safely": "4.0.1",
543+ "school-of-music": "1.3.0",
544+ "selection-foldable": "0.2.0",
545+ "selective-functors": "1.0.1",
546+ "semirings": "7.0.0",
547+ "shuffle": "2.0.0",
548+ "sigil": "0.3.0",
549+ "sigil-hats": "0.3.0",
550+ "signal": "13.0.0",
551+ "simple-emitter": "3.0.1",
552+ "simple-i18n": "2.0.1",
553+ "simple-json": "9.0.0",
554+ "simple-json-generics": "0.2.1",
555+ "simple-ulid": "3.0.0",
556+ "sized-matrices": "1.0.0",
557+ "sized-vectors": "5.0.2",
558+ "slug": "3.2.0",
559+ "small-ffi": "4.0.1",
560+ "soundfonts": "4.1.0",
561+ "sparse-matrices": "2.0.1",
562+ "sparse-polynomials": "3.0.1",
563+ "spec": "8.1.2",
564+ "spec-discovery": "8.4.1",
565+ "spec-mocha": "5.1.1",
566+ "spec-node": "0.0.3",
567+ "spec-quickcheck": "5.0.2",
568+ "spec-reporter-xunit": "0.7.1",
569+ "splitmix": "2.1.0",
570+ "ssrs": "1.0.0",
571+ "st": "6.2.0",
572+ "statistics": "0.3.2",
573+ "strictlypositiveint": "1.0.1",
574+ "string-parsers": "8.0.0",
575+ "strings": "6.0.1",
576+ "strings-extra": "4.0.0",
577+ "stringutils": "0.0.13",
578+ "structured-logging": "1.0.0",
579+ "substitute": "0.2.3",
580+ "supabase": "0.1.0",
581+ "supply": "0.2.0",
582+ "svg-parser": "3.0.0",
583+ "systemd-journald": "0.3.0",
584+ "tagged": "4.0.2",
585+ "tailrec": "6.1.0",
586+ "tanstack-query": "3.0.0",
587+ "tecton": "0.2.1",
588+ "tecton-halogen": "0.2.0",
589+ "temporal": "0.2.0",
590+ "test-unit": "17.0.0",
591+ "text-formatting": "0.1.0",
592+ "thermite": "6.3.1",
593+ "thermite-dom": "0.3.1",
594+ "these": "6.0.0",
595+ "threading": "0.0.3",
596+ "tidy": "0.11.1",
597+ "tidy-codegen": "4.0.1",
598+ "tldr": "0.0.0",
599+ "toestand": "0.9.0",
600+ "transformation-matrix": "1.0.1",
601+ "transformers": "6.1.0",
602+ "transit": "1.0.0",
603+ "tree-rose": "4.0.2",
604+ "trivial-unfold": "0.5.0",
605+ "ts-bridge": "4.0.0",
606+ "tuples": "7.0.0",
607+ "two-or-more": "1.0.0",
608+ "type-equality": "4.0.1",
609+ "typedenv": "2.0.1",
610+ "typelevel": "6.0.0",
611+ "typelevel-lists": "2.1.0",
612+ "typelevel-peano": "1.0.1",
613+ "typelevel-prelude": "7.0.0",
614+ "typelevel-regex": "0.0.3",
615+ "typelevel-rows": "0.1.0",
616+ "typisch": "0.4.0",
617+ "uint": "7.0.0",
618+ "ulid": "3.0.1",
619+ "uncurried-transformers": "1.1.0",
620+ "undefined": "2.0.0",
621+ "undefined-is-not-a-problem": "1.1.0",
622+ "unfoldable": "6.0.0",
623+ "unicode": "6.0.0",
624+ "unique": "0.6.1",
625+ "unlift": "1.0.1",
626+ "unordered-collections": "3.1.0",
627+ "unsafe-coerce": "6.0.0",
628+ "unsafe-reference": "5.0.0",
629+ "untagged-to-tagged": "0.1.4",
630+ "untagged-union": "1.0.0",
631+ "uri": "9.0.0",
632+ "url-immutable": "1.0.0",
633+ "url-regex-safe": "0.1.1",
634+ "uuid": "9.0.0",
635+ "uuidv4": "1.0.0",
636+ "validation": "6.0.0",
637+ "variant": "8.0.0",
638+ "variant-encodings": "2.0.0",
639+ "variant-gen": "1.0.0",
640+ "vectorfield": "1.0.1",
641+ "vectors": "2.1.0",
642+ "versions": "7.0.0",
643+ "visx": "0.0.2",
644+ "vitest": "2.0.1",
645+ "wasm-base": "0.2.0",
646+ "web-chain": "1.0.1",
647+ "web-clipboard": "6.0.0",
648+ "web-cssom": "2.0.0",
649+ "web-cssom-view": "0.1.0",
650+ "web-dom": "6.0.0",
651+ "web-dom-parser": "8.0.0",
652+ "web-dom-xpath": "3.0.0",
653+ "web-encoding": "3.0.0",
654+ "web-events": "4.0.0",
655+ "web-fetch": "4.0.1",
656+ "web-file": "4.0.0",
657+ "web-geometry": "0.1.0",
658+ "web-html": "4.1.1",
659+ "web-pointerevents": "2.0.0",
660+ "web-proletarian": "1.0.0",
661+ "web-promise": "3.2.0",
662+ "web-resize-observer": "2.1.0",
663+ "web-router": "1.0.0",
664+ "web-socket": "4.0.0",
665+ "web-storage": "5.0.0",
666+ "web-streams": "4.0.0",
667+ "web-touchevents": "4.0.0",
668+ "web-uievents": "5.0.0",
669+ "web-url": "2.0.0",
670+ "web-workers": "2.0.0",
671+ "web-xhr": "5.0.1",
672+ "webb-aff-list": "0.0.2",
673+ "webb-array": "0.0.2",
674+ "webb-channel": "0.0.3",
675+ "webb-commandline": "0.0.3",
676+ "webb-directory": "0.0.7",
677+ "webb-file": "0.0.1",
678+ "webb-map": "0.0.1",
679+ "webb-monad": "0.0.2",
680+ "webb-mutex": "0.0.7",
681+ "webb-parsing": "0.0.5",
682+ "webb-random": "0.0.1",
683+ "webb-refer": "0.0.3",
684+ "webb-set": "0.0.1",
685+ "webb-slot": "0.0.1",
686+ "webb-stateful": "0.0.3",
687+ "webb-string": "0.0.1",
688+ "webb-test": "0.0.1",
689+ "webb-thread": "0.0.2",
690+ "webb-writer": "0.0.3",
691+ "webextension-polyfill": "0.1.0",
692+ "webgpu": "0.0.1",
693+ "which": "2.0.0",
694+ "whine-core": "0.0.34",
695+ "xterm": "1.0.0",
696+ "yaml-next": "3.1.1",
697+ "yoga-acp-om": "0.1.1",
698+ "yoga-better-auth": "0.2.2",
699+ "yoga-bun-yoga": "0.2.1",
700+ "yoga-config": "0.2.1",
701+ "yoga-country": "3.0.0",
702+ "yoga-docker-compose": "0.1.1",
703+ "yoga-dynamodb": "0.1.1",
704+ "yoga-elasticsearch": "0.1.1",
705+ "yoga-fastify": "0.5.4",
706+ "yoga-fastify-om": "0.4.7",
707+ "yoga-fetch": "1.0.1",
708+ "yoga-fetch-om": "0.8.0",
709+ "yoga-format": "1.0.0",
710+ "yoga-heroui": "2.0.3",
711+ "yoga-http-api": "0.3.4",
712+ "yoga-jaeger": "0.1.1",
713+ "yoga-json": "5.2.1",
714+ "yoga-language": "1.0.0",
715+ "yoga-next-fastify": "0.2.0",
716+ "yoga-om": "2.2.1",
717+ "yoga-om-layer": "2.1.0",
718+ "yoga-om-strom": "0.4.3",
719+ "yoga-om-workerbees": "0.1.2",
720+ "yoga-opentelemetry": "0.2.0",
721+ "yoga-options": "0.1.1",
722+ "yoga-pino": "0.1.1",
723+ "yoga-postgres": "6.0.0",
724+ "yoga-react": "1.0.2",
725+ "yoga-react-dom": "2.0.1",
726+ "yoga-react-native": "0.2.1",
727+ "yoga-react-om": "0.2.0",
728+ "yoga-redis": "0.1.1",
729+ "yoga-scylladb": "0.1.1",
730+ "yoga-shadcn": "1.0.5",
731+ "yoga-sql-types": "0.2.0",
732+ "yoga-sqlite": "0.3.4",
733+ "yoga-sqlite-om": "0.3.0",
734+ "yoga-sse": "0.1.1",
735+ "yoga-subtlecrypto": "0.1.0",
736+ "yoga-test-docker": "0.1.2",
737+ "yoga-timezone": "1.0.0",
738+ "yoga-tree": "1.0.0",
739+ "yoga-tree-svg": "0.1.0",
740+ "yoga-tree-utils": "1.0.0",
741+ "z3": "0.0.2",
742+ "zipperarray": "2.0.0"
743+ }
744+ },
745+ "extra_packages": {
746+ "protobuf": {
747+ "path": "../library"
748+ }
749+ }
750+ },
751+ "packages": {
752+ "aff": {
753+ "type": "registry",
754+ "version": "8.0.0",
755+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
756+ "dependencies": [
757+ "bifunctors",
758+ "control",
759+ "datetime",
760+ "effect",
761+ "either",
762+ "exceptions",
763+ "foldable-traversable",
764+ "functions",
765+ "maybe",
766+ "newtype",
767+ "parallel",
768+ "prelude",
769+ "refs",
770+ "tailrec",
771+ "transformers",
772+ "unsafe-coerce"
773+ ]
774+ },
775+ "arraybuffer": {
776+ "type": "registry",
777+ "version": "13.2.0",
778+ "integrity": "sha256-WPYcYUR+RCUx+Mnccz1Irg1ryvA7pE6OqpkBlqpCqk0=",
779+ "dependencies": [
780+ "arraybuffer-types",
781+ "arrays",
782+ "effect",
783+ "float32",
784+ "functions",
785+ "gen",
786+ "maybe",
787+ "nullable",
788+ "prelude",
789+ "tailrec",
790+ "uint",
791+ "unfoldable"
792+ ]
793+ },
794+ "arraybuffer-builder": {
795+ "type": "registry",
796+ "version": "3.1.0",
797+ "integrity": "sha256-qYW2k/Np6AN8o4tXE526R6QYSqY9JCWJCYo46DXCYLY=",
798+ "dependencies": [
799+ "arraybuffer",
800+ "arraybuffer-types",
801+ "effect",
802+ "float32",
803+ "identity",
804+ "lists",
805+ "maybe",
806+ "newtype",
807+ "prelude",
808+ "tailrec",
809+ "transformers",
810+ "uint"
811+ ]
812+ },
813+ "arraybuffer-types": {
814+ "type": "registry",
815+ "version": "3.0.2",
816+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
817+ "dependencies": []
818+ },
819+ "arrays": {
820+ "type": "registry",
821+ "version": "7.3.0",
822+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
823+ "dependencies": [
824+ "bifunctors",
825+ "control",
826+ "foldable-traversable",
827+ "functions",
828+ "maybe",
829+ "nonempty",
830+ "partial",
831+ "prelude",
832+ "safe-coerce",
833+ "st",
834+ "tailrec",
835+ "tuples",
836+ "unfoldable",
837+ "unsafe-coerce"
838+ ]
839+ },
840+ "bifunctors": {
841+ "type": "registry",
842+ "version": "6.1.0",
843+ "integrity": "sha256-CvZRb8uI75eKIqiYntR+k05Wk6tKlMS5w8sCA2AFna0=",
844+ "dependencies": [
845+ "const",
846+ "either",
847+ "newtype",
848+ "prelude",
849+ "tuples"
850+ ]
851+ },
852+ "console": {
853+ "type": "registry",
854+ "version": "6.1.0",
855+ "integrity": "sha256-3T5PPz1mATZmV0C4GzkCkpLlCa5xG7u8ZNgnLrrrI1Q=",
856+ "dependencies": [
857+ "effect",
858+ "prelude"
859+ ]
860+ },
861+ "const": {
862+ "type": "registry",
863+ "version": "6.0.0",
864+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
865+ "dependencies": [
866+ "invariant",
867+ "newtype",
868+ "prelude"
869+ ]
870+ },
871+ "contravariant": {
872+ "type": "registry",
873+ "version": "6.0.0",
874+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
875+ "dependencies": [
876+ "const",
877+ "either",
878+ "newtype",
879+ "prelude",
880+ "tuples"
881+ ]
882+ },
883+ "control": {
884+ "type": "registry",
885+ "version": "6.0.0",
886+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
887+ "dependencies": [
888+ "newtype",
889+ "prelude"
890+ ]
891+ },
892+ "datetime": {
893+ "type": "registry",
894+ "version": "6.1.0",
895+ "integrity": "sha256-tbv6eDXy6QOD7YSknxYSbsDF32OC2JrNbSBpzMs7Doc=",
896+ "dependencies": [
897+ "bifunctors",
898+ "control",
899+ "either",
900+ "enums",
901+ "foldable-traversable",
902+ "functions",
903+ "gen",
904+ "integers",
905+ "lists",
906+ "maybe",
907+ "newtype",
908+ "numbers",
909+ "ordered-collections",
910+ "partial",
911+ "prelude",
912+ "tuples"
913+ ]
914+ },
915+ "distributive": {
916+ "type": "registry",
917+ "version": "6.0.0",
918+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
919+ "dependencies": [
920+ "identity",
921+ "newtype",
922+ "prelude",
923+ "tuples",
924+ "type-equality"
925+ ]
926+ },
927+ "effect": {
928+ "type": "registry",
929+ "version": "4.0.0",
930+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
931+ "dependencies": [
932+ "prelude"
933+ ]
934+ },
935+ "either": {
936+ "type": "registry",
937+ "version": "6.1.0",
938+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
939+ "dependencies": [
940+ "control",
941+ "invariant",
942+ "maybe",
943+ "prelude"
944+ ]
945+ },
946+ "enums": {
947+ "type": "registry",
948+ "version": "6.0.1",
949+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
950+ "dependencies": [
951+ "control",
952+ "either",
953+ "gen",
954+ "maybe",
955+ "newtype",
956+ "nonempty",
957+ "partial",
958+ "prelude",
959+ "tuples",
960+ "unfoldable"
961+ ]
962+ },
963+ "exceptions": {
964+ "type": "registry",
965+ "version": "6.1.0",
966+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
967+ "dependencies": [
968+ "effect",
969+ "either",
970+ "maybe",
971+ "prelude"
972+ ]
973+ },
974+ "exists": {
975+ "type": "registry",
976+ "version": "6.0.0",
977+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
978+ "dependencies": [
979+ "unsafe-coerce"
980+ ]
981+ },
982+ "float32": {
983+ "type": "registry",
984+ "version": "2.0.0",
985+ "integrity": "sha256-lO8pshPBj5ExM+/ZjZ8nXVltb37XGJdRP8vakl0LBTE=",
986+ "dependencies": [
987+ "gen",
988+ "maybe",
989+ "prelude"
990+ ]
991+ },
992+ "foldable-traversable": {
993+ "type": "registry",
994+ "version": "6.0.0",
995+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
996+ "dependencies": [
997+ "bifunctors",
998+ "const",
999+ "control",
1000+ "either",
1001+ "functors",
1002+ "identity",
1003+ "maybe",
1004+ "newtype",
1005+ "orders",
1006+ "prelude",
1007+ "tuples"
1008+ ]
1009+ },
1010+ "foreign": {
1011+ "type": "registry",
1012+ "version": "7.0.0",
1013+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
1014+ "dependencies": [
1015+ "either",
1016+ "functions",
1017+ "identity",
1018+ "integers",
1019+ "lists",
1020+ "maybe",
1021+ "prelude",
1022+ "strings",
1023+ "transformers"
1024+ ]
1025+ },
1026+ "foreign-object": {
1027+ "type": "registry",
1028+ "version": "4.1.0",
1029+ "integrity": "sha256-x/Q7r80z/vmHRKvPwhYmHP/DnJciPtsyGfRTMzayKIU=",
1030+ "dependencies": [
1031+ "arrays",
1032+ "foldable-traversable",
1033+ "functions",
1034+ "gen",
1035+ "lists",
1036+ "maybe",
1037+ "prelude",
1038+ "st",
1039+ "tailrec",
1040+ "tuples",
1041+ "typelevel-prelude",
1042+ "unfoldable"
1043+ ]
1044+ },
1045+ "functions": {
1046+ "type": "registry",
1047+ "version": "6.0.0",
1048+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
1049+ "dependencies": [
1050+ "prelude"
1051+ ]
1052+ },
1053+ "functors": {
1054+ "type": "registry",
1055+ "version": "5.0.0",
1056+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
1057+ "dependencies": [
1058+ "bifunctors",
1059+ "const",
1060+ "contravariant",
1061+ "control",
1062+ "distributive",
1063+ "either",
1064+ "invariant",
1065+ "maybe",
1066+ "newtype",
1067+ "prelude",
1068+ "profunctor",
1069+ "tuples",
1070+ "unsafe-coerce"
1071+ ]
1072+ },
1073+ "gen": {
1074+ "type": "registry",
1075+ "version": "4.0.0",
1076+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
1077+ "dependencies": [
1078+ "either",
1079+ "foldable-traversable",
1080+ "identity",
1081+ "maybe",
1082+ "newtype",
1083+ "nonempty",
1084+ "prelude",
1085+ "tailrec",
1086+ "tuples",
1087+ "unfoldable"
1088+ ]
1089+ },
1090+ "identity": {
1091+ "type": "registry",
1092+ "version": "6.0.0",
1093+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
1094+ "dependencies": [
1095+ "control",
1096+ "invariant",
1097+ "newtype",
1098+ "prelude"
1099+ ]
1100+ },
1101+ "int64": {
1102+ "type": "registry",
1103+ "version": "3.0.0",
1104+ "integrity": "sha256-umLvKog9B9xKJHsoihXDFM/6jjy+xEfOERxLEsWmnqs=",
1105+ "dependencies": [
1106+ "effect",
1107+ "foreign",
1108+ "functions",
1109+ "gen",
1110+ "integers",
1111+ "maybe",
1112+ "nullable",
1113+ "prelude",
1114+ "unsafe-coerce"
1115+ ]
1116+ },
1117+ "integers": {
1118+ "type": "registry",
1119+ "version": "6.0.0",
1120+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
1121+ "dependencies": [
1122+ "maybe",
1123+ "numbers",
1124+ "prelude"
1125+ ]
1126+ },
1127+ "invariant": {
1128+ "type": "registry",
1129+ "version": "6.0.0",
1130+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
1131+ "dependencies": [
1132+ "control",
1133+ "prelude"
1134+ ]
1135+ },
1136+ "lazy": {
1137+ "type": "registry",
1138+ "version": "6.0.0",
1139+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
1140+ "dependencies": [
1141+ "control",
1142+ "foldable-traversable",
1143+ "invariant",
1144+ "prelude"
1145+ ]
1146+ },
1147+ "lists": {
1148+ "type": "registry",
1149+ "version": "7.0.0",
1150+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
1151+ "dependencies": [
1152+ "bifunctors",
1153+ "control",
1154+ "foldable-traversable",
1155+ "lazy",
1156+ "maybe",
1157+ "newtype",
1158+ "nonempty",
1159+ "partial",
1160+ "prelude",
1161+ "tailrec",
1162+ "tuples",
1163+ "unfoldable"
1164+ ]
1165+ },
1166+ "maybe": {
1167+ "type": "registry",
1168+ "version": "6.0.0",
1169+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
1170+ "dependencies": [
1171+ "control",
1172+ "invariant",
1173+ "newtype",
1174+ "prelude"
1175+ ]
1176+ },
1177+ "newtype": {
1178+ "type": "registry",
1179+ "version": "5.0.0",
1180+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
1181+ "dependencies": [
1182+ "prelude",
1183+ "safe-coerce"
1184+ ]
1185+ },
1186+ "node-buffer": {
1187+ "type": "registry",
1188+ "version": "9.0.0",
1189+ "integrity": "sha256-RdQjilmEHqsT4fwpCr8Mavw8KTafYrS3ZM6zeAAVAl8=",
1190+ "dependencies": [
1191+ "arraybuffer-types",
1192+ "effect",
1193+ "maybe",
1194+ "nullable",
1195+ "st",
1196+ "unsafe-coerce"
1197+ ]
1198+ },
1199+ "node-event-emitter": {
1200+ "type": "registry",
1201+ "version": "3.0.0",
1202+ "integrity": "sha256-wodx71NxJBPXOaawFn01V1ByYB2vT+I3RuV2giOVKMg=",
1203+ "dependencies": [
1204+ "effect",
1205+ "either",
1206+ "functions",
1207+ "maybe",
1208+ "nullable",
1209+ "prelude",
1210+ "unsafe-coerce"
1211+ ]
1212+ },
1213+ "node-process": {
1214+ "type": "registry",
1215+ "version": "11.2.0",
1216+ "integrity": "sha256-onzKeNmaeYfN3HSDPqSFTrrP2Yl9tnVsfKKhnf2plxM=",
1217+ "dependencies": [
1218+ "effect",
1219+ "foreign",
1220+ "foreign-object",
1221+ "maybe",
1222+ "node-event-emitter",
1223+ "node-streams",
1224+ "posix-types",
1225+ "prelude",
1226+ "unsafe-coerce"
1227+ ]
1228+ },
1229+ "node-streams": {
1230+ "type": "registry",
1231+ "version": "9.0.1",
1232+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
1233+ "dependencies": [
1234+ "aff",
1235+ "arrays",
1236+ "effect",
1237+ "either",
1238+ "exceptions",
1239+ "maybe",
1240+ "node-buffer",
1241+ "node-event-emitter",
1242+ "nullable",
1243+ "prelude",
1244+ "refs",
1245+ "st",
1246+ "tailrec",
1247+ "unsafe-coerce"
1248+ ]
1249+ },
1250+ "nonempty": {
1251+ "type": "registry",
1252+ "version": "7.0.0",
1253+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
1254+ "dependencies": [
1255+ "control",
1256+ "foldable-traversable",
1257+ "maybe",
1258+ "prelude",
1259+ "tuples",
1260+ "unfoldable"
1261+ ]
1262+ },
1263+ "nullable": {
1264+ "type": "registry",
1265+ "version": "6.0.0",
1266+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
1267+ "dependencies": [
1268+ "effect",
1269+ "functions",
1270+ "maybe"
1271+ ]
1272+ },
1273+ "numbers": {
1274+ "type": "registry",
1275+ "version": "9.0.1",
1276+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
1277+ "dependencies": [
1278+ "functions",
1279+ "maybe"
1280+ ]
1281+ },
1282+ "ordered-collections": {
1283+ "type": "registry",
1284+ "version": "3.2.0",
1285+ "integrity": "sha256-NaEXc2cz/7lJfxPWEja4XlZbGxuRqJwFKQJjsJf51kQ=",
1286+ "dependencies": [
1287+ "arrays",
1288+ "foldable-traversable",
1289+ "gen",
1290+ "lists",
1291+ "maybe",
1292+ "partial",
1293+ "prelude",
1294+ "st",
1295+ "tailrec",
1296+ "tuples",
1297+ "unfoldable"
1298+ ]
1299+ },
1300+ "orders": {
1301+ "type": "registry",
1302+ "version": "6.0.0",
1303+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
1304+ "dependencies": [
1305+ "newtype",
1306+ "prelude"
1307+ ]
1308+ },
1309+ "parallel": {
1310+ "type": "registry",
1311+ "version": "7.0.0",
1312+ "integrity": "sha256-bAGpVhrFz2IyHkA4MR7+tE/19FZ7dzYBdYPgK5svkqw=",
1313+ "dependencies": [
1314+ "control",
1315+ "effect",
1316+ "either",
1317+ "foldable-traversable",
1318+ "functors",
1319+ "maybe",
1320+ "newtype",
1321+ "prelude",
1322+ "profunctor",
1323+ "refs",
1324+ "transformers"
1325+ ]
1326+ },
1327+ "parsing": {
1328+ "type": "registry",
1329+ "version": "11.0.0",
1330+ "integrity": "sha256-N88gb/XbM29vw/Uop83shuMFT4wieQCz4wlQAct5eMs=",
1331+ "dependencies": [
1332+ "arrays",
1333+ "control",
1334+ "effect",
1335+ "either",
1336+ "enums",
1337+ "foldable-traversable",
1338+ "functions",
1339+ "identity",
1340+ "integers",
1341+ "lazy",
1342+ "lists",
1343+ "maybe",
1344+ "newtype",
1345+ "nullable",
1346+ "numbers",
1347+ "partial",
1348+ "prelude",
1349+ "st",
1350+ "strings",
1351+ "tailrec",
1352+ "transformers",
1353+ "tuples",
1354+ "unfoldable",
1355+ "unicode",
1356+ "unsafe-coerce"
1357+ ]
1358+ },
1359+ "parsing-dataview": {
1360+ "type": "registry",
1361+ "version": "3.2.4",
1362+ "integrity": "sha256-dq1SCl76/UrWhAbxW5Z3OsEpWi1+O0+1nQCo/g3dYaU=",
1363+ "dependencies": [
1364+ "arraybuffer",
1365+ "arraybuffer-types",
1366+ "effect",
1367+ "enums",
1368+ "float32",
1369+ "maybe",
1370+ "parsing",
1371+ "prelude",
1372+ "strings",
1373+ "tailrec",
1374+ "transformers",
1375+ "tuples",
1376+ "uint"
1377+ ]
1378+ },
1379+ "partial": {
1380+ "type": "registry",
1381+ "version": "4.0.0",
1382+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
1383+ "dependencies": []
1384+ },
1385+ "posix-types": {
1386+ "type": "registry",
1387+ "version": "6.0.0",
1388+ "integrity": "sha256-Je5jG439F/SFO/IvVevZnWVxDIonrehlKuJkefP2lHE=",
1389+ "dependencies": [
1390+ "maybe",
1391+ "prelude"
1392+ ]
1393+ },
1394+ "prelude": {
1395+ "type": "registry",
1396+ "version": "6.0.2",
1397+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1398+ "dependencies": []
1399+ },
1400+ "profunctor": {
1401+ "type": "registry",
1402+ "version": "6.0.1",
1403+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
1404+ "dependencies": [
1405+ "control",
1406+ "distributive",
1407+ "either",
1408+ "exists",
1409+ "invariant",
1410+ "newtype",
1411+ "prelude",
1412+ "tuples"
1413+ ]
1414+ },
1415+ "protobuf": {
1416+ "type": "local",
1417+ "path": "../library",
1418+ "dependencies": [
1419+ "arraybuffer",
1420+ "arraybuffer-builder",
1421+ "arraybuffer-types",
1422+ "arrays",
1423+ "control",
1424+ "effect",
1425+ "either",
1426+ "enums",
1427+ "exceptions",
1428+ "float32",
1429+ "foldable-traversable",
1430+ "functions",
1431+ "int64",
1432+ "lists",
1433+ "maybe",
1434+ "newtype",
1435+ "parsing",
1436+ "parsing-dataview",
1437+ "prelude",
1438+ "record",
1439+ "strings",
1440+ "tailrec",
1441+ "transformers",
1442+ "tuples",
1443+ "uint",
1444+ "web-encoding"
1445+ ]
1446+ },
1447+ "record": {
1448+ "type": "registry",
1449+ "version": "4.0.0",
1450+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
1451+ "dependencies": [
1452+ "functions",
1453+ "prelude",
1454+ "unsafe-coerce"
1455+ ]
1456+ },
1457+ "refs": {
1458+ "type": "registry",
1459+ "version": "6.0.0",
1460+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
1461+ "dependencies": [
1462+ "effect",
1463+ "prelude"
1464+ ]
1465+ },
1466+ "safe-coerce": {
1467+ "type": "registry",
1468+ "version": "2.0.0",
1469+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
1470+ "dependencies": [
1471+ "unsafe-coerce"
1472+ ]
1473+ },
1474+ "st": {
1475+ "type": "registry",
1476+ "version": "6.2.0",
1477+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
1478+ "dependencies": [
1479+ "partial",
1480+ "prelude",
1481+ "tailrec",
1482+ "unsafe-coerce"
1483+ ]
1484+ },
1485+ "strings": {
1486+ "type": "registry",
1487+ "version": "6.0.1",
1488+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
1489+ "dependencies": [
1490+ "arrays",
1491+ "control",
1492+ "either",
1493+ "enums",
1494+ "foldable-traversable",
1495+ "gen",
1496+ "integers",
1497+ "maybe",
1498+ "newtype",
1499+ "nonempty",
1500+ "partial",
1501+ "prelude",
1502+ "tailrec",
1503+ "tuples",
1504+ "unfoldable",
1505+ "unsafe-coerce"
1506+ ]
1507+ },
1508+ "tailrec": {
1509+ "type": "registry",
1510+ "version": "6.1.0",
1511+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
1512+ "dependencies": [
1513+ "bifunctors",
1514+ "effect",
1515+ "either",
1516+ "identity",
1517+ "maybe",
1518+ "partial",
1519+ "prelude",
1520+ "refs"
1521+ ]
1522+ },
1523+ "transformers": {
1524+ "type": "registry",
1525+ "version": "6.1.0",
1526+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1527+ "dependencies": [
1528+ "control",
1529+ "distributive",
1530+ "effect",
1531+ "either",
1532+ "exceptions",
1533+ "foldable-traversable",
1534+ "identity",
1535+ "lazy",
1536+ "maybe",
1537+ "newtype",
1538+ "prelude",
1539+ "st",
1540+ "tailrec",
1541+ "tuples",
1542+ "unfoldable"
1543+ ]
1544+ },
1545+ "tuples": {
1546+ "type": "registry",
1547+ "version": "7.0.0",
1548+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
1549+ "dependencies": [
1550+ "control",
1551+ "invariant",
1552+ "prelude"
1553+ ]
1554+ },
1555+ "type-equality": {
1556+ "type": "registry",
1557+ "version": "4.0.1",
1558+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
1559+ "dependencies": []
1560+ },
1561+ "typelevel-prelude": {
1562+ "type": "registry",
1563+ "version": "7.0.0",
1564+ "integrity": "sha256-+pHi14/40mTj/+lmCWqL0T7iXIXD1+NSg/KItyyoB0A=",
1565+ "dependencies": [
1566+ "prelude",
1567+ "type-equality"
1568+ ]
1569+ },
1570+ "uint": {
1571+ "type": "registry",
1572+ "version": "7.0.0",
1573+ "integrity": "sha256-MCTYyDPFLoNLweSY1oEjKKo0xhqCGrAbiBQNdva1B3w=",
1574+ "dependencies": [
1575+ "effect",
1576+ "enums",
1577+ "gen",
1578+ "maybe",
1579+ "numbers",
1580+ "prelude"
1581+ ]
1582+ },
1583+ "unfoldable": {
1584+ "type": "registry",
1585+ "version": "6.0.0",
1586+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
1587+ "dependencies": [
1588+ "foldable-traversable",
1589+ "maybe",
1590+ "partial",
1591+ "prelude",
1592+ "tuples"
1593+ ]
1594+ },
1595+ "unicode": {
1596+ "type": "registry",
1597+ "version": "6.0.0",
1598+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
1599+ "dependencies": [
1600+ "foldable-traversable",
1601+ "maybe",
1602+ "strings"
1603+ ]
1604+ },
1605+ "unsafe-coerce": {
1606+ "type": "registry",
1607+ "version": "6.0.0",
1608+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
1609+ "dependencies": []
1610+ },
1611+ "web-encoding": {
1612+ "type": "registry",
1613+ "version": "3.0.0",
1614+ "integrity": "sha256-h9oYV0tHTqWhP2J1MwPWR28qwHOwjeVxgq/0YNTJOZo=",
1615+ "dependencies": [
1616+ "arraybuffer-types",
1617+ "effect",
1618+ "newtype",
1619+ "prelude"
1620+ ]
1621+ }
1622+ }
1623+}
conformance/spago.yamlnew file+17
@@ -0,0 +1,17 @@
1+package:
2+ name: conformance
3+ dependencies:
4+ - protobuf
5+ - aff
6+ - node-buffer
7+ - node-process
8+ - node-streams
9+ - console
10+ - unsafe-coerce
11+
12+workspace:
13+ packageSet:
14+ registry: 81.1.0
15+ extraPackages:
16+ protobuf:
17+ path: ../library
conformance/src/Main.pursnew file+104
@@ -0,0 +1,104 @@
1+-- | Entry point for the conformance test program.
2+module Main (main) where
3+
4+import Prelude
5+
6+import Conformance.Conformance (ConformanceRequest(..), ConformanceResponse, ConformanceResponse_Result(..), mkConformanceResponse, parseConformanceRequest, putConformanceResponse)
7+import Conformance.Conformance as C
8+import Control.Monad.Rec.Class (class MonadRec, untilJust)
9+import Control.Monad.Writer (tell)
10+import Data.ArrayBuffer.ArrayBuffer as AB
11+import Data.ArrayBuffer.Builder (DataBuff(..), execPutM, putInt32le, subBuilder, toView)
12+import Data.ArrayBuffer.Builder as Builder
13+import Data.ArrayBuffer.DataView as DV
14+import Data.ArrayBuffer.Types (ArrayBuffer)
15+import Data.Either (Either(..), either)
16+import Data.Maybe (Maybe(..))
17+import Effect (Effect)
18+import Effect.Aff (error, runAff_, throwError)
19+import Effect.Class (class MonadEffect, liftEffect)
20+import Effect.Console as Console
21+import Node.Buffer (Buffer, concat, fromArrayBuffer, toArrayBuffer)
22+import Node.Process (stdin, stdout)
23+import Node.Stream.Aff (readN, write)
24+import Parsing (runParserT)
25+import Parsing.DataView (anyInt32le)
26+import Protobuf.Library (Bytes(..))
27+import ProtobufTestMessages.Proto3.TestMessagesProto3 as T3
28+import Unsafe.Coerce (unsafeCoerce)
29+
30+
31+-- https://github.com/protocolbuffers/protobuf/blob/5e7b709564403f1fe22476f7efa1eeff61e995cb/conformance/conformance_test_runner.cc#L48-L54
32+--
33+-- Every test consists of a ConformanceRequest/ConformanceResponse
34+-- request/reply pair. The protocol on the pipe is simply:
35+--
36+-- 1. tester sends 4-byte length N (little endian)
37+-- 2. tester sends N bytes representing a ConformanceRequest proto
38+-- 3. testee sends 4-byte length M (little endian)
39+-- 4. testee sends M bytes representing a ConformanceResponse proto
40+
41+main :: Effect Unit
42+main = runAff_ (either (unsafeCoerce >>> Console.error) (\_ -> pure unit)) $ untilJust do
43+ {buffers:msgLenBuf, readagain:readagain1} <- readN stdin 4
44+ msgLenAB :: ArrayBuffer <- liftEffect $ toArrayBuffer =<< concat msgLenBuf
45+ if AB.byteLength msgLenAB == 0 || not readagain1 then
46+ pure (Just unit)
47+ else do
48+ runParserT (DV.whole msgLenAB) anyInt32le >>= case _ of
49+ Left err -> throwError $ unsafeCoerce err
50+ Right msgLen | msgLen < 0 || msgLen > 1000000000 -> do
51+ throwError $ error $ "Error msgLen " <> show msgLen
52+ Right msgLen -> do
53+ {buffers:msgBuf} <- readN stdin msgLen
54+ msgAB <- liftEffect $ toArrayBuffer =<< concat msgBuf
55+ runParserT (DV.whole msgAB) (parseConformanceRequest msgLen) >>= case _ of
56+ Left err -> throwError $ unsafeCoerce err
57+ Right request -> do
58+ response <- reply request
59+ responseAB :: ArrayBuffer <- execPutM $ do
60+ responsesub <- subBuilder $ putConformanceResponse response
61+ putInt32le $ Builder.length responsesub
62+ tell responsesub
63+ responseBuf :: Buffer <- liftEffect $ fromArrayBuffer responseAB
64+ write stdout [responseBuf]
65+ pure Nothing
66+
67+reply :: forall m. MonadEffect m => MonadRec m => ConformanceRequest -> m ConformanceResponse
68+
69+reply (ConformanceRequest
70+ { requested_output_format: _ -- :: Maybe.Maybe WireFormat
71+ , message_type: Just "protobuf_test_messages.proto2.TestAllTypesProto2"
72+ , test_category: _ -- :: Maybe.Maybe TestCategory
73+ , jspb_encoding_options: _ -- :: Maybe.Maybe JspbEncodingConfig
74+ , print_unknown_fields: _ -- :: Maybe.Maybe Boolean
75+ , payload: _ -- Just (C.ConformanceRequest_Payload_Protobuf_payload arraybuffer)
76+ }) = pure $ mkConformanceResponse
77+ { result: Just $ ConformanceResponse_Result_Skipped "Skipped proto2"
78+ }
79+
80+reply (ConformanceRequest
81+ { requested_output_format: Just C.WireFormat_PROTOBUF
82+ , message_type: _ -- Just "protobuf_test_messages.proto3.TestAllTypesProto3"
83+ , test_category: Just C.TestCategory_BINARY_TEST
84+ , jspb_encoding_options: _ -- :: Maybe.Maybe JspbEncodingConfig
85+ , print_unknown_fields: _ -- :: Maybe.Maybe Boolean
86+ , payload: Just (C.ConformanceRequest_Payload_Protobuf_payload (Bytes receipt_payload))
87+ }) = do
88+ let dv = toView receipt_payload
89+ parsed <- runParserT dv $ T3.parseTestAllTypesProto3 $ DV.byteLength dv
90+ case parsed of
91+ Left err ->
92+ pure $ mkConformanceResponse
93+ { result: Just $ ConformanceResponse_Result_Parse_error $ show err
94+ }
95+ Right x -> do
96+ reply_payload <- execPutM $ T3.putTestAllTypesProto3 x
97+ pure $ mkConformanceResponse
98+ { result: Just $ ConformanceResponse_Result_Protobuf_payload (Bytes $ Buff reply_payload)
99+ }
100+
101+reply _ = pure $ mkConformanceResponse
102+ { result: Just $ ConformanceResponse_Result_Skipped "Not enough information"
103+ }
104+
conformance/generated/README.md → conformance/src/generated/README.mdrenamed

The content is the same.

conformance/src/generated/any.Google.Protobuf.pursnew file+151
@@ -0,0 +1,151 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/any.proto`
2+module Google.Protobuf.Any
3+( Any(..), AnyRow, AnyR, parseAny, putAny, defaultAny, mkAny, mergeAny
4+)
5+where
6+import Protobuf.Internal.Prelude
7+import Protobuf.Internal.Prelude as Prelude
8+
9+
10+
11+
12+-- | Message generated by __protobuf__ from `google.protobuf.Any`
13+-- |
14+-- | `Any` contains an arbitrary serialized protocol buffer message along with a
15+-- | URL that describes the type of the serialized message.
16+-- |
17+-- | Protobuf library provides support to pack/unpack Any values in the form
18+-- | of utility functions or additional generated methods of the Any type.
19+-- |
20+-- | Example 1: Pack and unpack a message in C++.
21+-- |
22+-- | Foo foo = ...;
23+-- | Any any;
24+-- | any.PackFrom(foo);
25+-- | ...
26+-- | if (any.UnpackTo(&foo)) {
27+-- | ...
28+-- | }
29+-- |
30+-- | Example 2: Pack and unpack a message in Java.
31+-- |
32+-- | Foo foo = ...;
33+-- | Any any = Any.pack(foo);
34+-- | ...
35+-- | if (any.is(Foo.class)) {
36+-- | foo = any.unpack(Foo.class);
37+-- | }
38+-- | // or ...
39+-- | if (any.isSameTypeAs(Foo.getDefaultInstance())) {
40+-- | foo = any.unpack(Foo.getDefaultInstance());
41+-- | }
42+-- |
43+-- | Example 3: Pack and unpack a message in Python.
44+-- |
45+-- | foo = Foo(...)
46+-- | any = Any()
47+-- | any.Pack(foo)
48+-- | ...
49+-- | if any.Is(Foo.DESCRIPTOR):
50+-- | any.Unpack(foo)
51+-- | ...
52+-- |
53+-- | Example 4: Pack and unpack a message in Go
54+-- |
55+-- | foo := &pb.Foo{...}
56+-- | any, err := anypb.New(foo)
57+-- | if err != nil {
58+-- | ...
59+-- | }
60+-- | ...
61+-- | foo := &pb.Foo{}
62+-- | if err := any.UnmarshalTo(foo); err != nil {
63+-- | ...
64+-- | }
65+-- |
66+-- | The pack methods provided by protobuf library will by default use
67+-- | 'type.googleapis.com/full.type.name' as the type URL and the unpack
68+-- | methods only use the fully qualified type name after the last '/'
69+-- | in the type URL, for example "foo.bar.com/x/y.z" will yield type
70+-- | name "y.z".
71+-- |
72+-- | JSON
73+-- | ====
74+-- | The JSON representation of an `Any` value uses the regular
75+-- | representation of the deserialized, embedded message, with an
76+-- | additional field `@type` which contains the type URL. Example:
77+-- |
78+-- | package google.profile;
79+-- | message Person {
80+-- | string first_name = 1;
81+-- | string last_name = 2;
82+-- | }
83+-- |
84+-- | {
85+-- | "@type": "type.googleapis.com/google.profile.Person",
86+-- | "firstName": <string>,
87+-- | "lastName": <string>
88+-- | }
89+-- |
90+-- | If the embedded message type is well-known and has a custom JSON
91+-- | representation, that representation will be embedded adding a field
92+-- | `value` which holds the custom JSON in addition to the `@type`
93+-- | field. Example (for message [google.protobuf.Duration][]):
94+-- |
95+-- | {
96+-- | "@type": "type.googleapis.com/google.protobuf.Duration",
97+-- | "value": "1.212s"
98+-- | }
99+-- |
100+newtype Any = Any AnyR
101+type AnyRow =
102+ ( type_url :: Prelude.Maybe String
103+ , value :: Prelude.Maybe Prelude.Bytes
104+ , __unknown_fields :: Array Prelude.UnknownField
105+ )
106+type AnyR = Record AnyRow
107+derive instance genericAny :: Prelude.Generic Any _
108+derive instance newtypeAny :: Prelude.Newtype Any _
109+derive instance eqAny :: Prelude.Eq Any
110+instance showAny :: Prelude.Show Any where show x = Prelude.genericShow x
111+
112+putAny :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Any -> Prelude.PutM m Prelude.Unit
113+putAny (Any r) = do
114+ Prelude.putOptional 1 r.type_url Prelude.isDefault Prelude.encodeStringField
115+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeBytesField
116+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
117+
118+parseAny :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Any
119+parseAny length = Prelude.label "Any / " $
120+ Prelude.parseMessage Any defaultAny parseField length
121+ where
122+ parseField
123+ :: Prelude.FieldNumberInt
124+ -> Prelude.WireType
125+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder AnyR AnyR)
126+ parseField 1 Prelude.LenDel = Prelude.label "type_url / " $ do
127+ x <- Prelude.decodeString
128+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "type_url") $ \_ -> Prelude.Just x
129+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
130+ x <- Prelude.decodeBytes
131+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
132+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
133+
134+defaultAny :: AnyR
135+defaultAny =
136+ { type_url: Prelude.Nothing
137+ , value: Prelude.Nothing
138+ , __unknown_fields: []
139+ }
140+
141+mkAny :: forall r1 r3. Prelude.Union r1 AnyRow r3 => Prelude.Nub r3 AnyRow => Record r1 -> Any
142+mkAny r = Any $ Prelude.merge r defaultAny
143+
144+mergeAny :: Any -> Any -> Any
145+mergeAny (Any l) (Any r) = Any
146+ { type_url: Prelude.alt l.type_url r.type_url
147+ , value: Prelude.alt l.value r.value
148+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
149+ }
150+
151+
conformance/src/generated/conformance.Conformance.pursnew file+407
@@ -0,0 +1,407 @@
1+-- | Generated by __protobuf__ from file `conformance.proto`
2+module Conformance.Conformance
3+( FailureSet(..), FailureSetRow, FailureSetR, parseFailureSet, putFailureSet, defaultFailureSet, mkFailureSet, mergeFailureSet
4+, ConformanceRequest(..), ConformanceRequestRow, ConformanceRequestR, parseConformanceRequest, putConformanceRequest, defaultConformanceRequest, mkConformanceRequest, mergeConformanceRequest, ConformanceRequest_Payload(..)
5+, ConformanceResponse(..), ConformanceResponseRow, ConformanceResponseR, parseConformanceResponse, putConformanceResponse, defaultConformanceResponse, mkConformanceResponse, mergeConformanceResponse, ConformanceResponse_Result(..)
6+, JspbEncodingConfig(..), JspbEncodingConfigRow, JspbEncodingConfigR, parseJspbEncodingConfig, putJspbEncodingConfig, defaultJspbEncodingConfig, mkJspbEncodingConfig, mergeJspbEncodingConfig
7+, WireFormat(..)
8+, TestCategory(..)
9+)
10+where
11+import Protobuf.Internal.Prelude
12+import Protobuf.Internal.Prelude as Prelude
13+
14+
15+
16+
17+-- | Message generated by __protobuf__ from `conformance.FailureSet`
18+-- |
19+-- | The conformance runner will request a list of failures as the first request.
20+-- | This will be known by message_type == "conformance.FailureSet", a conformance
21+-- | test should return a serialized FailureSet in protobuf_payload.
22+newtype FailureSet = FailureSet FailureSetR
23+type FailureSetRow =
24+ ( failure :: Array String
25+ , __unknown_fields :: Array Prelude.UnknownField
26+ )
27+type FailureSetR = Record FailureSetRow
28+derive instance genericFailureSet :: Prelude.Generic FailureSet _
29+derive instance newtypeFailureSet :: Prelude.Newtype FailureSet _
30+derive instance eqFailureSet :: Prelude.Eq FailureSet
31+instance showFailureSet :: Prelude.Show FailureSet where show x = Prelude.genericShow x
32+
33+putFailureSet :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => FailureSet -> Prelude.PutM m Prelude.Unit
34+putFailureSet (FailureSet r) = do
35+ Prelude.putRepeated 1 r.failure Prelude.encodeStringField
36+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
37+
38+parseFailureSet :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m FailureSet
39+parseFailureSet length = Prelude.label "FailureSet / " $
40+ Prelude.parseMessage FailureSet defaultFailureSet parseField length
41+ where
42+ parseField
43+ :: Prelude.FieldNumberInt
44+ -> Prelude.WireType
45+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder FailureSetR FailureSetR)
46+ parseField 1 Prelude.LenDel = Prelude.label "failure / " $ do
47+ x <- Prelude.decodeString
48+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "failure") $ Prelude.flip Prelude.snoc x
49+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
50+
51+defaultFailureSet :: FailureSetR
52+defaultFailureSet =
53+ { failure: []
54+ , __unknown_fields: []
55+ }
56+
57+mkFailureSet :: forall r1 r3. Prelude.Union r1 FailureSetRow r3 => Prelude.Nub r3 FailureSetRow => Record r1 -> FailureSet
58+mkFailureSet r = FailureSet $ Prelude.merge r defaultFailureSet
59+
60+mergeFailureSet :: FailureSet -> FailureSet -> FailureSet
61+mergeFailureSet (FailureSet l) (FailureSet r) = FailureSet
62+ { failure: r.failure <> l.failure
63+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
64+ }
65+
66+
67+-- | Message generated by __protobuf__ from `conformance.ConformanceRequest`
68+-- |
69+-- | Represents a single test case's input. The testee should:
70+-- |
71+-- | 1. parse this proto (which should always succeed)
72+-- | 2. parse the protobuf or JSON payload in "payload" (which may fail)
73+-- | 3. if the parse succeeded, serialize the message in the requested format.
74+newtype ConformanceRequest = ConformanceRequest ConformanceRequestR
75+type ConformanceRequestRow =
76+ ( requested_output_format :: Prelude.Maybe WireFormat
77+ , message_type :: Prelude.Maybe String
78+ , test_category :: Prelude.Maybe TestCategory
79+ , jspb_encoding_options :: Prelude.Maybe JspbEncodingConfig
80+ , print_unknown_fields :: Prelude.Maybe Boolean
81+ , payload :: Prelude.Maybe ConformanceRequest_Payload
82+ , __unknown_fields :: Array Prelude.UnknownField
83+ )
84+type ConformanceRequestR = Record ConformanceRequestRow
85+derive instance genericConformanceRequest :: Prelude.Generic ConformanceRequest _
86+derive instance newtypeConformanceRequest :: Prelude.Newtype ConformanceRequest _
87+derive instance eqConformanceRequest :: Prelude.Eq ConformanceRequest
88+instance showConformanceRequest :: Prelude.Show ConformanceRequest where show x = Prelude.genericShow x
89+
90+putConformanceRequest :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => ConformanceRequest -> Prelude.PutM m Prelude.Unit
91+putConformanceRequest (ConformanceRequest r) = do
92+ Prelude.putOptional 3 r.requested_output_format Prelude.isDefault Prelude.putEnumField
93+ Prelude.putOptional 4 r.message_type Prelude.isDefault Prelude.encodeStringField
94+ Prelude.putOptional 5 r.test_category Prelude.isDefault Prelude.putEnumField
95+ Prelude.putOptional 6 r.jspb_encoding_options (\_ -> false) $ Prelude.putLenDel putJspbEncodingConfig
96+ Prelude.putOptional 9 r.print_unknown_fields Prelude.isDefault Prelude.encodeBoolField
97+ case r.payload of
98+ Prelude.Nothing -> pure Prelude.unit
99+ Prelude.Just (ConformanceRequest_Payload_Protobuf_payload x) -> Prelude.putOptional 1 (Prelude.Just x) (\_ -> false) Prelude.encodeBytesField
100+ Prelude.Just (ConformanceRequest_Payload_Json_payload x) -> Prelude.putOptional 2 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
101+ Prelude.Just (ConformanceRequest_Payload_Jspb_payload x) -> Prelude.putOptional 7 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
102+ Prelude.Just (ConformanceRequest_Payload_Text_payload x) -> Prelude.putOptional 8 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
103+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
104+
105+parseConformanceRequest :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m ConformanceRequest
106+parseConformanceRequest length = Prelude.label "ConformanceRequest / " $
107+ Prelude.parseMessage ConformanceRequest defaultConformanceRequest parseField length
108+ where
109+ parseField
110+ :: Prelude.FieldNumberInt
111+ -> Prelude.WireType
112+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder ConformanceRequestR ConformanceRequestR)
113+ parseField 1 Prelude.LenDel = Prelude.label "protobuf_payload / " $ do
114+ x <- Prelude.decodeBytes
115+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "payload") $ \_ -> Prelude.Just (ConformanceRequest_Payload_Protobuf_payload x)
116+ parseField 2 Prelude.LenDel = Prelude.label "json_payload / " $ do
117+ x <- Prelude.decodeString
118+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "payload") $ \_ -> Prelude.Just (ConformanceRequest_Payload_Json_payload x)
119+ parseField 7 Prelude.LenDel = Prelude.label "jspb_payload / " $ do
120+ x <- Prelude.decodeString
121+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "payload") $ \_ -> Prelude.Just (ConformanceRequest_Payload_Jspb_payload x)
122+ parseField 8 Prelude.LenDel = Prelude.label "text_payload / " $ do
123+ x <- Prelude.decodeString
124+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "payload") $ \_ -> Prelude.Just (ConformanceRequest_Payload_Text_payload x)
125+ parseField 3 Prelude.VarInt = Prelude.label "requested_output_format / " $ do
126+ x <- Prelude.parseEnum
127+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "requested_output_format") $ \_ -> Prelude.Just x
128+ parseField 4 Prelude.LenDel = Prelude.label "message_type / " $ do
129+ x <- Prelude.decodeString
130+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "message_type") $ \_ -> Prelude.Just x
131+ parseField 5 Prelude.VarInt = Prelude.label "test_category / " $ do
132+ x <- Prelude.parseEnum
133+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "test_category") $ \_ -> Prelude.Just x
134+ parseField 6 Prelude.LenDel = Prelude.label "jspb_encoding_options / " $ do
135+ x <- Prelude.parseLenDel parseJspbEncodingConfig
136+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "jspb_encoding_options") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeJspbEncodingConfig x)
137+ parseField 9 Prelude.VarInt = Prelude.label "print_unknown_fields / " $ do
138+ x <- Prelude.decodeBool
139+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "print_unknown_fields") $ \_ -> Prelude.Just x
140+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
141+
142+defaultConformanceRequest :: ConformanceRequestR
143+defaultConformanceRequest =
144+ { requested_output_format: Prelude.Nothing
145+ , message_type: Prelude.Nothing
146+ , test_category: Prelude.Nothing
147+ , jspb_encoding_options: Prelude.Nothing
148+ , print_unknown_fields: Prelude.Nothing
149+ , payload: Prelude.Nothing
150+ , __unknown_fields: []
151+ }
152+
153+mkConformanceRequest :: forall r1 r3. Prelude.Union r1 ConformanceRequestRow r3 => Prelude.Nub r3 ConformanceRequestRow => Record r1 -> ConformanceRequest
154+mkConformanceRequest r = ConformanceRequest $ Prelude.merge r defaultConformanceRequest
155+data ConformanceRequest_Payload
156+ = ConformanceRequest_Payload_Protobuf_payload Prelude.Bytes
157+ | ConformanceRequest_Payload_Json_payload String
158+ | ConformanceRequest_Payload_Jspb_payload String
159+ | ConformanceRequest_Payload_Text_payload String
160+
161+derive instance genericConformanceRequest_Payload :: Prelude.Generic ConformanceRequest_Payload _
162+derive instance eqConformanceRequest_Payload :: Prelude.Eq ConformanceRequest_Payload
163+instance showConformanceRequest_Payload :: Prelude.Show ConformanceRequest_Payload where show = Prelude.genericShow
164+
165+mergeConformanceRequest_Payload :: Prelude.Maybe ConformanceRequest_Payload -> Prelude.Maybe ConformanceRequest_Payload -> Prelude.Maybe ConformanceRequest_Payload
166+mergeConformanceRequest_Payload l r = case Prelude.Tuple l r of
167+ _ -> Prelude.alt l r
168+
169+mergeConformanceRequest :: ConformanceRequest -> ConformanceRequest -> ConformanceRequest
170+mergeConformanceRequest (ConformanceRequest l) (ConformanceRequest r) = ConformanceRequest
171+ { requested_output_format: Prelude.alt l.requested_output_format r.requested_output_format
172+ , message_type: Prelude.alt l.message_type r.message_type
173+ , test_category: Prelude.alt l.test_category r.test_category
174+ , jspb_encoding_options: Prelude.mergeWith mergeJspbEncodingConfig l.jspb_encoding_options r.jspb_encoding_options
175+ , print_unknown_fields: Prelude.alt l.print_unknown_fields r.print_unknown_fields
176+ , payload: mergeConformanceRequest_Payload l.payload r.payload
177+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
178+ }
179+
180+
181+-- | Message generated by __protobuf__ from `conformance.ConformanceResponse`
182+-- |
183+-- | Represents a single test case's output.
184+newtype ConformanceResponse = ConformanceResponse ConformanceResponseR
185+type ConformanceResponseRow =
186+ ( result :: Prelude.Maybe ConformanceResponse_Result
187+ , __unknown_fields :: Array Prelude.UnknownField
188+ )
189+type ConformanceResponseR = Record ConformanceResponseRow
190+derive instance genericConformanceResponse :: Prelude.Generic ConformanceResponse _
191+derive instance newtypeConformanceResponse :: Prelude.Newtype ConformanceResponse _
192+derive instance eqConformanceResponse :: Prelude.Eq ConformanceResponse
193+instance showConformanceResponse :: Prelude.Show ConformanceResponse where show x = Prelude.genericShow x
194+
195+putConformanceResponse :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => ConformanceResponse -> Prelude.PutM m Prelude.Unit
196+putConformanceResponse (ConformanceResponse r) = do
197+ case r.result of
198+ Prelude.Nothing -> pure Prelude.unit
199+ Prelude.Just (ConformanceResponse_Result_Parse_error x) -> Prelude.putOptional 1 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
200+ Prelude.Just (ConformanceResponse_Result_Serialize_error x) -> Prelude.putOptional 6 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
201+ Prelude.Just (ConformanceResponse_Result_Timeout_error x) -> Prelude.putOptional 9 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
202+ Prelude.Just (ConformanceResponse_Result_Runtime_error x) -> Prelude.putOptional 2 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
203+ Prelude.Just (ConformanceResponse_Result_Protobuf_payload x) -> Prelude.putOptional 3 (Prelude.Just x) (\_ -> false) Prelude.encodeBytesField
204+ Prelude.Just (ConformanceResponse_Result_Json_payload x) -> Prelude.putOptional 4 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
205+ Prelude.Just (ConformanceResponse_Result_Skipped x) -> Prelude.putOptional 5 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
206+ Prelude.Just (ConformanceResponse_Result_Jspb_payload x) -> Prelude.putOptional 7 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
207+ Prelude.Just (ConformanceResponse_Result_Text_payload x) -> Prelude.putOptional 8 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
208+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
209+
210+parseConformanceResponse :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m ConformanceResponse
211+parseConformanceResponse length = Prelude.label "ConformanceResponse / " $
212+ Prelude.parseMessage ConformanceResponse defaultConformanceResponse parseField length
213+ where
214+ parseField
215+ :: Prelude.FieldNumberInt
216+ -> Prelude.WireType
217+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder ConformanceResponseR ConformanceResponseR)
218+ parseField 1 Prelude.LenDel = Prelude.label "parse_error / " $ do
219+ x <- Prelude.decodeString
220+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Parse_error x)
221+ parseField 6 Prelude.LenDel = Prelude.label "serialize_error / " $ do
222+ x <- Prelude.decodeString
223+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Serialize_error x)
224+ parseField 9 Prelude.LenDel = Prelude.label "timeout_error / " $ do
225+ x <- Prelude.decodeString
226+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Timeout_error x)
227+ parseField 2 Prelude.LenDel = Prelude.label "runtime_error / " $ do
228+ x <- Prelude.decodeString
229+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Runtime_error x)
230+ parseField 3 Prelude.LenDel = Prelude.label "protobuf_payload / " $ do
231+ x <- Prelude.decodeBytes
232+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Protobuf_payload x)
233+ parseField 4 Prelude.LenDel = Prelude.label "json_payload / " $ do
234+ x <- Prelude.decodeString
235+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Json_payload x)
236+ parseField 5 Prelude.LenDel = Prelude.label "skipped / " $ do
237+ x <- Prelude.decodeString
238+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Skipped x)
239+ parseField 7 Prelude.LenDel = Prelude.label "jspb_payload / " $ do
240+ x <- Prelude.decodeString
241+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Jspb_payload x)
242+ parseField 8 Prelude.LenDel = Prelude.label "text_payload / " $ do
243+ x <- Prelude.decodeString
244+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "result") $ \_ -> Prelude.Just (ConformanceResponse_Result_Text_payload x)
245+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
246+
247+defaultConformanceResponse :: ConformanceResponseR
248+defaultConformanceResponse =
249+ { result: Prelude.Nothing
250+ , __unknown_fields: []
251+ }
252+
253+mkConformanceResponse :: forall r1 r3. Prelude.Union r1 ConformanceResponseRow r3 => Prelude.Nub r3 ConformanceResponseRow => Record r1 -> ConformanceResponse
254+mkConformanceResponse r = ConformanceResponse $ Prelude.merge r defaultConformanceResponse
255+data ConformanceResponse_Result
256+ = ConformanceResponse_Result_Parse_error String
257+ | ConformanceResponse_Result_Serialize_error String
258+ | ConformanceResponse_Result_Timeout_error String
259+ | ConformanceResponse_Result_Runtime_error String
260+ | ConformanceResponse_Result_Protobuf_payload Prelude.Bytes
261+ | ConformanceResponse_Result_Json_payload String
262+ | ConformanceResponse_Result_Skipped String
263+ | ConformanceResponse_Result_Jspb_payload String
264+ | ConformanceResponse_Result_Text_payload String
265+
266+derive instance genericConformanceResponse_Result :: Prelude.Generic ConformanceResponse_Result _
267+derive instance eqConformanceResponse_Result :: Prelude.Eq ConformanceResponse_Result
268+instance showConformanceResponse_Result :: Prelude.Show ConformanceResponse_Result where show = Prelude.genericShow
269+
270+mergeConformanceResponse_Result :: Prelude.Maybe ConformanceResponse_Result -> Prelude.Maybe ConformanceResponse_Result -> Prelude.Maybe ConformanceResponse_Result
271+mergeConformanceResponse_Result l r = case Prelude.Tuple l r of
272+ _ -> Prelude.alt l r
273+
274+mergeConformanceResponse :: ConformanceResponse -> ConformanceResponse -> ConformanceResponse
275+mergeConformanceResponse (ConformanceResponse l) (ConformanceResponse r) = ConformanceResponse
276+ { result: mergeConformanceResponse_Result l.result r.result
277+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
278+ }
279+
280+
281+-- | Message generated by __protobuf__ from `conformance.JspbEncodingConfig`
282+-- |
283+-- | Encoding options for jspb format.
284+newtype JspbEncodingConfig = JspbEncodingConfig JspbEncodingConfigR
285+type JspbEncodingConfigRow =
286+ ( use_jspb_array_any_format :: Prelude.Maybe Boolean
287+ , __unknown_fields :: Array Prelude.UnknownField
288+ )
289+type JspbEncodingConfigR = Record JspbEncodingConfigRow
290+derive instance genericJspbEncodingConfig :: Prelude.Generic JspbEncodingConfig _
291+derive instance newtypeJspbEncodingConfig :: Prelude.Newtype JspbEncodingConfig _
292+derive instance eqJspbEncodingConfig :: Prelude.Eq JspbEncodingConfig
293+instance showJspbEncodingConfig :: Prelude.Show JspbEncodingConfig where show x = Prelude.genericShow x
294+
295+putJspbEncodingConfig :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => JspbEncodingConfig -> Prelude.PutM m Prelude.Unit
296+putJspbEncodingConfig (JspbEncodingConfig r) = do
297+ Prelude.putOptional 1 r.use_jspb_array_any_format Prelude.isDefault Prelude.encodeBoolField
298+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
299+
300+parseJspbEncodingConfig :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m JspbEncodingConfig
301+parseJspbEncodingConfig length = Prelude.label "JspbEncodingConfig / " $
302+ Prelude.parseMessage JspbEncodingConfig defaultJspbEncodingConfig parseField length
303+ where
304+ parseField
305+ :: Prelude.FieldNumberInt
306+ -> Prelude.WireType
307+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder JspbEncodingConfigR JspbEncodingConfigR)
308+ parseField 1 Prelude.VarInt = Prelude.label "use_jspb_array_any_format / " $ do
309+ x <- Prelude.decodeBool
310+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "use_jspb_array_any_format") $ \_ -> Prelude.Just x
311+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
312+
313+defaultJspbEncodingConfig :: JspbEncodingConfigR
314+defaultJspbEncodingConfig =
315+ { use_jspb_array_any_format: Prelude.Nothing
316+ , __unknown_fields: []
317+ }
318+
319+mkJspbEncodingConfig :: forall r1 r3. Prelude.Union r1 JspbEncodingConfigRow r3 => Prelude.Nub r3 JspbEncodingConfigRow => Record r1 -> JspbEncodingConfig
320+mkJspbEncodingConfig r = JspbEncodingConfig $ Prelude.merge r defaultJspbEncodingConfig
321+
322+mergeJspbEncodingConfig :: JspbEncodingConfig -> JspbEncodingConfig -> JspbEncodingConfig
323+mergeJspbEncodingConfig (JspbEncodingConfig l) (JspbEncodingConfig r) = JspbEncodingConfig
324+ { use_jspb_array_any_format: Prelude.alt l.use_jspb_array_any_format r.use_jspb_array_any_format
325+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
326+ }
327+
328+
329+-- | Enum generated by __protobuf__ from `conformance.WireFormat`
330+data WireFormat
331+ = WireFormat_UNSPECIFIED
332+ | WireFormat_PROTOBUF
333+ | WireFormat_JSON
334+ | WireFormat_JSPB
335+ | WireFormat_TEXT_FORMAT
336+derive instance genericWireFormat :: Prelude.Generic WireFormat _
337+derive instance eqWireFormat :: Prelude.Eq WireFormat
338+instance showWireFormat :: Prelude.Show WireFormat where show = Prelude.genericShow
339+instance ordWireFormat :: Prelude.Ord WireFormat where compare = Prelude.genericCompare
340+instance boundedWireFormat :: Prelude.Bounded WireFormat
341+ where
342+ bottom = Prelude.genericBottom
343+ top = Prelude.genericTop
344+instance enumWireFormat :: Prelude.Enum WireFormat
345+ where
346+ succ = Prelude.genericSucc
347+ pred = Prelude.genericPred
348+instance boundedenumWireFormat :: Prelude.BoundedEnum WireFormat
349+ where
350+ cardinality = Prelude.genericCardinality
351+ toEnum (0) = Prelude.Just WireFormat_UNSPECIFIED
352+ toEnum (1) = Prelude.Just WireFormat_PROTOBUF
353+ toEnum (2) = Prelude.Just WireFormat_JSON
354+ toEnum (3) = Prelude.Just WireFormat_JSPB
355+ toEnum (4) = Prelude.Just WireFormat_TEXT_FORMAT
356+ toEnum _ = Prelude.Nothing
357+ fromEnum WireFormat_UNSPECIFIED = (0)
358+ fromEnum WireFormat_PROTOBUF = (1)
359+ fromEnum WireFormat_JSON = (2)
360+ fromEnum WireFormat_JSPB = (3)
361+ fromEnum WireFormat_TEXT_FORMAT = (4)
362+instance defaultWireFormat :: Prelude.Default WireFormat
363+ where
364+ default = WireFormat_UNSPECIFIED
365+ isDefault = eq WireFormat_UNSPECIFIED
366+
367+-- | Enum generated by __protobuf__ from `conformance.TestCategory`
368+data TestCategory
369+ = TestCategory_UNSPECIFIED_TEST
370+ | TestCategory_BINARY_TEST
371+ | TestCategory_JSON_TEST
372+ | TestCategory_JSON_IGNORE_UNKNOWN_PARSING_TEST
373+ | TestCategory_JSPB_TEST
374+ | TestCategory_TEXT_FORMAT_TEST
375+derive instance genericTestCategory :: Prelude.Generic TestCategory _
376+derive instance eqTestCategory :: Prelude.Eq TestCategory
377+instance showTestCategory :: Prelude.Show TestCategory where show = Prelude.genericShow
378+instance ordTestCategory :: Prelude.Ord TestCategory where compare = Prelude.genericCompare
379+instance boundedTestCategory :: Prelude.Bounded TestCategory
380+ where
381+ bottom = Prelude.genericBottom
382+ top = Prelude.genericTop
383+instance enumTestCategory :: Prelude.Enum TestCategory
384+ where
385+ succ = Prelude.genericSucc
386+ pred = Prelude.genericPred
387+instance boundedenumTestCategory :: Prelude.BoundedEnum TestCategory
388+ where
389+ cardinality = Prelude.genericCardinality
390+ toEnum (0) = Prelude.Just TestCategory_UNSPECIFIED_TEST
391+ toEnum (1) = Prelude.Just TestCategory_BINARY_TEST
392+ toEnum (2) = Prelude.Just TestCategory_JSON_TEST
393+ toEnum (3) = Prelude.Just TestCategory_JSON_IGNORE_UNKNOWN_PARSING_TEST
394+ toEnum (4) = Prelude.Just TestCategory_JSPB_TEST
395+ toEnum (5) = Prelude.Just TestCategory_TEXT_FORMAT_TEST
396+ toEnum _ = Prelude.Nothing
397+ fromEnum TestCategory_UNSPECIFIED_TEST = (0)
398+ fromEnum TestCategory_BINARY_TEST = (1)
399+ fromEnum TestCategory_JSON_TEST = (2)
400+ fromEnum TestCategory_JSON_IGNORE_UNKNOWN_PARSING_TEST = (3)
401+ fromEnum TestCategory_JSPB_TEST = (4)
402+ fromEnum TestCategory_TEXT_FORMAT_TEST = (5)
403+instance defaultTestCategory :: Prelude.Default TestCategory
404+ where
405+ default = TestCategory_UNSPECIFIED_TEST
406+ isDefault = eq TestCategory_UNSPECIFIED_TEST
407+
conformance/src/generated/duration.Google.Protobuf.pursnew file+124
@@ -0,0 +1,124 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/duration.proto`
2+module Google.Protobuf.Duration
3+( Duration(..), DurationRow, DurationR, parseDuration, putDuration, defaultDuration, mkDuration, mergeDuration
4+)
5+where
6+import Protobuf.Internal.Prelude
7+import Protobuf.Internal.Prelude as Prelude
8+
9+
10+
11+
12+-- | Message generated by __protobuf__ from `google.protobuf.Duration`
13+-- |
14+-- | A Duration represents a signed, fixed-length span of time represented
15+-- | as a count of seconds and fractions of seconds at nanosecond
16+-- | resolution. It is independent of any calendar and concepts like "day"
17+-- | or "month". It is related to Timestamp in that the difference between
18+-- | two Timestamp values is a Duration and it can be added or subtracted
19+-- | from a Timestamp. Range is approximately +-10,000 years.
20+-- |
21+-- | # Examples
22+-- |
23+-- | Example 1: Compute Duration from two Timestamps in pseudo code.
24+-- |
25+-- | Timestamp start = ...;
26+-- | Timestamp end = ...;
27+-- | Duration duration = ...;
28+-- |
29+-- | duration.seconds = end.seconds - start.seconds;
30+-- | duration.nanos = end.nanos - start.nanos;
31+-- |
32+-- | if (duration.seconds < 0 && duration.nanos > 0) {
33+-- | duration.seconds += 1;
34+-- | duration.nanos -= 1000000000;
35+-- | } else if (duration.seconds > 0 && duration.nanos < 0) {
36+-- | duration.seconds -= 1;
37+-- | duration.nanos += 1000000000;
38+-- | }
39+-- |
40+-- | Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
41+-- |
42+-- | Timestamp start = ...;
43+-- | Duration duration = ...;
44+-- | Timestamp end = ...;
45+-- |
46+-- | end.seconds = start.seconds + duration.seconds;
47+-- | end.nanos = start.nanos + duration.nanos;
48+-- |
49+-- | if (end.nanos < 0) {
50+-- | end.seconds -= 1;
51+-- | end.nanos += 1000000000;
52+-- | } else if (end.nanos >= 1000000000) {
53+-- | end.seconds += 1;
54+-- | end.nanos -= 1000000000;
55+-- | }
56+-- |
57+-- | Example 3: Compute Duration from datetime.timedelta in Python.
58+-- |
59+-- | td = datetime.timedelta(days=3, minutes=10)
60+-- | duration = Duration()
61+-- | duration.FromTimedelta(td)
62+-- |
63+-- | # JSON Mapping
64+-- |
65+-- | In JSON format, the Duration type is encoded as a string rather than an
66+-- | object, where the string ends in the suffix "s" (indicating seconds) and
67+-- | is preceded by the number of seconds, with nanoseconds expressed as
68+-- | fractional seconds. For example, 3 seconds with 0 nanoseconds should be
69+-- | encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
70+-- | be expressed in JSON format as "3.000000001s", and 3 seconds and 1
71+-- | microsecond should be expressed in JSON format as "3.000001s".
72+-- |
73+newtype Duration = Duration DurationR
74+type DurationRow =
75+ ( seconds :: Prelude.Maybe Prelude.Int64
76+ , nanos :: Prelude.Maybe Int
77+ , __unknown_fields :: Array Prelude.UnknownField
78+ )
79+type DurationR = Record DurationRow
80+derive instance genericDuration :: Prelude.Generic Duration _
81+derive instance newtypeDuration :: Prelude.Newtype Duration _
82+derive instance eqDuration :: Prelude.Eq Duration
83+instance showDuration :: Prelude.Show Duration where show x = Prelude.genericShow x
84+
85+putDuration :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Duration -> Prelude.PutM m Prelude.Unit
86+putDuration (Duration r) = do
87+ Prelude.putOptional 1 r.seconds Prelude.isDefault Prelude.encodeInt64Field
88+ Prelude.putOptional 2 r.nanos Prelude.isDefault Prelude.encodeInt32Field
89+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
90+
91+parseDuration :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Duration
92+parseDuration length = Prelude.label "Duration / " $
93+ Prelude.parseMessage Duration defaultDuration parseField length
94+ where
95+ parseField
96+ :: Prelude.FieldNumberInt
97+ -> Prelude.WireType
98+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder DurationR DurationR)
99+ parseField 1 Prelude.VarInt = Prelude.label "seconds / " $ do
100+ x <- Prelude.decodeInt64
101+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "seconds") $ \_ -> Prelude.Just x
102+ parseField 2 Prelude.VarInt = Prelude.label "nanos / " $ do
103+ x <- Prelude.decodeInt32
104+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "nanos") $ \_ -> Prelude.Just x
105+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
106+
107+defaultDuration :: DurationR
108+defaultDuration =
109+ { seconds: Prelude.Nothing
110+ , nanos: Prelude.Nothing
111+ , __unknown_fields: []
112+ }
113+
114+mkDuration :: forall r1 r3. Prelude.Union r1 DurationRow r3 => Prelude.Nub r3 DurationRow => Record r1 -> Duration
115+mkDuration r = Duration $ Prelude.merge r defaultDuration
116+
117+mergeDuration :: Duration -> Duration -> Duration
118+mergeDuration (Duration l) (Duration r) = Duration
119+ { seconds: Prelude.alt l.seconds r.seconds
120+ , nanos: Prelude.alt l.nanos r.nanos
121+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
122+ }
123+
124+
conformance/src/generated/field_mask.Google.Protobuf.pursnew file+257
@@ -0,0 +1,257 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/field_mask.proto`
2+module Google.Protobuf.FieldMask
3+( FieldMask(..), FieldMaskRow, FieldMaskR, parseFieldMask, putFieldMask, defaultFieldMask, mkFieldMask, mergeFieldMask
4+)
5+where
6+import Protobuf.Internal.Prelude
7+import Protobuf.Internal.Prelude as Prelude
8+
9+
10+
11+
12+-- | Message generated by __protobuf__ from `google.protobuf.FieldMask`
13+-- |
14+-- | `FieldMask` represents a set of symbolic field paths, for example:
15+-- |
16+-- | paths: "f.a"
17+-- | paths: "f.b.d"
18+-- |
19+-- | Here `f` represents a field in some root message, `a` and `b`
20+-- | fields in the message found in `f`, and `d` a field found in the
21+-- | message in `f.b`.
22+-- |
23+-- | Field masks are used to specify a subset of fields that should be
24+-- | returned by a get operation or modified by an update operation.
25+-- | Field masks also have a custom JSON encoding (see below).
26+-- |
27+-- | # Field Masks in Projections
28+-- |
29+-- | When used in the context of a projection, a response message or
30+-- | sub-message is filtered by the API to only contain those fields as
31+-- | specified in the mask. For example, if the mask in the previous
32+-- | example is applied to a response message as follows:
33+-- |
34+-- | f {
35+-- | a : 22
36+-- | b {
37+-- | d : 1
38+-- | x : 2
39+-- | }
40+-- | y : 13
41+-- | }
42+-- | z: 8
43+-- |
44+-- | The result will not contain specific values for fields x,y and z
45+-- | (their value will be set to the default, and omitted in proto text
46+-- | output):
47+-- |
48+-- |
49+-- | f {
50+-- | a : 22
51+-- | b {
52+-- | d : 1
53+-- | }
54+-- | }
55+-- |
56+-- | A repeated field is not allowed except at the last position of a
57+-- | paths string.
58+-- |
59+-- | If a FieldMask object is not present in a get operation, the
60+-- | operation applies to all fields (as if a FieldMask of all fields
61+-- | had been specified).
62+-- |
63+-- | Note that a field mask does not necessarily apply to the
64+-- | top-level response message. In case of a REST get operation, the
65+-- | field mask applies directly to the response, but in case of a REST
66+-- | list operation, the mask instead applies to each individual message
67+-- | in the returned resource list. In case of a REST custom method,
68+-- | other definitions may be used. Where the mask applies will be
69+-- | clearly documented together with its declaration in the API. In
70+-- | any case, the effect on the returned resource/resources is required
71+-- | behavior for APIs.
72+-- |
73+-- | # Field Masks in Update Operations
74+-- |
75+-- | A field mask in update operations specifies which fields of the
76+-- | targeted resource are going to be updated. The API is required
77+-- | to only change the values of the fields as specified in the mask
78+-- | and leave the others untouched. If a resource is passed in to
79+-- | describe the updated values, the API ignores the values of all
80+-- | fields not covered by the mask.
81+-- |
82+-- | If a repeated field is specified for an update operation, new values will
83+-- | be appended to the existing repeated field in the target resource. Note that
84+-- | a repeated field is only allowed in the last position of a `paths` string.
85+-- |
86+-- | If a sub-message is specified in the last position of the field mask for an
87+-- | update operation, then new value will be merged into the existing sub-message
88+-- | in the target resource.
89+-- |
90+-- | For example, given the target message:
91+-- |
92+-- | f {
93+-- | b {
94+-- | d: 1
95+-- | x: 2
96+-- | }
97+-- | c: [1]
98+-- | }
99+-- |
100+-- | And an update message:
101+-- |
102+-- | f {
103+-- | b {
104+-- | d: 10
105+-- | }
106+-- | c: [2]
107+-- | }
108+-- |
109+-- | then if the field mask is:
110+-- |
111+-- | paths: ["f.b", "f.c"]
112+-- |
113+-- | then the result will be:
114+-- |
115+-- | f {
116+-- | b {
117+-- | d: 10
118+-- | x: 2
119+-- | }
120+-- | c: [1, 2]
121+-- | }
122+-- |
123+-- | An implementation may provide options to override this default behavior for
124+-- | repeated and message fields.
125+-- |
126+-- | In order to reset a field's value to the default, the field must
127+-- | be in the mask and set to the default value in the provided resource.
128+-- | Hence, in order to reset all fields of a resource, provide a default
129+-- | instance of the resource and set all fields in the mask, or do
130+-- | not provide a mask as described below.
131+-- |
132+-- | If a field mask is not present on update, the operation applies to
133+-- | all fields (as if a field mask of all fields has been specified).
134+-- | Note that in the presence of schema evolution, this may mean that
135+-- | fields the client does not know and has therefore not filled into
136+-- | the request will be reset to their default. If this is unwanted
137+-- | behavior, a specific service may require a client to always specify
138+-- | a field mask, producing an error if not.
139+-- |
140+-- | As with get operations, the location of the resource which
141+-- | describes the updated values in the request message depends on the
142+-- | operation kind. In any case, the effect of the field mask is
143+-- | required to be honored by the API.
144+-- |
145+-- | ## Considerations for HTTP REST
146+-- |
147+-- | The HTTP kind of an update operation which uses a field mask must
148+-- | be set to PATCH instead of PUT in order to satisfy HTTP semantics
149+-- | (PUT must only be used for full updates).
150+-- |
151+-- | # JSON Encoding of Field Masks
152+-- |
153+-- | In JSON, a field mask is encoded as a single string where paths are
154+-- | separated by a comma. Fields name in each path are converted
155+-- | to/from lower-camel naming conventions.
156+-- |
157+-- | As an example, consider the following message declarations:
158+-- |
159+-- | message Profile {
160+-- | User user = 1;
161+-- | Photo photo = 2;
162+-- | }
163+-- | message User {
164+-- | string display_name = 1;
165+-- | string address = 2;
166+-- | }
167+-- |
168+-- | In proto a field mask for `Profile` may look as such:
169+-- |
170+-- | mask {
171+-- | paths: "user.display_name"
172+-- | paths: "photo"
173+-- | }
174+-- |
175+-- | In JSON, the same mask is represented as below:
176+-- |
177+-- | {
178+-- | mask: "user.displayName,photo"
179+-- | }
180+-- |
181+-- | # Field Masks and Oneof Fields
182+-- |
183+-- | Field masks treat fields in oneofs just as regular fields. Consider the
184+-- | following message:
185+-- |
186+-- | message SampleMessage {
187+-- | oneof test_oneof {
188+-- | string name = 4;
189+-- | SubMessage sub_message = 9;
190+-- | }
191+-- | }
192+-- |
193+-- | The field mask can be:
194+-- |
195+-- | mask {
196+-- | paths: "name"
197+-- | }
198+-- |
199+-- | Or:
200+-- |
201+-- | mask {
202+-- | paths: "sub_message"
203+-- | }
204+-- |
205+-- | Note that oneof type names ("test_oneof" in this case) cannot be used in
206+-- | paths.
207+-- |
208+-- | ## Field Mask Verification
209+-- |
210+-- | The implementation of any API method which has a FieldMask type field in the
211+-- | request should verify the included field paths, and return an
212+-- | `INVALID_ARGUMENT` error if any path is unmappable.
213+newtype FieldMask = FieldMask FieldMaskR
214+type FieldMaskRow =
215+ ( paths :: Array String
216+ , __unknown_fields :: Array Prelude.UnknownField
217+ )
218+type FieldMaskR = Record FieldMaskRow
219+derive instance genericFieldMask :: Prelude.Generic FieldMask _
220+derive instance newtypeFieldMask :: Prelude.Newtype FieldMask _
221+derive instance eqFieldMask :: Prelude.Eq FieldMask
222+instance showFieldMask :: Prelude.Show FieldMask where show x = Prelude.genericShow x
223+
224+putFieldMask :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => FieldMask -> Prelude.PutM m Prelude.Unit
225+putFieldMask (FieldMask r) = do
226+ Prelude.putRepeated 1 r.paths Prelude.encodeStringField
227+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
228+
229+parseFieldMask :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m FieldMask
230+parseFieldMask length = Prelude.label "FieldMask / " $
231+ Prelude.parseMessage FieldMask defaultFieldMask parseField length
232+ where
233+ parseField
234+ :: Prelude.FieldNumberInt
235+ -> Prelude.WireType
236+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder FieldMaskR FieldMaskR)
237+ parseField 1 Prelude.LenDel = Prelude.label "paths / " $ do
238+ x <- Prelude.decodeString
239+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "paths") $ Prelude.flip Prelude.snoc x
240+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
241+
242+defaultFieldMask :: FieldMaskR
243+defaultFieldMask =
244+ { paths: []
245+ , __unknown_fields: []
246+ }
247+
248+mkFieldMask :: forall r1 r3. Prelude.Union r1 FieldMaskRow r3 => Prelude.Nub r3 FieldMaskRow => Record r1 -> FieldMask
249+mkFieldMask r = FieldMask $ Prelude.merge r defaultFieldMask
250+
251+mergeFieldMask :: FieldMask -> FieldMask -> FieldMask
252+mergeFieldMask (FieldMask l) (FieldMask r) = FieldMask
253+ { paths: r.paths <> l.paths
254+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
255+ }
256+
257+
conformance/src/generated/struct.Google.Protobuf.pursnew file+296
@@ -0,0 +1,296 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/struct.proto`
2+module Google.Protobuf.Struct
3+( Struct(..), StructRow, StructR, parseStruct, putStruct, defaultStruct, mkStruct, mergeStruct
4+, Struct_FieldsEntry(..), Struct_FieldsEntryRow, Struct_FieldsEntryR, parseStruct_FieldsEntry, putStruct_FieldsEntry, defaultStruct_FieldsEntry, mkStruct_FieldsEntry, mergeStruct_FieldsEntry
5+, Value(..), ValueRow, ValueR, parseValue, putValue, defaultValue, mkValue, mergeValue, Value_Kind(..)
6+, ListValue(..), ListValueRow, ListValueR, parseListValue, putListValue, defaultListValue, mkListValue, mergeListValue
7+, NullValue(..)
8+)
9+where
10+import Protobuf.Internal.Prelude
11+import Protobuf.Internal.Prelude as Prelude
12+
13+
14+
15+
16+-- | Message generated by __protobuf__ from `google.protobuf.Struct`
17+-- |
18+-- | `Struct` represents a structured data value, consisting of fields
19+-- | which map to dynamically typed values. In some languages, `Struct`
20+-- | might be supported by a native representation. For example, in
21+-- | scripting languages like JS a struct is represented as an
22+-- | object. The details of that representation are described together
23+-- | with the proto support for the language.
24+-- |
25+-- | The JSON representation for `Struct` is JSON object.
26+newtype Struct = Struct StructR
27+type StructRow =
28+ ( fields :: Array Struct_FieldsEntry
29+ , __unknown_fields :: Array Prelude.UnknownField
30+ )
31+type StructR = Record StructRow
32+derive instance genericStruct :: Prelude.Generic Struct _
33+derive instance newtypeStruct :: Prelude.Newtype Struct _
34+derive instance eqStruct :: Prelude.Eq Struct
35+instance showStruct :: Prelude.Show Struct where show x = Prelude.genericShow x
36+
37+putStruct :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Struct -> Prelude.PutM m Prelude.Unit
38+putStruct (Struct r) = do
39+ Prelude.putRepeated 1 r.fields $ Prelude.putLenDel putStruct_FieldsEntry
40+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
41+
42+parseStruct :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Struct
43+parseStruct length = Prelude.label "Struct / " $
44+ Prelude.parseMessage Struct defaultStruct parseField length
45+ where
46+ parseField
47+ :: Prelude.FieldNumberInt
48+ -> Prelude.WireType
49+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder StructR StructR)
50+ parseField 1 Prelude.LenDel = Prelude.label "fields / " $ do
51+ x <- Prelude.parseLenDel parseStruct_FieldsEntry
52+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fields") $ Prelude.flip Prelude.snoc x
53+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
54+
55+defaultStruct :: StructR
56+defaultStruct =
57+ { fields: []
58+ , __unknown_fields: []
59+ }
60+
61+mkStruct :: forall r1 r3. Prelude.Union r1 StructRow r3 => Prelude.Nub r3 StructRow => Record r1 -> Struct
62+mkStruct r = Struct $ Prelude.merge r defaultStruct
63+
64+mergeStruct :: Struct -> Struct -> Struct
65+mergeStruct (Struct l) (Struct r) = Struct
66+ { fields: r.fields <> l.fields
67+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
68+ }
69+
70+
71+-- | Message generated by __protobuf__ from `google.protobuf.Struct.FieldsEntry`
72+newtype Struct_FieldsEntry = Struct_FieldsEntry Struct_FieldsEntryR
73+type Struct_FieldsEntryRow =
74+ ( key :: Prelude.Maybe String
75+ , value :: Prelude.Maybe Value
76+ , __unknown_fields :: Array Prelude.UnknownField
77+ )
78+type Struct_FieldsEntryR = Record Struct_FieldsEntryRow
79+derive instance genericStruct_FieldsEntry :: Prelude.Generic Struct_FieldsEntry _
80+derive instance newtypeStruct_FieldsEntry :: Prelude.Newtype Struct_FieldsEntry _
81+derive instance eqStruct_FieldsEntry :: Prelude.Eq Struct_FieldsEntry
82+instance showStruct_FieldsEntry :: Prelude.Show Struct_FieldsEntry where show x = Prelude.genericShow x
83+
84+putStruct_FieldsEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Struct_FieldsEntry -> Prelude.PutM m Prelude.Unit
85+putStruct_FieldsEntry (Struct_FieldsEntry r) = do
86+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
87+ Prelude.putOptional 2 r.value (\_ -> false) $ Prelude.putLenDel putValue
88+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
89+
90+parseStruct_FieldsEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Struct_FieldsEntry
91+parseStruct_FieldsEntry length = Prelude.label "FieldsEntry / " $
92+ Prelude.parseMessage Struct_FieldsEntry defaultStruct_FieldsEntry parseField length
93+ where
94+ parseField
95+ :: Prelude.FieldNumberInt
96+ -> Prelude.WireType
97+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder Struct_FieldsEntryR Struct_FieldsEntryR)
98+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
99+ x <- Prelude.decodeString
100+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
101+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
102+ x <- Prelude.parseLenDel parseValue
103+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeValue x)
104+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
105+
106+defaultStruct_FieldsEntry :: Struct_FieldsEntryR
107+defaultStruct_FieldsEntry =
108+ { key: Prelude.Nothing
109+ , value: Prelude.Nothing
110+ , __unknown_fields: []
111+ }
112+
113+mkStruct_FieldsEntry :: forall r1 r3. Prelude.Union r1 Struct_FieldsEntryRow r3 => Prelude.Nub r3 Struct_FieldsEntryRow => Record r1 -> Struct_FieldsEntry
114+mkStruct_FieldsEntry r = Struct_FieldsEntry $ Prelude.merge r defaultStruct_FieldsEntry
115+
116+mergeStruct_FieldsEntry :: Struct_FieldsEntry -> Struct_FieldsEntry -> Struct_FieldsEntry
117+mergeStruct_FieldsEntry (Struct_FieldsEntry l) (Struct_FieldsEntry r) = Struct_FieldsEntry
118+ { key: Prelude.alt l.key r.key
119+ , value: Prelude.mergeWith mergeValue l.value r.value
120+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
121+ }
122+
123+
124+-- | Message generated by __protobuf__ from `google.protobuf.Value`
125+-- |
126+-- | `Value` represents a dynamically typed value which can be either
127+-- | null, a number, a string, a boolean, a recursive struct value, or a
128+-- | list of values. A producer of value is expected to set one of these
129+-- | variants. Absence of any variant indicates an error.
130+-- |
131+-- | The JSON representation for `Value` is JSON value.
132+newtype Value = Value ValueR
133+type ValueRow =
134+ ( kind :: Prelude.Maybe Value_Kind
135+ , __unknown_fields :: Array Prelude.UnknownField
136+ )
137+type ValueR = Record ValueRow
138+derive instance genericValue :: Prelude.Generic Value _
139+derive instance newtypeValue :: Prelude.Newtype Value _
140+derive instance eqValue :: Prelude.Eq Value
141+instance showValue :: Prelude.Show Value where show x = Prelude.genericShow x
142+
143+putValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Value -> Prelude.PutM m Prelude.Unit
144+putValue (Value r) = do
145+ case r.kind of
146+ Prelude.Nothing -> pure Prelude.unit
147+ Prelude.Just (Value_Kind_Null_value x) -> Prelude.putOptional 1 (Prelude.Just x) (\_ -> false) Prelude.putEnumField
148+ Prelude.Just (Value_Kind_Number_value x) -> Prelude.putOptional 2 (Prelude.Just x) (\_ -> false) Prelude.encodeDoubleField
149+ Prelude.Just (Value_Kind_String_value x) -> Prelude.putOptional 3 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
150+ Prelude.Just (Value_Kind_Bool_value x) -> Prelude.putOptional 4 (Prelude.Just x) (\_ -> false) Prelude.encodeBoolField
151+ Prelude.Just (Value_Kind_Struct_value x) -> Prelude.putOptional 5 (Prelude.Just x) (\_ -> false) $ Prelude.putLenDel putStruct
152+ Prelude.Just (Value_Kind_List_value x) -> Prelude.putOptional 6 (Prelude.Just x) (\_ -> false) $ Prelude.putLenDel putListValue
153+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
154+
155+parseValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Value
156+parseValue length = Prelude.label "Value / " $
157+ Prelude.parseMessage Value defaultValue parseField length
158+ where
159+ parseField
160+ :: Prelude.FieldNumberInt
161+ -> Prelude.WireType
162+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder ValueR ValueR)
163+ parseField 1 Prelude.VarInt = Prelude.label "null_value / " $ do
164+ x <- Prelude.parseEnum
165+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ \_ -> Prelude.Just (Value_Kind_Null_value x)
166+ parseField 2 Prelude.Bits64 = Prelude.label "number_value / " $ do
167+ x <- Prelude.decodeDouble
168+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ \_ -> Prelude.Just (Value_Kind_Number_value x)
169+ parseField 3 Prelude.LenDel = Prelude.label "string_value / " $ do
170+ x <- Prelude.decodeString
171+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ \_ -> Prelude.Just (Value_Kind_String_value x)
172+ parseField 4 Prelude.VarInt = Prelude.label "bool_value / " $ do
173+ x <- Prelude.decodeBool
174+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ \_ -> Prelude.Just (Value_Kind_Bool_value x)
175+ parseField 5 Prelude.LenDel = Prelude.label "struct_value / " $ do
176+ x <- Prelude.parseLenDel parseStruct
177+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ mergeValue_Kind (Prelude.Just (Value_Kind_Struct_value x))
178+ parseField 6 Prelude.LenDel = Prelude.label "list_value / " $ do
179+ x <- Prelude.parseLenDel parseListValue
180+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "kind") $ mergeValue_Kind (Prelude.Just (Value_Kind_List_value x))
181+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
182+
183+defaultValue :: ValueR
184+defaultValue =
185+ { kind: Prelude.Nothing
186+ , __unknown_fields: []
187+ }
188+
189+mkValue :: forall r1 r3. Prelude.Union r1 ValueRow r3 => Prelude.Nub r3 ValueRow => Record r1 -> Value
190+mkValue r = Value $ Prelude.merge r defaultValue
191+data Value_Kind
192+ = Value_Kind_Null_value NullValue
193+ | Value_Kind_Number_value Number
194+ | Value_Kind_String_value String
195+ | Value_Kind_Bool_value Boolean
196+ | Value_Kind_Struct_value Struct
197+ | Value_Kind_List_value ListValue
198+
199+derive instance genericValue_Kind :: Prelude.Generic Value_Kind _
200+derive instance eqValue_Kind :: Prelude.Eq Value_Kind
201+instance showValue_Kind :: Prelude.Show Value_Kind where show = Prelude.genericShow
202+
203+mergeValue_Kind :: Prelude.Maybe Value_Kind -> Prelude.Maybe Value_Kind -> Prelude.Maybe Value_Kind
204+mergeValue_Kind l r = case Prelude.Tuple l r of
205+ Prelude.Tuple (Prelude.Just (Value_Kind_Struct_value l')) (Prelude.Just (Value_Kind_Struct_value r')) -> Prelude.map Value_Kind_Struct_value $ Prelude.mergeWith mergeStruct (Prelude.Just l') (Prelude.Just r')
206+ Prelude.Tuple (Prelude.Just (Value_Kind_List_value l')) (Prelude.Just (Value_Kind_List_value r')) -> Prelude.map Value_Kind_List_value $ Prelude.mergeWith mergeListValue (Prelude.Just l') (Prelude.Just r')
207+ _ -> Prelude.alt l r
208+
209+mergeValue :: Value -> Value -> Value
210+mergeValue (Value l) (Value r) = Value
211+ { kind: mergeValue_Kind l.kind r.kind
212+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
213+ }
214+
215+
216+-- | Message generated by __protobuf__ from `google.protobuf.ListValue`
217+-- |
218+-- | `ListValue` is a wrapper around a repeated field of values.
219+-- |
220+-- | The JSON representation for `ListValue` is JSON array.
221+newtype ListValue = ListValue ListValueR
222+type ListValueRow =
223+ ( values :: Array Value
224+ , __unknown_fields :: Array Prelude.UnknownField
225+ )
226+type ListValueR = Record ListValueRow
227+derive instance genericListValue :: Prelude.Generic ListValue _
228+derive instance newtypeListValue :: Prelude.Newtype ListValue _
229+derive instance eqListValue :: Prelude.Eq ListValue
230+instance showListValue :: Prelude.Show ListValue where show x = Prelude.genericShow x
231+
232+putListValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => ListValue -> Prelude.PutM m Prelude.Unit
233+putListValue (ListValue r) = do
234+ Prelude.putRepeated 1 r.values $ Prelude.putLenDel putValue
235+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
236+
237+parseListValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m ListValue
238+parseListValue length = Prelude.label "ListValue / " $
239+ Prelude.parseMessage ListValue defaultListValue parseField length
240+ where
241+ parseField
242+ :: Prelude.FieldNumberInt
243+ -> Prelude.WireType
244+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder ListValueR ListValueR)
245+ parseField 1 Prelude.LenDel = Prelude.label "values / " $ do
246+ x <- Prelude.parseLenDel parseValue
247+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "values") $ Prelude.flip Prelude.snoc x
248+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
249+
250+defaultListValue :: ListValueR
251+defaultListValue =
252+ { values: []
253+ , __unknown_fields: []
254+ }
255+
256+mkListValue :: forall r1 r3. Prelude.Union r1 ListValueRow r3 => Prelude.Nub r3 ListValueRow => Record r1 -> ListValue
257+mkListValue r = ListValue $ Prelude.merge r defaultListValue
258+
259+mergeListValue :: ListValue -> ListValue -> ListValue
260+mergeListValue (ListValue l) (ListValue r) = ListValue
261+ { values: r.values <> l.values
262+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
263+ }
264+
265+
266+-- | Enum generated by __protobuf__ from `google.protobuf.NullValue`
267+-- |
268+-- | `NullValue` is a singleton enumeration to represent the null value for the
269+-- | `Value` type union.
270+-- |
271+-- | The JSON representation for `NullValue` is JSON `null`.
272+data NullValue
273+ = NullValue_NULL_VALUE
274+derive instance genericNullValue :: Prelude.Generic NullValue _
275+derive instance eqNullValue :: Prelude.Eq NullValue
276+instance showNullValue :: Prelude.Show NullValue where show = Prelude.genericShow
277+instance ordNullValue :: Prelude.Ord NullValue where compare = Prelude.genericCompare
278+instance boundedNullValue :: Prelude.Bounded NullValue
279+ where
280+ bottom = Prelude.genericBottom
281+ top = Prelude.genericTop
282+instance enumNullValue :: Prelude.Enum NullValue
283+ where
284+ succ = Prelude.genericSucc
285+ pred = Prelude.genericPred
286+instance boundedenumNullValue :: Prelude.BoundedEnum NullValue
287+ where
288+ cardinality = Prelude.genericCardinality
289+ toEnum (0) = Prelude.Just NullValue_NULL_VALUE
290+ toEnum _ = Prelude.Nothing
291+ fromEnum NullValue_NULL_VALUE = (0)
292+instance defaultNullValue :: Prelude.Default NullValue
293+ where
294+ default = NullValue_NULL_VALUE
295+ isDefault = eq NullValue_NULL_VALUE
296+
conformance/src/generated/test_messages_proto3.Protobuf_test_messages.Proto3.pursnew file+2597
@@ -0,0 +1,2597 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/test_messages_proto3.proto`
2+module ProtobufTestMessages.Proto3.TestMessagesProto3
3+( TestAllTypesProto3(..), TestAllTypesProto3Row, TestAllTypesProto3R, parseTestAllTypesProto3, putTestAllTypesProto3, defaultTestAllTypesProto3, mkTestAllTypesProto3, mergeTestAllTypesProto3, TestAllTypesProto3_Oneof_field(..)
4+, TestAllTypesProto3_NestedMessage(..), TestAllTypesProto3_NestedMessageRow, TestAllTypesProto3_NestedMessageR, parseTestAllTypesProto3_NestedMessage, putTestAllTypesProto3_NestedMessage, defaultTestAllTypesProto3_NestedMessage, mkTestAllTypesProto3_NestedMessage, mergeTestAllTypesProto3_NestedMessage
5+, TestAllTypesProto3_MapInt32Int32Entry(..), TestAllTypesProto3_MapInt32Int32EntryRow, TestAllTypesProto3_MapInt32Int32EntryR, parseTestAllTypesProto3_MapInt32Int32Entry, putTestAllTypesProto3_MapInt32Int32Entry, defaultTestAllTypesProto3_MapInt32Int32Entry, mkTestAllTypesProto3_MapInt32Int32Entry, mergeTestAllTypesProto3_MapInt32Int32Entry
6+, TestAllTypesProto3_MapInt64Int64Entry(..), TestAllTypesProto3_MapInt64Int64EntryRow, TestAllTypesProto3_MapInt64Int64EntryR, parseTestAllTypesProto3_MapInt64Int64Entry, putTestAllTypesProto3_MapInt64Int64Entry, defaultTestAllTypesProto3_MapInt64Int64Entry, mkTestAllTypesProto3_MapInt64Int64Entry, mergeTestAllTypesProto3_MapInt64Int64Entry
7+, TestAllTypesProto3_MapUint32Uint32Entry(..), TestAllTypesProto3_MapUint32Uint32EntryRow, TestAllTypesProto3_MapUint32Uint32EntryR, parseTestAllTypesProto3_MapUint32Uint32Entry, putTestAllTypesProto3_MapUint32Uint32Entry, defaultTestAllTypesProto3_MapUint32Uint32Entry, mkTestAllTypesProto3_MapUint32Uint32Entry, mergeTestAllTypesProto3_MapUint32Uint32Entry
8+, TestAllTypesProto3_MapUint64Uint64Entry(..), TestAllTypesProto3_MapUint64Uint64EntryRow, TestAllTypesProto3_MapUint64Uint64EntryR, parseTestAllTypesProto3_MapUint64Uint64Entry, putTestAllTypesProto3_MapUint64Uint64Entry, defaultTestAllTypesProto3_MapUint64Uint64Entry, mkTestAllTypesProto3_MapUint64Uint64Entry, mergeTestAllTypesProto3_MapUint64Uint64Entry
9+, TestAllTypesProto3_MapSint32Sint32Entry(..), TestAllTypesProto3_MapSint32Sint32EntryRow, TestAllTypesProto3_MapSint32Sint32EntryR, parseTestAllTypesProto3_MapSint32Sint32Entry, putTestAllTypesProto3_MapSint32Sint32Entry, defaultTestAllTypesProto3_MapSint32Sint32Entry, mkTestAllTypesProto3_MapSint32Sint32Entry, mergeTestAllTypesProto3_MapSint32Sint32Entry
10+, TestAllTypesProto3_MapSint64Sint64Entry(..), TestAllTypesProto3_MapSint64Sint64EntryRow, TestAllTypesProto3_MapSint64Sint64EntryR, parseTestAllTypesProto3_MapSint64Sint64Entry, putTestAllTypesProto3_MapSint64Sint64Entry, defaultTestAllTypesProto3_MapSint64Sint64Entry, mkTestAllTypesProto3_MapSint64Sint64Entry, mergeTestAllTypesProto3_MapSint64Sint64Entry
11+, TestAllTypesProto3_MapFixed32Fixed32Entry(..), TestAllTypesProto3_MapFixed32Fixed32EntryRow, TestAllTypesProto3_MapFixed32Fixed32EntryR, parseTestAllTypesProto3_MapFixed32Fixed32Entry, putTestAllTypesProto3_MapFixed32Fixed32Entry, defaultTestAllTypesProto3_MapFixed32Fixed32Entry, mkTestAllTypesProto3_MapFixed32Fixed32Entry, mergeTestAllTypesProto3_MapFixed32Fixed32Entry
12+, TestAllTypesProto3_MapFixed64Fixed64Entry(..), TestAllTypesProto3_MapFixed64Fixed64EntryRow, TestAllTypesProto3_MapFixed64Fixed64EntryR, parseTestAllTypesProto3_MapFixed64Fixed64Entry, putTestAllTypesProto3_MapFixed64Fixed64Entry, defaultTestAllTypesProto3_MapFixed64Fixed64Entry, mkTestAllTypesProto3_MapFixed64Fixed64Entry, mergeTestAllTypesProto3_MapFixed64Fixed64Entry
13+, TestAllTypesProto3_MapSfixed32Sfixed32Entry(..), TestAllTypesProto3_MapSfixed32Sfixed32EntryRow, TestAllTypesProto3_MapSfixed32Sfixed32EntryR, parseTestAllTypesProto3_MapSfixed32Sfixed32Entry, putTestAllTypesProto3_MapSfixed32Sfixed32Entry, defaultTestAllTypesProto3_MapSfixed32Sfixed32Entry, mkTestAllTypesProto3_MapSfixed32Sfixed32Entry, mergeTestAllTypesProto3_MapSfixed32Sfixed32Entry
14+, TestAllTypesProto3_MapSfixed64Sfixed64Entry(..), TestAllTypesProto3_MapSfixed64Sfixed64EntryRow, TestAllTypesProto3_MapSfixed64Sfixed64EntryR, parseTestAllTypesProto3_MapSfixed64Sfixed64Entry, putTestAllTypesProto3_MapSfixed64Sfixed64Entry, defaultTestAllTypesProto3_MapSfixed64Sfixed64Entry, mkTestAllTypesProto3_MapSfixed64Sfixed64Entry, mergeTestAllTypesProto3_MapSfixed64Sfixed64Entry
15+, TestAllTypesProto3_MapInt32FloatEntry(..), TestAllTypesProto3_MapInt32FloatEntryRow, TestAllTypesProto3_MapInt32FloatEntryR, parseTestAllTypesProto3_MapInt32FloatEntry, putTestAllTypesProto3_MapInt32FloatEntry, defaultTestAllTypesProto3_MapInt32FloatEntry, mkTestAllTypesProto3_MapInt32FloatEntry, mergeTestAllTypesProto3_MapInt32FloatEntry
16+, TestAllTypesProto3_MapInt32DoubleEntry(..), TestAllTypesProto3_MapInt32DoubleEntryRow, TestAllTypesProto3_MapInt32DoubleEntryR, parseTestAllTypesProto3_MapInt32DoubleEntry, putTestAllTypesProto3_MapInt32DoubleEntry, defaultTestAllTypesProto3_MapInt32DoubleEntry, mkTestAllTypesProto3_MapInt32DoubleEntry, mergeTestAllTypesProto3_MapInt32DoubleEntry
17+, TestAllTypesProto3_MapBoolBoolEntry(..), TestAllTypesProto3_MapBoolBoolEntryRow, TestAllTypesProto3_MapBoolBoolEntryR, parseTestAllTypesProto3_MapBoolBoolEntry, putTestAllTypesProto3_MapBoolBoolEntry, defaultTestAllTypesProto3_MapBoolBoolEntry, mkTestAllTypesProto3_MapBoolBoolEntry, mergeTestAllTypesProto3_MapBoolBoolEntry
18+, TestAllTypesProto3_MapStringStringEntry(..), TestAllTypesProto3_MapStringStringEntryRow, TestAllTypesProto3_MapStringStringEntryR, parseTestAllTypesProto3_MapStringStringEntry, putTestAllTypesProto3_MapStringStringEntry, defaultTestAllTypesProto3_MapStringStringEntry, mkTestAllTypesProto3_MapStringStringEntry, mergeTestAllTypesProto3_MapStringStringEntry
19+, TestAllTypesProto3_MapStringBytesEntry(..), TestAllTypesProto3_MapStringBytesEntryRow, TestAllTypesProto3_MapStringBytesEntryR, parseTestAllTypesProto3_MapStringBytesEntry, putTestAllTypesProto3_MapStringBytesEntry, defaultTestAllTypesProto3_MapStringBytesEntry, mkTestAllTypesProto3_MapStringBytesEntry, mergeTestAllTypesProto3_MapStringBytesEntry
20+, TestAllTypesProto3_MapStringNestedMessageEntry(..), TestAllTypesProto3_MapStringNestedMessageEntryRow, TestAllTypesProto3_MapStringNestedMessageEntryR, parseTestAllTypesProto3_MapStringNestedMessageEntry, putTestAllTypesProto3_MapStringNestedMessageEntry, defaultTestAllTypesProto3_MapStringNestedMessageEntry, mkTestAllTypesProto3_MapStringNestedMessageEntry, mergeTestAllTypesProto3_MapStringNestedMessageEntry
21+, TestAllTypesProto3_MapStringForeignMessageEntry(..), TestAllTypesProto3_MapStringForeignMessageEntryRow, TestAllTypesProto3_MapStringForeignMessageEntryR, parseTestAllTypesProto3_MapStringForeignMessageEntry, putTestAllTypesProto3_MapStringForeignMessageEntry, defaultTestAllTypesProto3_MapStringForeignMessageEntry, mkTestAllTypesProto3_MapStringForeignMessageEntry, mergeTestAllTypesProto3_MapStringForeignMessageEntry
22+, TestAllTypesProto3_MapStringNestedEnumEntry(..), TestAllTypesProto3_MapStringNestedEnumEntryRow, TestAllTypesProto3_MapStringNestedEnumEntryR, parseTestAllTypesProto3_MapStringNestedEnumEntry, putTestAllTypesProto3_MapStringNestedEnumEntry, defaultTestAllTypesProto3_MapStringNestedEnumEntry, mkTestAllTypesProto3_MapStringNestedEnumEntry, mergeTestAllTypesProto3_MapStringNestedEnumEntry
23+, TestAllTypesProto3_MapStringForeignEnumEntry(..), TestAllTypesProto3_MapStringForeignEnumEntryRow, TestAllTypesProto3_MapStringForeignEnumEntryR, parseTestAllTypesProto3_MapStringForeignEnumEntry, putTestAllTypesProto3_MapStringForeignEnumEntry, defaultTestAllTypesProto3_MapStringForeignEnumEntry, mkTestAllTypesProto3_MapStringForeignEnumEntry, mergeTestAllTypesProto3_MapStringForeignEnumEntry
24+, ForeignMessage(..), ForeignMessageRow, ForeignMessageR, parseForeignMessage, putForeignMessage, defaultForeignMessage, mkForeignMessage, mergeForeignMessage
25+, NullHypothesisProto3(..), NullHypothesisProto3Row, NullHypothesisProto3R, parseNullHypothesisProto3, putNullHypothesisProto3, defaultNullHypothesisProto3, mkNullHypothesisProto3, mergeNullHypothesisProto3
26+, EnumOnlyProto3(..), EnumOnlyProto3Row, EnumOnlyProto3R, parseEnumOnlyProto3, putEnumOnlyProto3, defaultEnumOnlyProto3, mkEnumOnlyProto3, mergeEnumOnlyProto3
27+, ForeignEnum(..)
28+, TestAllTypesProto3_NestedEnum(..)
29+, TestAllTypesProto3_AliasedEnum(..)
30+, EnumOnlyProto3_Bool(..)
31+)
32+where
33+import Protobuf.Internal.Prelude
34+import Protobuf.Internal.Prelude as Prelude
35+
36+import Google.Protobuf.Any as Google.Protobuf
37+import Google.Protobuf.Duration as Google.Protobuf
38+import Google.Protobuf.FieldMask as Google.Protobuf
39+import Google.Protobuf.Struct as Google.Protobuf
40+import Google.Protobuf.Timestamp as Google.Protobuf
41+import Google.Protobuf.Wrappers as Google.Protobuf
42+
43+
44+
45+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3`
46+-- |
47+-- | This proto includes every type of field in both singular and repeated
48+-- | forms.
49+-- |
50+-- | Also, crucially, all messages and enums in this file are eventually
51+-- | submessages of this message. So for example, a fuzz test of TestAllTypes
52+-- | could trigger bugs that occur in any message type in this file. We verify
53+-- | this stays true in a unit test.
54+newtype TestAllTypesProto3 = TestAllTypesProto3 TestAllTypesProto3R
55+type TestAllTypesProto3Row =
56+ ( optional_int32 :: Prelude.Maybe Int
57+ , optional_int64 :: Prelude.Maybe Prelude.Int64
58+ , optional_uint32 :: Prelude.Maybe Prelude.UInt
59+ , optional_uint64 :: Prelude.Maybe Prelude.UInt64
60+ , optional_sint32 :: Prelude.Maybe Int
61+ , optional_sint64 :: Prelude.Maybe Prelude.Int64
62+ , optional_fixed32 :: Prelude.Maybe Prelude.UInt
63+ , optional_fixed64 :: Prelude.Maybe Prelude.UInt64
64+ , optional_sfixed32 :: Prelude.Maybe Int
65+ , optional_sfixed64 :: Prelude.Maybe Prelude.Int64
66+ , optional_float :: Prelude.Maybe Prelude.Float32
67+ , optional_double :: Prelude.Maybe Number
68+ , optional_bool :: Prelude.Maybe Boolean
69+ , optional_string :: Prelude.Maybe String
70+ , optional_bytes :: Prelude.Maybe Prelude.Bytes
71+ , optional_nested_message :: Prelude.Maybe TestAllTypesProto3_NestedMessage
72+ , optional_foreign_message :: Prelude.Maybe ForeignMessage
73+ , optional_nested_enum :: Prelude.Maybe TestAllTypesProto3_NestedEnum
74+ , optional_foreign_enum :: Prelude.Maybe ForeignEnum
75+ , optional_aliased_enum :: Prelude.Maybe TestAllTypesProto3_AliasedEnum
76+ , optional_string_piece :: Prelude.Maybe String
77+ , optional_cord :: Prelude.Maybe String
78+ , recursive_message :: Prelude.Maybe TestAllTypesProto3
79+ , repeated_int32 :: Array Int
80+ , repeated_int64 :: Array Prelude.Int64
81+ , repeated_uint32 :: Array Prelude.UInt
82+ , repeated_uint64 :: Array Prelude.UInt64
83+ , repeated_sint32 :: Array Int
84+ , repeated_sint64 :: Array Prelude.Int64
85+ , repeated_fixed32 :: Array Prelude.UInt
86+ , repeated_fixed64 :: Array Prelude.UInt64
87+ , repeated_sfixed32 :: Array Int
88+ , repeated_sfixed64 :: Array Prelude.Int64
89+ , repeated_float :: Array Prelude.Float32
90+ , repeated_double :: Array Number
91+ , repeated_bool :: Array Boolean
92+ , repeated_string :: Array String
93+ , repeated_bytes :: Array Prelude.Bytes
94+ , repeated_nested_message :: Array TestAllTypesProto3_NestedMessage
95+ , repeated_foreign_message :: Array ForeignMessage
96+ , repeated_nested_enum :: Array TestAllTypesProto3_NestedEnum
97+ , repeated_foreign_enum :: Array ForeignEnum
98+ , repeated_string_piece :: Array String
99+ , repeated_cord :: Array String
100+ , packed_int32 :: Array Int
101+ , packed_int64 :: Array Prelude.Int64
102+ , packed_uint32 :: Array Prelude.UInt
103+ , packed_uint64 :: Array Prelude.UInt64
104+ , packed_sint32 :: Array Int
105+ , packed_sint64 :: Array Prelude.Int64
106+ , packed_fixed32 :: Array Prelude.UInt
107+ , packed_fixed64 :: Array Prelude.UInt64
108+ , packed_sfixed32 :: Array Int
109+ , packed_sfixed64 :: Array Prelude.Int64
110+ , packed_float :: Array Prelude.Float32
111+ , packed_double :: Array Number
112+ , packed_bool :: Array Boolean
113+ , packed_nested_enum :: Array TestAllTypesProto3_NestedEnum
114+ , unpacked_int32 :: Array Int
115+ , unpacked_int64 :: Array Prelude.Int64
116+ , unpacked_uint32 :: Array Prelude.UInt
117+ , unpacked_uint64 :: Array Prelude.UInt64
118+ , unpacked_sint32 :: Array Int
119+ , unpacked_sint64 :: Array Prelude.Int64
120+ , unpacked_fixed32 :: Array Prelude.UInt
121+ , unpacked_fixed64 :: Array Prelude.UInt64
122+ , unpacked_sfixed32 :: Array Int
123+ , unpacked_sfixed64 :: Array Prelude.Int64
124+ , unpacked_float :: Array Prelude.Float32
125+ , unpacked_double :: Array Number
126+ , unpacked_bool :: Array Boolean
127+ , unpacked_nested_enum :: Array TestAllTypesProto3_NestedEnum
128+ , map_int32_int32 :: Array TestAllTypesProto3_MapInt32Int32Entry
129+ , map_int64_int64 :: Array TestAllTypesProto3_MapInt64Int64Entry
130+ , map_uint32_uint32 :: Array TestAllTypesProto3_MapUint32Uint32Entry
131+ , map_uint64_uint64 :: Array TestAllTypesProto3_MapUint64Uint64Entry
132+ , map_sint32_sint32 :: Array TestAllTypesProto3_MapSint32Sint32Entry
133+ , map_sint64_sint64 :: Array TestAllTypesProto3_MapSint64Sint64Entry
134+ , map_fixed32_fixed32 :: Array TestAllTypesProto3_MapFixed32Fixed32Entry
135+ , map_fixed64_fixed64 :: Array TestAllTypesProto3_MapFixed64Fixed64Entry
136+ , map_sfixed32_sfixed32 :: Array TestAllTypesProto3_MapSfixed32Sfixed32Entry
137+ , map_sfixed64_sfixed64 :: Array TestAllTypesProto3_MapSfixed64Sfixed64Entry
138+ , map_int32_float :: Array TestAllTypesProto3_MapInt32FloatEntry
139+ , map_int32_double :: Array TestAllTypesProto3_MapInt32DoubleEntry
140+ , map_bool_bool :: Array TestAllTypesProto3_MapBoolBoolEntry
141+ , map_string_string :: Array TestAllTypesProto3_MapStringStringEntry
142+ , map_string_bytes :: Array TestAllTypesProto3_MapStringBytesEntry
143+ , map_string_nested_message :: Array TestAllTypesProto3_MapStringNestedMessageEntry
144+ , map_string_foreign_message :: Array TestAllTypesProto3_MapStringForeignMessageEntry
145+ , map_string_nested_enum :: Array TestAllTypesProto3_MapStringNestedEnumEntry
146+ , map_string_foreign_enum :: Array TestAllTypesProto3_MapStringForeignEnumEntry
147+ , optional_bool_wrapper :: Prelude.Maybe Google.Protobuf.BoolValue
148+ , optional_int32_wrapper :: Prelude.Maybe Google.Protobuf.Int32Value
149+ , optional_int64_wrapper :: Prelude.Maybe Google.Protobuf.Int64Value
150+ , optional_uint32_wrapper :: Prelude.Maybe Google.Protobuf.UInt32Value
151+ , optional_uint64_wrapper :: Prelude.Maybe Google.Protobuf.UInt64Value
152+ , optional_float_wrapper :: Prelude.Maybe Google.Protobuf.FloatValue
153+ , optional_double_wrapper :: Prelude.Maybe Google.Protobuf.DoubleValue
154+ , optional_string_wrapper :: Prelude.Maybe Google.Protobuf.StringValue
155+ , optional_bytes_wrapper :: Prelude.Maybe Google.Protobuf.BytesValue
156+ , repeated_bool_wrapper :: Array Google.Protobuf.BoolValue
157+ , repeated_int32_wrapper :: Array Google.Protobuf.Int32Value
158+ , repeated_int64_wrapper :: Array Google.Protobuf.Int64Value
159+ , repeated_uint32_wrapper :: Array Google.Protobuf.UInt32Value
160+ , repeated_uint64_wrapper :: Array Google.Protobuf.UInt64Value
161+ , repeated_float_wrapper :: Array Google.Protobuf.FloatValue
162+ , repeated_double_wrapper :: Array Google.Protobuf.DoubleValue
163+ , repeated_string_wrapper :: Array Google.Protobuf.StringValue
164+ , repeated_bytes_wrapper :: Array Google.Protobuf.BytesValue
165+ , optional_duration :: Prelude.Maybe Google.Protobuf.Duration
166+ , optional_timestamp :: Prelude.Maybe Google.Protobuf.Timestamp
167+ , optional_field_mask :: Prelude.Maybe Google.Protobuf.FieldMask
168+ , optional_struct :: Prelude.Maybe Google.Protobuf.Struct
169+ , optional_any :: Prelude.Maybe Google.Protobuf.Any
170+ , optional_value :: Prelude.Maybe Google.Protobuf.Value
171+ , optional_null_value :: Prelude.Maybe Google.Protobuf.NullValue
172+ , repeated_duration :: Array Google.Protobuf.Duration
173+ , repeated_timestamp :: Array Google.Protobuf.Timestamp
174+ , repeated_fieldmask :: Array Google.Protobuf.FieldMask
175+ , repeated_struct :: Array Google.Protobuf.Struct
176+ , repeated_any :: Array Google.Protobuf.Any
177+ , repeated_value :: Array Google.Protobuf.Value
178+ , repeated_list_value :: Array Google.Protobuf.ListValue
179+ , fieldname1 :: Prelude.Maybe Int
180+ , field_name2 :: Prelude.Maybe Int
181+ , _field_name3 :: Prelude.Maybe Int
182+ , field__name4_ :: Prelude.Maybe Int
183+ , field0name5 :: Prelude.Maybe Int
184+ , field_0_name6 :: Prelude.Maybe Int
185+ , fieldName7 :: Prelude.Maybe Int
186+ , fieldName8 :: Prelude.Maybe Int
187+ , field_Name9 :: Prelude.Maybe Int
188+ , field_Name10 :: Prelude.Maybe Int
189+ , fIELD_NAME11 :: Prelude.Maybe Int
190+ , fIELD_name12 :: Prelude.Maybe Int
191+ , __field_name13 :: Prelude.Maybe Int
192+ , __Field_name14 :: Prelude.Maybe Int
193+ , field__name15 :: Prelude.Maybe Int
194+ , field__Name16 :: Prelude.Maybe Int
195+ , field_name17__ :: Prelude.Maybe Int
196+ , field_name18__ :: Prelude.Maybe Int
197+ , oneof_field :: Prelude.Maybe TestAllTypesProto3_Oneof_field
198+ , __unknown_fields :: Array Prelude.UnknownField
199+ )
200+type TestAllTypesProto3R = Record TestAllTypesProto3Row
201+derive instance genericTestAllTypesProto3 :: Prelude.Generic TestAllTypesProto3 _
202+derive instance newtypeTestAllTypesProto3 :: Prelude.Newtype TestAllTypesProto3 _
203+derive instance eqTestAllTypesProto3 :: Prelude.Eq TestAllTypesProto3
204+instance showTestAllTypesProto3 :: Prelude.Show TestAllTypesProto3 where show x = Prelude.genericShow x
205+
206+putTestAllTypesProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3 -> Prelude.PutM m Prelude.Unit
207+putTestAllTypesProto3 (TestAllTypesProto3 r) = do
208+ Prelude.putOptional 1 r.optional_int32 Prelude.isDefault Prelude.encodeInt32Field
209+ Prelude.putOptional 2 r.optional_int64 Prelude.isDefault Prelude.encodeInt64Field
210+ Prelude.putOptional 3 r.optional_uint32 Prelude.isDefault Prelude.encodeUint32Field
211+ Prelude.putOptional 4 r.optional_uint64 Prelude.isDefault Prelude.encodeUint64Field
212+ Prelude.putOptional 5 r.optional_sint32 Prelude.isDefault Prelude.encodeSint32Field
213+ Prelude.putOptional 6 r.optional_sint64 Prelude.isDefault Prelude.encodeSint64Field
214+ Prelude.putOptional 7 r.optional_fixed32 Prelude.isDefault Prelude.encodeFixed32Field
215+ Prelude.putOptional 8 r.optional_fixed64 Prelude.isDefault Prelude.encodeFixed64Field
216+ Prelude.putOptional 9 r.optional_sfixed32 Prelude.isDefault Prelude.encodeSfixed32Field
217+ Prelude.putOptional 10 r.optional_sfixed64 Prelude.isDefault Prelude.encodeSfixed64Field
218+ Prelude.putOptional 11 r.optional_float Prelude.isDefault Prelude.encodeFloatField
219+ Prelude.putOptional 12 r.optional_double Prelude.isDefault Prelude.encodeDoubleField
220+ Prelude.putOptional 13 r.optional_bool Prelude.isDefault Prelude.encodeBoolField
221+ Prelude.putOptional 14 r.optional_string Prelude.isDefault Prelude.encodeStringField
222+ Prelude.putOptional 15 r.optional_bytes Prelude.isDefault Prelude.encodeBytesField
223+ Prelude.putOptional 18 r.optional_nested_message (\_ -> false) $ Prelude.putLenDel putTestAllTypesProto3_NestedMessage
224+ Prelude.putOptional 19 r.optional_foreign_message (\_ -> false) $ Prelude.putLenDel putForeignMessage
225+ Prelude.putOptional 21 r.optional_nested_enum Prelude.isDefault Prelude.putEnumField
226+ Prelude.putOptional 22 r.optional_foreign_enum Prelude.isDefault Prelude.putEnumField
227+ Prelude.putOptional 23 r.optional_aliased_enum Prelude.isDefault Prelude.putEnumField
228+ Prelude.putOptional 24 r.optional_string_piece Prelude.isDefault Prelude.encodeStringField
229+ Prelude.putOptional 25 r.optional_cord Prelude.isDefault Prelude.encodeStringField
230+ Prelude.putOptional 27 r.recursive_message (\_ -> false) $ Prelude.putLenDel putTestAllTypesProto3
231+ Prelude.putPacked 31 r.repeated_int32 Prelude.encodeInt32
232+ Prelude.putPacked 32 r.repeated_int64 Prelude.encodeInt64
233+ Prelude.putPacked 33 r.repeated_uint32 Prelude.encodeUint32
234+ Prelude.putPacked 34 r.repeated_uint64 Prelude.encodeUint64
235+ Prelude.putPacked 35 r.repeated_sint32 Prelude.encodeSint32
236+ Prelude.putPacked 36 r.repeated_sint64 Prelude.encodeSint64
237+ Prelude.putPacked 37 r.repeated_fixed32 Prelude.encodeFixed32
238+ Prelude.putPacked 38 r.repeated_fixed64 Prelude.encodeFixed64
239+ Prelude.putPacked 39 r.repeated_sfixed32 Prelude.encodeSfixed32
240+ Prelude.putPacked 40 r.repeated_sfixed64 Prelude.encodeSfixed64
241+ Prelude.putPacked 41 r.repeated_float Prelude.encodeFloat
242+ Prelude.putPacked 42 r.repeated_double Prelude.encodeDouble
243+ Prelude.putPacked 43 r.repeated_bool Prelude.encodeBool
244+ Prelude.putRepeated 44 r.repeated_string Prelude.encodeStringField
245+ Prelude.putRepeated 45 r.repeated_bytes $ Prelude.encodeBytesField
246+ Prelude.putRepeated 48 r.repeated_nested_message $ Prelude.putLenDel putTestAllTypesProto3_NestedMessage
247+ Prelude.putRepeated 49 r.repeated_foreign_message $ Prelude.putLenDel putForeignMessage
248+ Prelude.putPacked 51 r.repeated_nested_enum Prelude.putEnum
249+ Prelude.putPacked 52 r.repeated_foreign_enum Prelude.putEnum
250+ Prelude.putRepeated 54 r.repeated_string_piece Prelude.encodeStringField
251+ Prelude.putRepeated 55 r.repeated_cord Prelude.encodeStringField
252+ Prelude.putPacked 75 r.packed_int32 Prelude.encodeInt32
253+ Prelude.putPacked 76 r.packed_int64 Prelude.encodeInt64
254+ Prelude.putPacked 77 r.packed_uint32 Prelude.encodeUint32
255+ Prelude.putPacked 78 r.packed_uint64 Prelude.encodeUint64
256+ Prelude.putPacked 79 r.packed_sint32 Prelude.encodeSint32
257+ Prelude.putPacked 80 r.packed_sint64 Prelude.encodeSint64
258+ Prelude.putPacked 81 r.packed_fixed32 Prelude.encodeFixed32
259+ Prelude.putPacked 82 r.packed_fixed64 Prelude.encodeFixed64
260+ Prelude.putPacked 83 r.packed_sfixed32 Prelude.encodeSfixed32
261+ Prelude.putPacked 84 r.packed_sfixed64 Prelude.encodeSfixed64
262+ Prelude.putPacked 85 r.packed_float Prelude.encodeFloat
263+ Prelude.putPacked 86 r.packed_double Prelude.encodeDouble
264+ Prelude.putPacked 87 r.packed_bool Prelude.encodeBool
265+ Prelude.putPacked 88 r.packed_nested_enum Prelude.putEnum
266+ Prelude.putRepeated 89 r.unpacked_int32 Prelude.encodeInt32Field
267+ Prelude.putRepeated 90 r.unpacked_int64 Prelude.encodeInt64Field
268+ Prelude.putRepeated 91 r.unpacked_uint32 Prelude.encodeUint32Field
269+ Prelude.putRepeated 92 r.unpacked_uint64 Prelude.encodeUint64Field
270+ Prelude.putRepeated 93 r.unpacked_sint32 Prelude.encodeSint32Field
271+ Prelude.putRepeated 94 r.unpacked_sint64 Prelude.encodeSint64Field
272+ Prelude.putRepeated 95 r.unpacked_fixed32 Prelude.encodeFixed32Field
273+ Prelude.putRepeated 96 r.unpacked_fixed64 Prelude.encodeFixed64Field
274+ Prelude.putRepeated 97 r.unpacked_sfixed32 Prelude.encodeSfixed32Field
275+ Prelude.putRepeated 98 r.unpacked_sfixed64 Prelude.encodeSfixed64Field
276+ Prelude.putRepeated 99 r.unpacked_float Prelude.encodeFloatField
277+ Prelude.putRepeated 100 r.unpacked_double Prelude.encodeDoubleField
278+ Prelude.putRepeated 101 r.unpacked_bool Prelude.encodeBoolField
279+ Prelude.putRepeated 102 r.unpacked_nested_enum Prelude.putEnumField
280+ Prelude.putRepeated 56 r.map_int32_int32 $ Prelude.putLenDel putTestAllTypesProto3_MapInt32Int32Entry
281+ Prelude.putRepeated 57 r.map_int64_int64 $ Prelude.putLenDel putTestAllTypesProto3_MapInt64Int64Entry
282+ Prelude.putRepeated 58 r.map_uint32_uint32 $ Prelude.putLenDel putTestAllTypesProto3_MapUint32Uint32Entry
283+ Prelude.putRepeated 59 r.map_uint64_uint64 $ Prelude.putLenDel putTestAllTypesProto3_MapUint64Uint64Entry
284+ Prelude.putRepeated 60 r.map_sint32_sint32 $ Prelude.putLenDel putTestAllTypesProto3_MapSint32Sint32Entry
285+ Prelude.putRepeated 61 r.map_sint64_sint64 $ Prelude.putLenDel putTestAllTypesProto3_MapSint64Sint64Entry
286+ Prelude.putRepeated 62 r.map_fixed32_fixed32 $ Prelude.putLenDel putTestAllTypesProto3_MapFixed32Fixed32Entry
287+ Prelude.putRepeated 63 r.map_fixed64_fixed64 $ Prelude.putLenDel putTestAllTypesProto3_MapFixed64Fixed64Entry
288+ Prelude.putRepeated 64 r.map_sfixed32_sfixed32 $ Prelude.putLenDel putTestAllTypesProto3_MapSfixed32Sfixed32Entry
289+ Prelude.putRepeated 65 r.map_sfixed64_sfixed64 $ Prelude.putLenDel putTestAllTypesProto3_MapSfixed64Sfixed64Entry
290+ Prelude.putRepeated 66 r.map_int32_float $ Prelude.putLenDel putTestAllTypesProto3_MapInt32FloatEntry
291+ Prelude.putRepeated 67 r.map_int32_double $ Prelude.putLenDel putTestAllTypesProto3_MapInt32DoubleEntry
292+ Prelude.putRepeated 68 r.map_bool_bool $ Prelude.putLenDel putTestAllTypesProto3_MapBoolBoolEntry
293+ Prelude.putRepeated 69 r.map_string_string $ Prelude.putLenDel putTestAllTypesProto3_MapStringStringEntry
294+ Prelude.putRepeated 70 r.map_string_bytes $ Prelude.putLenDel putTestAllTypesProto3_MapStringBytesEntry
295+ Prelude.putRepeated 71 r.map_string_nested_message $ Prelude.putLenDel putTestAllTypesProto3_MapStringNestedMessageEntry
296+ Prelude.putRepeated 72 r.map_string_foreign_message $ Prelude.putLenDel putTestAllTypesProto3_MapStringForeignMessageEntry
297+ Prelude.putRepeated 73 r.map_string_nested_enum $ Prelude.putLenDel putTestAllTypesProto3_MapStringNestedEnumEntry
298+ Prelude.putRepeated 74 r.map_string_foreign_enum $ Prelude.putLenDel putTestAllTypesProto3_MapStringForeignEnumEntry
299+ Prelude.putOptional 201 r.optional_bool_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putBoolValue
300+ Prelude.putOptional 202 r.optional_int32_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putInt32Value
301+ Prelude.putOptional 203 r.optional_int64_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putInt64Value
302+ Prelude.putOptional 204 r.optional_uint32_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putUInt32Value
303+ Prelude.putOptional 205 r.optional_uint64_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putUInt64Value
304+ Prelude.putOptional 206 r.optional_float_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putFloatValue
305+ Prelude.putOptional 207 r.optional_double_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putDoubleValue
306+ Prelude.putOptional 208 r.optional_string_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putStringValue
307+ Prelude.putOptional 209 r.optional_bytes_wrapper (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putBytesValue
308+ Prelude.putRepeated 211 r.repeated_bool_wrapper $ Prelude.putLenDel Google.Protobuf.putBoolValue
309+ Prelude.putRepeated 212 r.repeated_int32_wrapper $ Prelude.putLenDel Google.Protobuf.putInt32Value
310+ Prelude.putRepeated 213 r.repeated_int64_wrapper $ Prelude.putLenDel Google.Protobuf.putInt64Value
311+ Prelude.putRepeated 214 r.repeated_uint32_wrapper $ Prelude.putLenDel Google.Protobuf.putUInt32Value
312+ Prelude.putRepeated 215 r.repeated_uint64_wrapper $ Prelude.putLenDel Google.Protobuf.putUInt64Value
313+ Prelude.putRepeated 216 r.repeated_float_wrapper $ Prelude.putLenDel Google.Protobuf.putFloatValue
314+ Prelude.putRepeated 217 r.repeated_double_wrapper $ Prelude.putLenDel Google.Protobuf.putDoubleValue
315+ Prelude.putRepeated 218 r.repeated_string_wrapper $ Prelude.putLenDel Google.Protobuf.putStringValue
316+ Prelude.putRepeated 219 r.repeated_bytes_wrapper $ Prelude.putLenDel Google.Protobuf.putBytesValue
317+ Prelude.putOptional 301 r.optional_duration (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putDuration
318+ Prelude.putOptional 302 r.optional_timestamp (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putTimestamp
319+ Prelude.putOptional 303 r.optional_field_mask (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putFieldMask
320+ Prelude.putOptional 304 r.optional_struct (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putStruct
321+ Prelude.putOptional 305 r.optional_any (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putAny
322+ Prelude.putOptional 306 r.optional_value (\_ -> false) $ Prelude.putLenDel Google.Protobuf.putValue
323+ Prelude.putOptional 307 r.optional_null_value Prelude.isDefault Prelude.putEnumField
324+ Prelude.putRepeated 311 r.repeated_duration $ Prelude.putLenDel Google.Protobuf.putDuration
325+ Prelude.putRepeated 312 r.repeated_timestamp $ Prelude.putLenDel Google.Protobuf.putTimestamp
326+ Prelude.putRepeated 313 r.repeated_fieldmask $ Prelude.putLenDel Google.Protobuf.putFieldMask
327+ Prelude.putRepeated 324 r.repeated_struct $ Prelude.putLenDel Google.Protobuf.putStruct
328+ Prelude.putRepeated 315 r.repeated_any $ Prelude.putLenDel Google.Protobuf.putAny
329+ Prelude.putRepeated 316 r.repeated_value $ Prelude.putLenDel Google.Protobuf.putValue
330+ Prelude.putRepeated 317 r.repeated_list_value $ Prelude.putLenDel Google.Protobuf.putListValue
331+ Prelude.putOptional 401 r.fieldname1 Prelude.isDefault Prelude.encodeInt32Field
332+ Prelude.putOptional 402 r.field_name2 Prelude.isDefault Prelude.encodeInt32Field
333+ Prelude.putOptional 403 r._field_name3 Prelude.isDefault Prelude.encodeInt32Field
334+ Prelude.putOptional 404 r.field__name4_ Prelude.isDefault Prelude.encodeInt32Field
335+ Prelude.putOptional 405 r.field0name5 Prelude.isDefault Prelude.encodeInt32Field
336+ Prelude.putOptional 406 r.field_0_name6 Prelude.isDefault Prelude.encodeInt32Field
337+ Prelude.putOptional 407 r.fieldName7 Prelude.isDefault Prelude.encodeInt32Field
338+ Prelude.putOptional 408 r.fieldName8 Prelude.isDefault Prelude.encodeInt32Field
339+ Prelude.putOptional 409 r.field_Name9 Prelude.isDefault Prelude.encodeInt32Field
340+ Prelude.putOptional 410 r.field_Name10 Prelude.isDefault Prelude.encodeInt32Field
341+ Prelude.putOptional 411 r.fIELD_NAME11 Prelude.isDefault Prelude.encodeInt32Field
342+ Prelude.putOptional 412 r.fIELD_name12 Prelude.isDefault Prelude.encodeInt32Field
343+ Prelude.putOptional 413 r.__field_name13 Prelude.isDefault Prelude.encodeInt32Field
344+ Prelude.putOptional 414 r.__Field_name14 Prelude.isDefault Prelude.encodeInt32Field
345+ Prelude.putOptional 415 r.field__name15 Prelude.isDefault Prelude.encodeInt32Field
346+ Prelude.putOptional 416 r.field__Name16 Prelude.isDefault Prelude.encodeInt32Field
347+ Prelude.putOptional 417 r.field_name17__ Prelude.isDefault Prelude.encodeInt32Field
348+ Prelude.putOptional 418 r.field_name18__ Prelude.isDefault Prelude.encodeInt32Field
349+ case r.oneof_field of
350+ Prelude.Nothing -> pure Prelude.unit
351+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_uint32 x) -> Prelude.putOptional 111 (Prelude.Just x) (\_ -> false) Prelude.encodeUint32Field
352+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_nested_message x) -> Prelude.putOptional 112 (Prelude.Just x) (\_ -> false) $ Prelude.putLenDel putTestAllTypesProto3_NestedMessage
353+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_string x) -> Prelude.putOptional 113 (Prelude.Just x) (\_ -> false) Prelude.encodeStringField
354+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_bytes x) -> Prelude.putOptional 114 (Prelude.Just x) (\_ -> false) Prelude.encodeBytesField
355+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_bool x) -> Prelude.putOptional 115 (Prelude.Just x) (\_ -> false) Prelude.encodeBoolField
356+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_uint64 x) -> Prelude.putOptional 116 (Prelude.Just x) (\_ -> false) Prelude.encodeUint64Field
357+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_float x) -> Prelude.putOptional 117 (Prelude.Just x) (\_ -> false) Prelude.encodeFloatField
358+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_double x) -> Prelude.putOptional 118 (Prelude.Just x) (\_ -> false) Prelude.encodeDoubleField
359+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_enum x) -> Prelude.putOptional 119 (Prelude.Just x) (\_ -> false) Prelude.putEnumField
360+ Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_null_value x) -> Prelude.putOptional 120 (Prelude.Just x) (\_ -> false) Prelude.putEnumField
361+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
362+
363+parseTestAllTypesProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3
364+parseTestAllTypesProto3 length = Prelude.label "TestAllTypesProto3 / " $
365+ Prelude.parseMessage TestAllTypesProto3 defaultTestAllTypesProto3 parseField length
366+ where
367+ parseField
368+ :: Prelude.FieldNumberInt
369+ -> Prelude.WireType
370+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3R TestAllTypesProto3R)
371+ parseField 1 Prelude.VarInt = Prelude.label "optional_int32 / " $ do
372+ x <- Prelude.decodeInt32
373+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_int32") $ \_ -> Prelude.Just x
374+ parseField 2 Prelude.VarInt = Prelude.label "optional_int64 / " $ do
375+ x <- Prelude.decodeInt64
376+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_int64") $ \_ -> Prelude.Just x
377+ parseField 3 Prelude.VarInt = Prelude.label "optional_uint32 / " $ do
378+ x <- Prelude.decodeUint32
379+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_uint32") $ \_ -> Prelude.Just x
380+ parseField 4 Prelude.VarInt = Prelude.label "optional_uint64 / " $ do
381+ x <- Prelude.decodeUint64
382+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_uint64") $ \_ -> Prelude.Just x
383+ parseField 5 Prelude.VarInt = Prelude.label "optional_sint32 / " $ do
384+ x <- Prelude.decodeSint32
385+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_sint32") $ \_ -> Prelude.Just x
386+ parseField 6 Prelude.VarInt = Prelude.label "optional_sint64 / " $ do
387+ x <- Prelude.decodeSint64
388+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_sint64") $ \_ -> Prelude.Just x
389+ parseField 7 Prelude.Bits32 = Prelude.label "optional_fixed32 / " $ do
390+ x <- Prelude.decodeFixed32
391+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_fixed32") $ \_ -> Prelude.Just x
392+ parseField 8 Prelude.Bits64 = Prelude.label "optional_fixed64 / " $ do
393+ x <- Prelude.decodeFixed64
394+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_fixed64") $ \_ -> Prelude.Just x
395+ parseField 9 Prelude.Bits32 = Prelude.label "optional_sfixed32 / " $ do
396+ x <- Prelude.decodeSfixed32
397+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_sfixed32") $ \_ -> Prelude.Just x
398+ parseField 10 Prelude.Bits64 = Prelude.label "optional_sfixed64 / " $ do
399+ x <- Prelude.decodeSfixed64
400+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_sfixed64") $ \_ -> Prelude.Just x
401+ parseField 11 Prelude.Bits32 = Prelude.label "optional_float / " $ do
402+ x <- Prelude.decodeFloat
403+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_float") $ \_ -> Prelude.Just x
404+ parseField 12 Prelude.Bits64 = Prelude.label "optional_double / " $ do
405+ x <- Prelude.decodeDouble
406+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_double") $ \_ -> Prelude.Just x
407+ parseField 13 Prelude.VarInt = Prelude.label "optional_bool / " $ do
408+ x <- Prelude.decodeBool
409+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_bool") $ \_ -> Prelude.Just x
410+ parseField 14 Prelude.LenDel = Prelude.label "optional_string / " $ do
411+ x <- Prelude.decodeString
412+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_string") $ \_ -> Prelude.Just x
413+ parseField 15 Prelude.LenDel = Prelude.label "optional_bytes / " $ do
414+ x <- Prelude.decodeBytes
415+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_bytes") $ \_ -> Prelude.Just x
416+ parseField 18 Prelude.LenDel = Prelude.label "optional_nested_message / " $ do
417+ x <- Prelude.parseLenDel parseTestAllTypesProto3_NestedMessage
418+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_nested_message") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeTestAllTypesProto3_NestedMessage x)
419+ parseField 19 Prelude.LenDel = Prelude.label "optional_foreign_message / " $ do
420+ x <- Prelude.parseLenDel parseForeignMessage
421+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_foreign_message") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeForeignMessage x)
422+ parseField 21 Prelude.VarInt = Prelude.label "optional_nested_enum / " $ do
423+ x <- Prelude.parseEnum
424+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_nested_enum") $ \_ -> Prelude.Just x
425+ parseField 22 Prelude.VarInt = Prelude.label "optional_foreign_enum / " $ do
426+ x <- Prelude.parseEnum
427+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_foreign_enum") $ \_ -> Prelude.Just x
428+ parseField 23 Prelude.VarInt = Prelude.label "optional_aliased_enum / " $ do
429+ x <- Prelude.parseEnum
430+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_aliased_enum") $ \_ -> Prelude.Just x
431+ parseField 24 Prelude.LenDel = Prelude.label "optional_string_piece / " $ do
432+ x <- Prelude.decodeString
433+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_string_piece") $ \_ -> Prelude.Just x
434+ parseField 25 Prelude.LenDel = Prelude.label "optional_cord / " $ do
435+ x <- Prelude.decodeString
436+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_cord") $ \_ -> Prelude.Just x
437+ parseField 27 Prelude.LenDel = Prelude.label "recursive_message / " $ do
438+ x <- Prelude.parseLenDel parseTestAllTypesProto3
439+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "recursive_message") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeTestAllTypesProto3 x)
440+ parseField 31 Prelude.VarInt = Prelude.label "repeated_int32 / " $ do
441+ x <- Prelude.decodeInt32
442+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int32") $ Prelude.flip Prelude.snoc x
443+ parseField 31 Prelude.LenDel = Prelude.label "repeated_int32 / " $ do
444+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt32
445+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int32") $ Prelude.flip Prelude.append x
446+ parseField 32 Prelude.VarInt = Prelude.label "repeated_int64 / " $ do
447+ x <- Prelude.decodeInt64
448+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int64") $ Prelude.flip Prelude.snoc x
449+ parseField 32 Prelude.LenDel = Prelude.label "repeated_int64 / " $ do
450+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt64
451+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int64") $ Prelude.flip Prelude.append x
452+ parseField 33 Prelude.VarInt = Prelude.label "repeated_uint32 / " $ do
453+ x <- Prelude.decodeUint32
454+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint32") $ Prelude.flip Prelude.snoc x
455+ parseField 33 Prelude.LenDel = Prelude.label "repeated_uint32 / " $ do
456+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint32
457+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint32") $ Prelude.flip Prelude.append x
458+ parseField 34 Prelude.VarInt = Prelude.label "repeated_uint64 / " $ do
459+ x <- Prelude.decodeUint64
460+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint64") $ Prelude.flip Prelude.snoc x
461+ parseField 34 Prelude.LenDel = Prelude.label "repeated_uint64 / " $ do
462+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint64
463+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint64") $ Prelude.flip Prelude.append x
464+ parseField 35 Prelude.VarInt = Prelude.label "repeated_sint32 / " $ do
465+ x <- Prelude.decodeSint32
466+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sint32") $ Prelude.flip Prelude.snoc x
467+ parseField 35 Prelude.LenDel = Prelude.label "repeated_sint32 / " $ do
468+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint32
469+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sint32") $ Prelude.flip Prelude.append x
470+ parseField 36 Prelude.VarInt = Prelude.label "repeated_sint64 / " $ do
471+ x <- Prelude.decodeSint64
472+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sint64") $ Prelude.flip Prelude.snoc x
473+ parseField 36 Prelude.LenDel = Prelude.label "repeated_sint64 / " $ do
474+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint64
475+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sint64") $ Prelude.flip Prelude.append x
476+ parseField 37 Prelude.Bits32 = Prelude.label "repeated_fixed32 / " $ do
477+ x <- Prelude.decodeFixed32
478+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_fixed32") $ Prelude.flip Prelude.snoc x
479+ parseField 37 Prelude.LenDel = Prelude.label "repeated_fixed32 / " $ do
480+ x <- Prelude.parseLenDel $ Prelude.decodeFixed32Array
481+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_fixed32") $ Prelude.flip Prelude.append x
482+ parseField 38 Prelude.Bits64 = Prelude.label "repeated_fixed64 / " $ do
483+ x <- Prelude.decodeFixed64
484+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_fixed64") $ Prelude.flip Prelude.snoc x
485+ parseField 38 Prelude.LenDel = Prelude.label "repeated_fixed64 / " $ do
486+ x <- Prelude.parseLenDel $ Prelude.decodeFixed64Array
487+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_fixed64") $ Prelude.flip Prelude.append x
488+ parseField 39 Prelude.Bits32 = Prelude.label "repeated_sfixed32 / " $ do
489+ x <- Prelude.decodeSfixed32
490+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sfixed32") $ Prelude.flip Prelude.snoc x
491+ parseField 39 Prelude.LenDel = Prelude.label "repeated_sfixed32 / " $ do
492+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed32Array
493+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sfixed32") $ Prelude.flip Prelude.append x
494+ parseField 40 Prelude.Bits64 = Prelude.label "repeated_sfixed64 / " $ do
495+ x <- Prelude.decodeSfixed64
496+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sfixed64") $ Prelude.flip Prelude.snoc x
497+ parseField 40 Prelude.LenDel = Prelude.label "repeated_sfixed64 / " $ do
498+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed64Array
499+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_sfixed64") $ Prelude.flip Prelude.append x
500+ parseField 41 Prelude.Bits32 = Prelude.label "repeated_float / " $ do
501+ x <- Prelude.decodeFloat
502+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_float") $ Prelude.flip Prelude.snoc x
503+ parseField 41 Prelude.LenDel = Prelude.label "repeated_float / " $ do
504+ x <- Prelude.parseLenDel $ Prelude.decodeFloatArray
505+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_float") $ Prelude.flip Prelude.append x
506+ parseField 42 Prelude.Bits64 = Prelude.label "repeated_double / " $ do
507+ x <- Prelude.decodeDouble
508+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_double") $ Prelude.flip Prelude.snoc x
509+ parseField 42 Prelude.LenDel = Prelude.label "repeated_double / " $ do
510+ x <- Prelude.parseLenDel $ Prelude.decodeDoubleArray
511+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_double") $ Prelude.flip Prelude.append x
512+ parseField 43 Prelude.VarInt = Prelude.label "repeated_bool / " $ do
513+ x <- Prelude.decodeBool
514+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_bool") $ Prelude.flip Prelude.snoc x
515+ parseField 43 Prelude.LenDel = Prelude.label "repeated_bool / " $ do
516+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeBool
517+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_bool") $ Prelude.flip Prelude.append x
518+ parseField 44 Prelude.LenDel = Prelude.label "repeated_string / " $ do
519+ x <- Prelude.decodeString
520+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_string") $ Prelude.flip Prelude.snoc x
521+ parseField 45 Prelude.LenDel = Prelude.label "repeated_bytes / " $ do
522+ x <- Prelude.decodeBytes
523+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_bytes") $ Prelude.flip Prelude.snoc x
524+ parseField 48 Prelude.LenDel = Prelude.label "repeated_nested_message / " $ do
525+ x <- Prelude.parseLenDel parseTestAllTypesProto3_NestedMessage
526+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_nested_message") $ Prelude.flip Prelude.snoc x
527+ parseField 49 Prelude.LenDel = Prelude.label "repeated_foreign_message / " $ do
528+ x <- Prelude.parseLenDel parseForeignMessage
529+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_foreign_message") $ Prelude.flip Prelude.snoc x
530+ parseField 51 Prelude.VarInt = Prelude.label "repeated_nested_enum / " $ do
531+ x <- Prelude.parseEnum
532+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_nested_enum") $ Prelude.flip Prelude.snoc x
533+ parseField 51 Prelude.LenDel = Prelude.label "repeated_nested_enum / " $ do
534+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.parseEnum
535+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_nested_enum") $ Prelude.flip Prelude.append x
536+ parseField 52 Prelude.VarInt = Prelude.label "repeated_foreign_enum / " $ do
537+ x <- Prelude.parseEnum
538+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_foreign_enum") $ Prelude.flip Prelude.snoc x
539+ parseField 52 Prelude.LenDel = Prelude.label "repeated_foreign_enum / " $ do
540+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.parseEnum
541+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_foreign_enum") $ Prelude.flip Prelude.append x
542+ parseField 54 Prelude.LenDel = Prelude.label "repeated_string_piece / " $ do
543+ x <- Prelude.decodeString
544+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_string_piece") $ Prelude.flip Prelude.snoc x
545+ parseField 55 Prelude.LenDel = Prelude.label "repeated_cord / " $ do
546+ x <- Prelude.decodeString
547+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_cord") $ Prelude.flip Prelude.snoc x
548+ parseField 75 Prelude.VarInt = Prelude.label "packed_int32 / " $ do
549+ x <- Prelude.decodeInt32
550+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_int32") $ Prelude.flip Prelude.snoc x
551+ parseField 75 Prelude.LenDel = Prelude.label "packed_int32 / " $ do
552+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt32
553+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_int32") $ Prelude.flip Prelude.append x
554+ parseField 76 Prelude.VarInt = Prelude.label "packed_int64 / " $ do
555+ x <- Prelude.decodeInt64
556+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_int64") $ Prelude.flip Prelude.snoc x
557+ parseField 76 Prelude.LenDel = Prelude.label "packed_int64 / " $ do
558+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt64
559+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_int64") $ Prelude.flip Prelude.append x
560+ parseField 77 Prelude.VarInt = Prelude.label "packed_uint32 / " $ do
561+ x <- Prelude.decodeUint32
562+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_uint32") $ Prelude.flip Prelude.snoc x
563+ parseField 77 Prelude.LenDel = Prelude.label "packed_uint32 / " $ do
564+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint32
565+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_uint32") $ Prelude.flip Prelude.append x
566+ parseField 78 Prelude.VarInt = Prelude.label "packed_uint64 / " $ do
567+ x <- Prelude.decodeUint64
568+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_uint64") $ Prelude.flip Prelude.snoc x
569+ parseField 78 Prelude.LenDel = Prelude.label "packed_uint64 / " $ do
570+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint64
571+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_uint64") $ Prelude.flip Prelude.append x
572+ parseField 79 Prelude.VarInt = Prelude.label "packed_sint32 / " $ do
573+ x <- Prelude.decodeSint32
574+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sint32") $ Prelude.flip Prelude.snoc x
575+ parseField 79 Prelude.LenDel = Prelude.label "packed_sint32 / " $ do
576+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint32
577+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sint32") $ Prelude.flip Prelude.append x
578+ parseField 80 Prelude.VarInt = Prelude.label "packed_sint64 / " $ do
579+ x <- Prelude.decodeSint64
580+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sint64") $ Prelude.flip Prelude.snoc x
581+ parseField 80 Prelude.LenDel = Prelude.label "packed_sint64 / " $ do
582+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint64
583+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sint64") $ Prelude.flip Prelude.append x
584+ parseField 81 Prelude.Bits32 = Prelude.label "packed_fixed32 / " $ do
585+ x <- Prelude.decodeFixed32
586+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_fixed32") $ Prelude.flip Prelude.snoc x
587+ parseField 81 Prelude.LenDel = Prelude.label "packed_fixed32 / " $ do
588+ x <- Prelude.parseLenDel $ Prelude.decodeFixed32Array
589+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_fixed32") $ Prelude.flip Prelude.append x
590+ parseField 82 Prelude.Bits64 = Prelude.label "packed_fixed64 / " $ do
591+ x <- Prelude.decodeFixed64
592+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_fixed64") $ Prelude.flip Prelude.snoc x
593+ parseField 82 Prelude.LenDel = Prelude.label "packed_fixed64 / " $ do
594+ x <- Prelude.parseLenDel $ Prelude.decodeFixed64Array
595+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_fixed64") $ Prelude.flip Prelude.append x
596+ parseField 83 Prelude.Bits32 = Prelude.label "packed_sfixed32 / " $ do
597+ x <- Prelude.decodeSfixed32
598+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sfixed32") $ Prelude.flip Prelude.snoc x
599+ parseField 83 Prelude.LenDel = Prelude.label "packed_sfixed32 / " $ do
600+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed32Array
601+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sfixed32") $ Prelude.flip Prelude.append x
602+ parseField 84 Prelude.Bits64 = Prelude.label "packed_sfixed64 / " $ do
603+ x <- Prelude.decodeSfixed64
604+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sfixed64") $ Prelude.flip Prelude.snoc x
605+ parseField 84 Prelude.LenDel = Prelude.label "packed_sfixed64 / " $ do
606+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed64Array
607+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_sfixed64") $ Prelude.flip Prelude.append x
608+ parseField 85 Prelude.Bits32 = Prelude.label "packed_float / " $ do
609+ x <- Prelude.decodeFloat
610+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_float") $ Prelude.flip Prelude.snoc x
611+ parseField 85 Prelude.LenDel = Prelude.label "packed_float / " $ do
612+ x <- Prelude.parseLenDel $ Prelude.decodeFloatArray
613+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_float") $ Prelude.flip Prelude.append x
614+ parseField 86 Prelude.Bits64 = Prelude.label "packed_double / " $ do
615+ x <- Prelude.decodeDouble
616+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_double") $ Prelude.flip Prelude.snoc x
617+ parseField 86 Prelude.LenDel = Prelude.label "packed_double / " $ do
618+ x <- Prelude.parseLenDel $ Prelude.decodeDoubleArray
619+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_double") $ Prelude.flip Prelude.append x
620+ parseField 87 Prelude.VarInt = Prelude.label "packed_bool / " $ do
621+ x <- Prelude.decodeBool
622+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_bool") $ Prelude.flip Prelude.snoc x
623+ parseField 87 Prelude.LenDel = Prelude.label "packed_bool / " $ do
624+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeBool
625+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_bool") $ Prelude.flip Prelude.append x
626+ parseField 88 Prelude.VarInt = Prelude.label "packed_nested_enum / " $ do
627+ x <- Prelude.parseEnum
628+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_nested_enum") $ Prelude.flip Prelude.snoc x
629+ parseField 88 Prelude.LenDel = Prelude.label "packed_nested_enum / " $ do
630+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.parseEnum
631+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "packed_nested_enum") $ Prelude.flip Prelude.append x
632+ parseField 89 Prelude.VarInt = Prelude.label "unpacked_int32 / " $ do
633+ x <- Prelude.decodeInt32
634+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_int32") $ Prelude.flip Prelude.snoc x
635+ parseField 89 Prelude.LenDel = Prelude.label "unpacked_int32 / " $ do
636+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt32
637+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_int32") $ Prelude.flip Prelude.append x
638+ parseField 90 Prelude.VarInt = Prelude.label "unpacked_int64 / " $ do
639+ x <- Prelude.decodeInt64
640+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_int64") $ Prelude.flip Prelude.snoc x
641+ parseField 90 Prelude.LenDel = Prelude.label "unpacked_int64 / " $ do
642+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt64
643+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_int64") $ Prelude.flip Prelude.append x
644+ parseField 91 Prelude.VarInt = Prelude.label "unpacked_uint32 / " $ do
645+ x <- Prelude.decodeUint32
646+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_uint32") $ Prelude.flip Prelude.snoc x
647+ parseField 91 Prelude.LenDel = Prelude.label "unpacked_uint32 / " $ do
648+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint32
649+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_uint32") $ Prelude.flip Prelude.append x
650+ parseField 92 Prelude.VarInt = Prelude.label "unpacked_uint64 / " $ do
651+ x <- Prelude.decodeUint64
652+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_uint64") $ Prelude.flip Prelude.snoc x
653+ parseField 92 Prelude.LenDel = Prelude.label "unpacked_uint64 / " $ do
654+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint64
655+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_uint64") $ Prelude.flip Prelude.append x
656+ parseField 93 Prelude.VarInt = Prelude.label "unpacked_sint32 / " $ do
657+ x <- Prelude.decodeSint32
658+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sint32") $ Prelude.flip Prelude.snoc x
659+ parseField 93 Prelude.LenDel = Prelude.label "unpacked_sint32 / " $ do
660+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint32
661+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sint32") $ Prelude.flip Prelude.append x
662+ parseField 94 Prelude.VarInt = Prelude.label "unpacked_sint64 / " $ do
663+ x <- Prelude.decodeSint64
664+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sint64") $ Prelude.flip Prelude.snoc x
665+ parseField 94 Prelude.LenDel = Prelude.label "unpacked_sint64 / " $ do
666+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint64
667+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sint64") $ Prelude.flip Prelude.append x
668+ parseField 95 Prelude.Bits32 = Prelude.label "unpacked_fixed32 / " $ do
669+ x <- Prelude.decodeFixed32
670+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_fixed32") $ Prelude.flip Prelude.snoc x
671+ parseField 95 Prelude.LenDel = Prelude.label "unpacked_fixed32 / " $ do
672+ x <- Prelude.parseLenDel $ Prelude.decodeFixed32Array
673+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_fixed32") $ Prelude.flip Prelude.append x
674+ parseField 96 Prelude.Bits64 = Prelude.label "unpacked_fixed64 / " $ do
675+ x <- Prelude.decodeFixed64
676+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_fixed64") $ Prelude.flip Prelude.snoc x
677+ parseField 96 Prelude.LenDel = Prelude.label "unpacked_fixed64 / " $ do
678+ x <- Prelude.parseLenDel $ Prelude.decodeFixed64Array
679+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_fixed64") $ Prelude.flip Prelude.append x
680+ parseField 97 Prelude.Bits32 = Prelude.label "unpacked_sfixed32 / " $ do
681+ x <- Prelude.decodeSfixed32
682+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sfixed32") $ Prelude.flip Prelude.snoc x
683+ parseField 97 Prelude.LenDel = Prelude.label "unpacked_sfixed32 / " $ do
684+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed32Array
685+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sfixed32") $ Prelude.flip Prelude.append x
686+ parseField 98 Prelude.Bits64 = Prelude.label "unpacked_sfixed64 / " $ do
687+ x <- Prelude.decodeSfixed64
688+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sfixed64") $ Prelude.flip Prelude.snoc x
689+ parseField 98 Prelude.LenDel = Prelude.label "unpacked_sfixed64 / " $ do
690+ x <- Prelude.parseLenDel $ Prelude.decodeSfixed64Array
691+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_sfixed64") $ Prelude.flip Prelude.append x
692+ parseField 99 Prelude.Bits32 = Prelude.label "unpacked_float / " $ do
693+ x <- Prelude.decodeFloat
694+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_float") $ Prelude.flip Prelude.snoc x
695+ parseField 99 Prelude.LenDel = Prelude.label "unpacked_float / " $ do
696+ x <- Prelude.parseLenDel $ Prelude.decodeFloatArray
697+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_float") $ Prelude.flip Prelude.append x
698+ parseField 100 Prelude.Bits64 = Prelude.label "unpacked_double / " $ do
699+ x <- Prelude.decodeDouble
700+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_double") $ Prelude.flip Prelude.snoc x
701+ parseField 100 Prelude.LenDel = Prelude.label "unpacked_double / " $ do
702+ x <- Prelude.parseLenDel $ Prelude.decodeDoubleArray
703+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_double") $ Prelude.flip Prelude.append x
704+ parseField 101 Prelude.VarInt = Prelude.label "unpacked_bool / " $ do
705+ x <- Prelude.decodeBool
706+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_bool") $ Prelude.flip Prelude.snoc x
707+ parseField 101 Prelude.LenDel = Prelude.label "unpacked_bool / " $ do
708+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeBool
709+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_bool") $ Prelude.flip Prelude.append x
710+ parseField 102 Prelude.VarInt = Prelude.label "unpacked_nested_enum / " $ do
711+ x <- Prelude.parseEnum
712+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_nested_enum") $ Prelude.flip Prelude.snoc x
713+ parseField 102 Prelude.LenDel = Prelude.label "unpacked_nested_enum / " $ do
714+ x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.parseEnum
715+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "unpacked_nested_enum") $ Prelude.flip Prelude.append x
716+ parseField 56 Prelude.LenDel = Prelude.label "map_int32_int32 / " $ do
717+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapInt32Int32Entry
718+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_int32_int32") $ Prelude.flip Prelude.snoc x
719+ parseField 57 Prelude.LenDel = Prelude.label "map_int64_int64 / " $ do
720+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapInt64Int64Entry
721+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_int64_int64") $ Prelude.flip Prelude.snoc x
722+ parseField 58 Prelude.LenDel = Prelude.label "map_uint32_uint32 / " $ do
723+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapUint32Uint32Entry
724+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_uint32_uint32") $ Prelude.flip Prelude.snoc x
725+ parseField 59 Prelude.LenDel = Prelude.label "map_uint64_uint64 / " $ do
726+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapUint64Uint64Entry
727+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_uint64_uint64") $ Prelude.flip Prelude.snoc x
728+ parseField 60 Prelude.LenDel = Prelude.label "map_sint32_sint32 / " $ do
729+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapSint32Sint32Entry
730+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_sint32_sint32") $ Prelude.flip Prelude.snoc x
731+ parseField 61 Prelude.LenDel = Prelude.label "map_sint64_sint64 / " $ do
732+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapSint64Sint64Entry
733+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_sint64_sint64") $ Prelude.flip Prelude.snoc x
734+ parseField 62 Prelude.LenDel = Prelude.label "map_fixed32_fixed32 / " $ do
735+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapFixed32Fixed32Entry
736+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_fixed32_fixed32") $ Prelude.flip Prelude.snoc x
737+ parseField 63 Prelude.LenDel = Prelude.label "map_fixed64_fixed64 / " $ do
738+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapFixed64Fixed64Entry
739+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_fixed64_fixed64") $ Prelude.flip Prelude.snoc x
740+ parseField 64 Prelude.LenDel = Prelude.label "map_sfixed32_sfixed32 / " $ do
741+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapSfixed32Sfixed32Entry
742+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_sfixed32_sfixed32") $ Prelude.flip Prelude.snoc x
743+ parseField 65 Prelude.LenDel = Prelude.label "map_sfixed64_sfixed64 / " $ do
744+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapSfixed64Sfixed64Entry
745+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_sfixed64_sfixed64") $ Prelude.flip Prelude.snoc x
746+ parseField 66 Prelude.LenDel = Prelude.label "map_int32_float / " $ do
747+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapInt32FloatEntry
748+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_int32_float") $ Prelude.flip Prelude.snoc x
749+ parseField 67 Prelude.LenDel = Prelude.label "map_int32_double / " $ do
750+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapInt32DoubleEntry
751+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_int32_double") $ Prelude.flip Prelude.snoc x
752+ parseField 68 Prelude.LenDel = Prelude.label "map_bool_bool / " $ do
753+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapBoolBoolEntry
754+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_bool_bool") $ Prelude.flip Prelude.snoc x
755+ parseField 69 Prelude.LenDel = Prelude.label "map_string_string / " $ do
756+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringStringEntry
757+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_string") $ Prelude.flip Prelude.snoc x
758+ parseField 70 Prelude.LenDel = Prelude.label "map_string_bytes / " $ do
759+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringBytesEntry
760+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_bytes") $ Prelude.flip Prelude.snoc x
761+ parseField 71 Prelude.LenDel = Prelude.label "map_string_nested_message / " $ do
762+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringNestedMessageEntry
763+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_nested_message") $ Prelude.flip Prelude.snoc x
764+ parseField 72 Prelude.LenDel = Prelude.label "map_string_foreign_message / " $ do
765+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringForeignMessageEntry
766+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_foreign_message") $ Prelude.flip Prelude.snoc x
767+ parseField 73 Prelude.LenDel = Prelude.label "map_string_nested_enum / " $ do
768+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringNestedEnumEntry
769+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_nested_enum") $ Prelude.flip Prelude.snoc x
770+ parseField 74 Prelude.LenDel = Prelude.label "map_string_foreign_enum / " $ do
771+ x <- Prelude.parseLenDel parseTestAllTypesProto3_MapStringForeignEnumEntry
772+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "map_string_foreign_enum") $ Prelude.flip Prelude.snoc x
773+ parseField 111 Prelude.VarInt = Prelude.label "oneof_uint32 / " $ do
774+ x <- Prelude.decodeUint32
775+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_uint32 x)
776+ parseField 112 Prelude.LenDel = Prelude.label "oneof_nested_message / " $ do
777+ x <- Prelude.parseLenDel parseTestAllTypesProto3_NestedMessage
778+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ mergeTestAllTypesProto3_Oneof_field (Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_nested_message x))
779+ parseField 113 Prelude.LenDel = Prelude.label "oneof_string / " $ do
780+ x <- Prelude.decodeString
781+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_string x)
782+ parseField 114 Prelude.LenDel = Prelude.label "oneof_bytes / " $ do
783+ x <- Prelude.decodeBytes
784+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_bytes x)
785+ parseField 115 Prelude.VarInt = Prelude.label "oneof_bool / " $ do
786+ x <- Prelude.decodeBool
787+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_bool x)
788+ parseField 116 Prelude.VarInt = Prelude.label "oneof_uint64 / " $ do
789+ x <- Prelude.decodeUint64
790+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_uint64 x)
791+ parseField 117 Prelude.Bits32 = Prelude.label "oneof_float / " $ do
792+ x <- Prelude.decodeFloat
793+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_float x)
794+ parseField 118 Prelude.Bits64 = Prelude.label "oneof_double / " $ do
795+ x <- Prelude.decodeDouble
796+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_double x)
797+ parseField 119 Prelude.VarInt = Prelude.label "oneof_enum / " $ do
798+ x <- Prelude.parseEnum
799+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_enum x)
800+ parseField 120 Prelude.VarInt = Prelude.label "oneof_null_value / " $ do
801+ x <- Prelude.parseEnum
802+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "oneof_field") $ \_ -> Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_null_value x)
803+ parseField 201 Prelude.LenDel = Prelude.label "optional_bool_wrapper / " $ do
804+ x <- Prelude.parseLenDel Google.Protobuf.parseBoolValue
805+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_bool_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeBoolValue x)
806+ parseField 202 Prelude.LenDel = Prelude.label "optional_int32_wrapper / " $ do
807+ x <- Prelude.parseLenDel Google.Protobuf.parseInt32Value
808+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_int32_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeInt32Value x)
809+ parseField 203 Prelude.LenDel = Prelude.label "optional_int64_wrapper / " $ do
810+ x <- Prelude.parseLenDel Google.Protobuf.parseInt64Value
811+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_int64_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeInt64Value x)
812+ parseField 204 Prelude.LenDel = Prelude.label "optional_uint32_wrapper / " $ do
813+ x <- Prelude.parseLenDel Google.Protobuf.parseUInt32Value
814+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_uint32_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeUInt32Value x)
815+ parseField 205 Prelude.LenDel = Prelude.label "optional_uint64_wrapper / " $ do
816+ x <- Prelude.parseLenDel Google.Protobuf.parseUInt64Value
817+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_uint64_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeUInt64Value x)
818+ parseField 206 Prelude.LenDel = Prelude.label "optional_float_wrapper / " $ do
819+ x <- Prelude.parseLenDel Google.Protobuf.parseFloatValue
820+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_float_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeFloatValue x)
821+ parseField 207 Prelude.LenDel = Prelude.label "optional_double_wrapper / " $ do
822+ x <- Prelude.parseLenDel Google.Protobuf.parseDoubleValue
823+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_double_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeDoubleValue x)
824+ parseField 208 Prelude.LenDel = Prelude.label "optional_string_wrapper / " $ do
825+ x <- Prelude.parseLenDel Google.Protobuf.parseStringValue
826+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_string_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeStringValue x)
827+ parseField 209 Prelude.LenDel = Prelude.label "optional_bytes_wrapper / " $ do
828+ x <- Prelude.parseLenDel Google.Protobuf.parseBytesValue
829+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_bytes_wrapper") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeBytesValue x)
830+ parseField 211 Prelude.LenDel = Prelude.label "repeated_bool_wrapper / " $ do
831+ x <- Prelude.parseLenDel Google.Protobuf.parseBoolValue
832+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_bool_wrapper") $ Prelude.flip Prelude.snoc x
833+ parseField 212 Prelude.LenDel = Prelude.label "repeated_int32_wrapper / " $ do
834+ x <- Prelude.parseLenDel Google.Protobuf.parseInt32Value
835+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int32_wrapper") $ Prelude.flip Prelude.snoc x
836+ parseField 213 Prelude.LenDel = Prelude.label "repeated_int64_wrapper / " $ do
837+ x <- Prelude.parseLenDel Google.Protobuf.parseInt64Value
838+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_int64_wrapper") $ Prelude.flip Prelude.snoc x
839+ parseField 214 Prelude.LenDel = Prelude.label "repeated_uint32_wrapper / " $ do
840+ x <- Prelude.parseLenDel Google.Protobuf.parseUInt32Value
841+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint32_wrapper") $ Prelude.flip Prelude.snoc x
842+ parseField 215 Prelude.LenDel = Prelude.label "repeated_uint64_wrapper / " $ do
843+ x <- Prelude.parseLenDel Google.Protobuf.parseUInt64Value
844+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_uint64_wrapper") $ Prelude.flip Prelude.snoc x
845+ parseField 216 Prelude.LenDel = Prelude.label "repeated_float_wrapper / " $ do
846+ x <- Prelude.parseLenDel Google.Protobuf.parseFloatValue
847+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_float_wrapper") $ Prelude.flip Prelude.snoc x
848+ parseField 217 Prelude.LenDel = Prelude.label "repeated_double_wrapper / " $ do
849+ x <- Prelude.parseLenDel Google.Protobuf.parseDoubleValue
850+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_double_wrapper") $ Prelude.flip Prelude.snoc x
851+ parseField 218 Prelude.LenDel = Prelude.label "repeated_string_wrapper / " $ do
852+ x <- Prelude.parseLenDel Google.Protobuf.parseStringValue
853+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_string_wrapper") $ Prelude.flip Prelude.snoc x
854+ parseField 219 Prelude.LenDel = Prelude.label "repeated_bytes_wrapper / " $ do
855+ x <- Prelude.parseLenDel Google.Protobuf.parseBytesValue
856+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_bytes_wrapper") $ Prelude.flip Prelude.snoc x
857+ parseField 301 Prelude.LenDel = Prelude.label "optional_duration / " $ do
858+ x <- Prelude.parseLenDel Google.Protobuf.parseDuration
859+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_duration") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeDuration x)
860+ parseField 302 Prelude.LenDel = Prelude.label "optional_timestamp / " $ do
861+ x <- Prelude.parseLenDel Google.Protobuf.parseTimestamp
862+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_timestamp") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeTimestamp x)
863+ parseField 303 Prelude.LenDel = Prelude.label "optional_field_mask / " $ do
864+ x <- Prelude.parseLenDel Google.Protobuf.parseFieldMask
865+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_field_mask") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeFieldMask x)
866+ parseField 304 Prelude.LenDel = Prelude.label "optional_struct / " $ do
867+ x <- Prelude.parseLenDel Google.Protobuf.parseStruct
868+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_struct") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeStruct x)
869+ parseField 305 Prelude.LenDel = Prelude.label "optional_any / " $ do
870+ x <- Prelude.parseLenDel Google.Protobuf.parseAny
871+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_any") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeAny x)
872+ parseField 306 Prelude.LenDel = Prelude.label "optional_value / " $ do
873+ x <- Prelude.parseLenDel Google.Protobuf.parseValue
874+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_value") $ Prelude.Just Prelude.<<< Prelude.maybe x (Google.Protobuf.mergeValue x)
875+ parseField 307 Prelude.VarInt = Prelude.label "optional_null_value / " $ do
876+ x <- Prelude.parseEnum
877+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "optional_null_value") $ \_ -> Prelude.Just x
878+ parseField 311 Prelude.LenDel = Prelude.label "repeated_duration / " $ do
879+ x <- Prelude.parseLenDel Google.Protobuf.parseDuration
880+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_duration") $ Prelude.flip Prelude.snoc x
881+ parseField 312 Prelude.LenDel = Prelude.label "repeated_timestamp / " $ do
882+ x <- Prelude.parseLenDel Google.Protobuf.parseTimestamp
883+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_timestamp") $ Prelude.flip Prelude.snoc x
884+ parseField 313 Prelude.LenDel = Prelude.label "repeated_fieldmask / " $ do
885+ x <- Prelude.parseLenDel Google.Protobuf.parseFieldMask
886+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_fieldmask") $ Prelude.flip Prelude.snoc x
887+ parseField 324 Prelude.LenDel = Prelude.label "repeated_struct / " $ do
888+ x <- Prelude.parseLenDel Google.Protobuf.parseStruct
889+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_struct") $ Prelude.flip Prelude.snoc x
890+ parseField 315 Prelude.LenDel = Prelude.label "repeated_any / " $ do
891+ x <- Prelude.parseLenDel Google.Protobuf.parseAny
892+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_any") $ Prelude.flip Prelude.snoc x
893+ parseField 316 Prelude.LenDel = Prelude.label "repeated_value / " $ do
894+ x <- Prelude.parseLenDel Google.Protobuf.parseValue
895+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_value") $ Prelude.flip Prelude.snoc x
896+ parseField 317 Prelude.LenDel = Prelude.label "repeated_list_value / " $ do
897+ x <- Prelude.parseLenDel Google.Protobuf.parseListValue
898+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "repeated_list_value") $ Prelude.flip Prelude.snoc x
899+ parseField 401 Prelude.VarInt = Prelude.label "fieldname1 / " $ do
900+ x <- Prelude.decodeInt32
901+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fieldname1") $ \_ -> Prelude.Just x
902+ parseField 402 Prelude.VarInt = Prelude.label "field_name2 / " $ do
903+ x <- Prelude.decodeInt32
904+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_name2") $ \_ -> Prelude.Just x
905+ parseField 403 Prelude.VarInt = Prelude.label "_field_name3 / " $ do
906+ x <- Prelude.decodeInt32
907+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "_field_name3") $ \_ -> Prelude.Just x
908+ parseField 404 Prelude.VarInt = Prelude.label "field__name4_ / " $ do
909+ x <- Prelude.decodeInt32
910+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field__name4_") $ \_ -> Prelude.Just x
911+ parseField 405 Prelude.VarInt = Prelude.label "field0name5 / " $ do
912+ x <- Prelude.decodeInt32
913+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field0name5") $ \_ -> Prelude.Just x
914+ parseField 406 Prelude.VarInt = Prelude.label "field_0_name6 / " $ do
915+ x <- Prelude.decodeInt32
916+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_0_name6") $ \_ -> Prelude.Just x
917+ parseField 407 Prelude.VarInt = Prelude.label "fieldName7 / " $ do
918+ x <- Prelude.decodeInt32
919+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fieldName7") $ \_ -> Prelude.Just x
920+ parseField 408 Prelude.VarInt = Prelude.label "FieldName8 / " $ do
921+ x <- Prelude.decodeInt32
922+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fieldName8") $ \_ -> Prelude.Just x
923+ parseField 409 Prelude.VarInt = Prelude.label "field_Name9 / " $ do
924+ x <- Prelude.decodeInt32
925+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_Name9") $ \_ -> Prelude.Just x
926+ parseField 410 Prelude.VarInt = Prelude.label "Field_Name10 / " $ do
927+ x <- Prelude.decodeInt32
928+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_Name10") $ \_ -> Prelude.Just x
929+ parseField 411 Prelude.VarInt = Prelude.label "FIELD_NAME11 / " $ do
930+ x <- Prelude.decodeInt32
931+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fIELD_NAME11") $ \_ -> Prelude.Just x
932+ parseField 412 Prelude.VarInt = Prelude.label "FIELD_name12 / " $ do
933+ x <- Prelude.decodeInt32
934+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "fIELD_name12") $ \_ -> Prelude.Just x
935+ parseField 413 Prelude.VarInt = Prelude.label "__field_name13 / " $ do
936+ x <- Prelude.decodeInt32
937+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "__field_name13") $ \_ -> Prelude.Just x
938+ parseField 414 Prelude.VarInt = Prelude.label "__Field_name14 / " $ do
939+ x <- Prelude.decodeInt32
940+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "__Field_name14") $ \_ -> Prelude.Just x
941+ parseField 415 Prelude.VarInt = Prelude.label "field__name15 / " $ do
942+ x <- Prelude.decodeInt32
943+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field__name15") $ \_ -> Prelude.Just x
944+ parseField 416 Prelude.VarInt = Prelude.label "field__Name16 / " $ do
945+ x <- Prelude.decodeInt32
946+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field__Name16") $ \_ -> Prelude.Just x
947+ parseField 417 Prelude.VarInt = Prelude.label "field_name17__ / " $ do
948+ x <- Prelude.decodeInt32
949+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_name17__") $ \_ -> Prelude.Just x
950+ parseField 418 Prelude.VarInt = Prelude.label "Field_name18__ / " $ do
951+ x <- Prelude.decodeInt32
952+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "field_name18__") $ \_ -> Prelude.Just x
953+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
954+
955+defaultTestAllTypesProto3 :: TestAllTypesProto3R
956+defaultTestAllTypesProto3 =
957+ { optional_int32: Prelude.Nothing
958+ , optional_int64: Prelude.Nothing
959+ , optional_uint32: Prelude.Nothing
960+ , optional_uint64: Prelude.Nothing
961+ , optional_sint32: Prelude.Nothing
962+ , optional_sint64: Prelude.Nothing
963+ , optional_fixed32: Prelude.Nothing
964+ , optional_fixed64: Prelude.Nothing
965+ , optional_sfixed32: Prelude.Nothing
966+ , optional_sfixed64: Prelude.Nothing
967+ , optional_float: Prelude.Nothing
968+ , optional_double: Prelude.Nothing
969+ , optional_bool: Prelude.Nothing
970+ , optional_string: Prelude.Nothing
971+ , optional_bytes: Prelude.Nothing
972+ , optional_nested_message: Prelude.Nothing
973+ , optional_foreign_message: Prelude.Nothing
974+ , optional_nested_enum: Prelude.Nothing
975+ , optional_foreign_enum: Prelude.Nothing
976+ , optional_aliased_enum: Prelude.Nothing
977+ , optional_string_piece: Prelude.Nothing
978+ , optional_cord: Prelude.Nothing
979+ , recursive_message: Prelude.Nothing
980+ , repeated_int32: []
981+ , repeated_int64: []
982+ , repeated_uint32: []
983+ , repeated_uint64: []
984+ , repeated_sint32: []
985+ , repeated_sint64: []
986+ , repeated_fixed32: []
987+ , repeated_fixed64: []
988+ , repeated_sfixed32: []
989+ , repeated_sfixed64: []
990+ , repeated_float: []
991+ , repeated_double: []
992+ , repeated_bool: []
993+ , repeated_string: []
994+ , repeated_bytes: []
995+ , repeated_nested_message: []
996+ , repeated_foreign_message: []
997+ , repeated_nested_enum: []
998+ , repeated_foreign_enum: []
999+ , repeated_string_piece: []
1000+ , repeated_cord: []
1001+ , packed_int32: []
1002+ , packed_int64: []
1003+ , packed_uint32: []
1004+ , packed_uint64: []
1005+ , packed_sint32: []
1006+ , packed_sint64: []
1007+ , packed_fixed32: []
1008+ , packed_fixed64: []
1009+ , packed_sfixed32: []
1010+ , packed_sfixed64: []
1011+ , packed_float: []
1012+ , packed_double: []
1013+ , packed_bool: []
1014+ , packed_nested_enum: []
1015+ , unpacked_int32: []
1016+ , unpacked_int64: []
1017+ , unpacked_uint32: []
1018+ , unpacked_uint64: []
1019+ , unpacked_sint32: []
1020+ , unpacked_sint64: []
1021+ , unpacked_fixed32: []
1022+ , unpacked_fixed64: []
1023+ , unpacked_sfixed32: []
1024+ , unpacked_sfixed64: []
1025+ , unpacked_float: []
1026+ , unpacked_double: []
1027+ , unpacked_bool: []
1028+ , unpacked_nested_enum: []
1029+ , map_int32_int32: []
1030+ , map_int64_int64: []
1031+ , map_uint32_uint32: []
1032+ , map_uint64_uint64: []
1033+ , map_sint32_sint32: []
1034+ , map_sint64_sint64: []
1035+ , map_fixed32_fixed32: []
1036+ , map_fixed64_fixed64: []
1037+ , map_sfixed32_sfixed32: []
1038+ , map_sfixed64_sfixed64: []
1039+ , map_int32_float: []
1040+ , map_int32_double: []
1041+ , map_bool_bool: []
1042+ , map_string_string: []
1043+ , map_string_bytes: []
1044+ , map_string_nested_message: []
1045+ , map_string_foreign_message: []
1046+ , map_string_nested_enum: []
1047+ , map_string_foreign_enum: []
1048+ , optional_bool_wrapper: Prelude.Nothing
1049+ , optional_int32_wrapper: Prelude.Nothing
1050+ , optional_int64_wrapper: Prelude.Nothing
1051+ , optional_uint32_wrapper: Prelude.Nothing
1052+ , optional_uint64_wrapper: Prelude.Nothing
1053+ , optional_float_wrapper: Prelude.Nothing
1054+ , optional_double_wrapper: Prelude.Nothing
1055+ , optional_string_wrapper: Prelude.Nothing
1056+ , optional_bytes_wrapper: Prelude.Nothing
1057+ , repeated_bool_wrapper: []
1058+ , repeated_int32_wrapper: []
1059+ , repeated_int64_wrapper: []
1060+ , repeated_uint32_wrapper: []
1061+ , repeated_uint64_wrapper: []
1062+ , repeated_float_wrapper: []
1063+ , repeated_double_wrapper: []
1064+ , repeated_string_wrapper: []
1065+ , repeated_bytes_wrapper: []
1066+ , optional_duration: Prelude.Nothing
1067+ , optional_timestamp: Prelude.Nothing
1068+ , optional_field_mask: Prelude.Nothing
1069+ , optional_struct: Prelude.Nothing
1070+ , optional_any: Prelude.Nothing
1071+ , optional_value: Prelude.Nothing
1072+ , optional_null_value: Prelude.Nothing
1073+ , repeated_duration: []
1074+ , repeated_timestamp: []
1075+ , repeated_fieldmask: []
1076+ , repeated_struct: []
1077+ , repeated_any: []
1078+ , repeated_value: []
1079+ , repeated_list_value: []
1080+ , fieldname1: Prelude.Nothing
1081+ , field_name2: Prelude.Nothing
1082+ , _field_name3: Prelude.Nothing
1083+ , field__name4_: Prelude.Nothing
1084+ , field0name5: Prelude.Nothing
1085+ , field_0_name6: Prelude.Nothing
1086+ , fieldName7: Prelude.Nothing
1087+ , fieldName8: Prelude.Nothing
1088+ , field_Name9: Prelude.Nothing
1089+ , field_Name10: Prelude.Nothing
1090+ , fIELD_NAME11: Prelude.Nothing
1091+ , fIELD_name12: Prelude.Nothing
1092+ , __field_name13: Prelude.Nothing
1093+ , __Field_name14: Prelude.Nothing
1094+ , field__name15: Prelude.Nothing
1095+ , field__Name16: Prelude.Nothing
1096+ , field_name17__: Prelude.Nothing
1097+ , field_name18__: Prelude.Nothing
1098+ , oneof_field: Prelude.Nothing
1099+ , __unknown_fields: []
1100+ }
1101+
1102+mkTestAllTypesProto3 :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3Row r3 => Prelude.Nub r3 TestAllTypesProto3Row => Record r1 -> TestAllTypesProto3
1103+mkTestAllTypesProto3 r = TestAllTypesProto3 $ Prelude.merge r defaultTestAllTypesProto3
1104+data TestAllTypesProto3_Oneof_field
1105+ = TestAllTypesProto3_Oneof_field_Oneof_uint32 Prelude.UInt
1106+ | TestAllTypesProto3_Oneof_field_Oneof_nested_message TestAllTypesProto3_NestedMessage
1107+ | TestAllTypesProto3_Oneof_field_Oneof_string String
1108+ | TestAllTypesProto3_Oneof_field_Oneof_bytes Prelude.Bytes
1109+ | TestAllTypesProto3_Oneof_field_Oneof_bool Boolean
1110+ | TestAllTypesProto3_Oneof_field_Oneof_uint64 Prelude.UInt64
1111+ | TestAllTypesProto3_Oneof_field_Oneof_float Prelude.Float32
1112+ | TestAllTypesProto3_Oneof_field_Oneof_double Number
1113+ | TestAllTypesProto3_Oneof_field_Oneof_enum TestAllTypesProto3_NestedEnum
1114+ | TestAllTypesProto3_Oneof_field_Oneof_null_value Google.Protobuf.NullValue
1115+
1116+derive instance genericTestAllTypesProto3_Oneof_field :: Prelude.Generic TestAllTypesProto3_Oneof_field _
1117+derive instance eqTestAllTypesProto3_Oneof_field :: Prelude.Eq TestAllTypesProto3_Oneof_field
1118+instance showTestAllTypesProto3_Oneof_field :: Prelude.Show TestAllTypesProto3_Oneof_field where show = Prelude.genericShow
1119+
1120+mergeTestAllTypesProto3_Oneof_field :: Prelude.Maybe TestAllTypesProto3_Oneof_field -> Prelude.Maybe TestAllTypesProto3_Oneof_field -> Prelude.Maybe TestAllTypesProto3_Oneof_field
1121+mergeTestAllTypesProto3_Oneof_field l r = case Prelude.Tuple l r of
1122+ Prelude.Tuple (Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_nested_message l')) (Prelude.Just (TestAllTypesProto3_Oneof_field_Oneof_nested_message r')) -> Prelude.map TestAllTypesProto3_Oneof_field_Oneof_nested_message $ Prelude.mergeWith mergeTestAllTypesProto3_NestedMessage (Prelude.Just l') (Prelude.Just r')
1123+ _ -> Prelude.alt l r
1124+
1125+mergeTestAllTypesProto3 :: TestAllTypesProto3 -> TestAllTypesProto3 -> TestAllTypesProto3
1126+mergeTestAllTypesProto3 (TestAllTypesProto3 l) (TestAllTypesProto3 r) = TestAllTypesProto3
1127+ { optional_int32: Prelude.alt l.optional_int32 r.optional_int32
1128+ , optional_int64: Prelude.alt l.optional_int64 r.optional_int64
1129+ , optional_uint32: Prelude.alt l.optional_uint32 r.optional_uint32
1130+ , optional_uint64: Prelude.alt l.optional_uint64 r.optional_uint64
1131+ , optional_sint32: Prelude.alt l.optional_sint32 r.optional_sint32
1132+ , optional_sint64: Prelude.alt l.optional_sint64 r.optional_sint64
1133+ , optional_fixed32: Prelude.alt l.optional_fixed32 r.optional_fixed32
1134+ , optional_fixed64: Prelude.alt l.optional_fixed64 r.optional_fixed64
1135+ , optional_sfixed32: Prelude.alt l.optional_sfixed32 r.optional_sfixed32
1136+ , optional_sfixed64: Prelude.alt l.optional_sfixed64 r.optional_sfixed64
1137+ , optional_float: Prelude.alt l.optional_float r.optional_float
1138+ , optional_double: Prelude.alt l.optional_double r.optional_double
1139+ , optional_bool: Prelude.alt l.optional_bool r.optional_bool
1140+ , optional_string: Prelude.alt l.optional_string r.optional_string
1141+ , optional_bytes: Prelude.alt l.optional_bytes r.optional_bytes
1142+ , optional_nested_message: Prelude.mergeWith mergeTestAllTypesProto3_NestedMessage l.optional_nested_message r.optional_nested_message
1143+ , optional_foreign_message: Prelude.mergeWith mergeForeignMessage l.optional_foreign_message r.optional_foreign_message
1144+ , optional_nested_enum: Prelude.alt l.optional_nested_enum r.optional_nested_enum
1145+ , optional_foreign_enum: Prelude.alt l.optional_foreign_enum r.optional_foreign_enum
1146+ , optional_aliased_enum: Prelude.alt l.optional_aliased_enum r.optional_aliased_enum
1147+ , optional_string_piece: Prelude.alt l.optional_string_piece r.optional_string_piece
1148+ , optional_cord: Prelude.alt l.optional_cord r.optional_cord
1149+ , recursive_message: Prelude.mergeWith mergeTestAllTypesProto3 l.recursive_message r.recursive_message
1150+ , repeated_int32: r.repeated_int32 <> l.repeated_int32
1151+ , repeated_int64: r.repeated_int64 <> l.repeated_int64
1152+ , repeated_uint32: r.repeated_uint32 <> l.repeated_uint32
1153+ , repeated_uint64: r.repeated_uint64 <> l.repeated_uint64
1154+ , repeated_sint32: r.repeated_sint32 <> l.repeated_sint32
1155+ , repeated_sint64: r.repeated_sint64 <> l.repeated_sint64
1156+ , repeated_fixed32: r.repeated_fixed32 <> l.repeated_fixed32
1157+ , repeated_fixed64: r.repeated_fixed64 <> l.repeated_fixed64
1158+ , repeated_sfixed32: r.repeated_sfixed32 <> l.repeated_sfixed32
1159+ , repeated_sfixed64: r.repeated_sfixed64 <> l.repeated_sfixed64
1160+ , repeated_float: r.repeated_float <> l.repeated_float
1161+ , repeated_double: r.repeated_double <> l.repeated_double
1162+ , repeated_bool: r.repeated_bool <> l.repeated_bool
1163+ , repeated_string: r.repeated_string <> l.repeated_string
1164+ , repeated_bytes: r.repeated_bytes <> l.repeated_bytes
1165+ , repeated_nested_message: r.repeated_nested_message <> l.repeated_nested_message
1166+ , repeated_foreign_message: r.repeated_foreign_message <> l.repeated_foreign_message
1167+ , repeated_nested_enum: r.repeated_nested_enum <> l.repeated_nested_enum
1168+ , repeated_foreign_enum: r.repeated_foreign_enum <> l.repeated_foreign_enum
1169+ , repeated_string_piece: r.repeated_string_piece <> l.repeated_string_piece
1170+ , repeated_cord: r.repeated_cord <> l.repeated_cord
1171+ , packed_int32: r.packed_int32 <> l.packed_int32
1172+ , packed_int64: r.packed_int64 <> l.packed_int64
1173+ , packed_uint32: r.packed_uint32 <> l.packed_uint32
1174+ , packed_uint64: r.packed_uint64 <> l.packed_uint64
1175+ , packed_sint32: r.packed_sint32 <> l.packed_sint32
1176+ , packed_sint64: r.packed_sint64 <> l.packed_sint64
1177+ , packed_fixed32: r.packed_fixed32 <> l.packed_fixed32
1178+ , packed_fixed64: r.packed_fixed64 <> l.packed_fixed64
1179+ , packed_sfixed32: r.packed_sfixed32 <> l.packed_sfixed32
1180+ , packed_sfixed64: r.packed_sfixed64 <> l.packed_sfixed64
1181+ , packed_float: r.packed_float <> l.packed_float
1182+ , packed_double: r.packed_double <> l.packed_double
1183+ , packed_bool: r.packed_bool <> l.packed_bool
1184+ , packed_nested_enum: r.packed_nested_enum <> l.packed_nested_enum
1185+ , unpacked_int32: r.unpacked_int32 <> l.unpacked_int32
1186+ , unpacked_int64: r.unpacked_int64 <> l.unpacked_int64
1187+ , unpacked_uint32: r.unpacked_uint32 <> l.unpacked_uint32
1188+ , unpacked_uint64: r.unpacked_uint64 <> l.unpacked_uint64
1189+ , unpacked_sint32: r.unpacked_sint32 <> l.unpacked_sint32
1190+ , unpacked_sint64: r.unpacked_sint64 <> l.unpacked_sint64
1191+ , unpacked_fixed32: r.unpacked_fixed32 <> l.unpacked_fixed32
1192+ , unpacked_fixed64: r.unpacked_fixed64 <> l.unpacked_fixed64
1193+ , unpacked_sfixed32: r.unpacked_sfixed32 <> l.unpacked_sfixed32
1194+ , unpacked_sfixed64: r.unpacked_sfixed64 <> l.unpacked_sfixed64
1195+ , unpacked_float: r.unpacked_float <> l.unpacked_float
1196+ , unpacked_double: r.unpacked_double <> l.unpacked_double
1197+ , unpacked_bool: r.unpacked_bool <> l.unpacked_bool
1198+ , unpacked_nested_enum: r.unpacked_nested_enum <> l.unpacked_nested_enum
1199+ , map_int32_int32: r.map_int32_int32 <> l.map_int32_int32
1200+ , map_int64_int64: r.map_int64_int64 <> l.map_int64_int64
1201+ , map_uint32_uint32: r.map_uint32_uint32 <> l.map_uint32_uint32
1202+ , map_uint64_uint64: r.map_uint64_uint64 <> l.map_uint64_uint64
1203+ , map_sint32_sint32: r.map_sint32_sint32 <> l.map_sint32_sint32
1204+ , map_sint64_sint64: r.map_sint64_sint64 <> l.map_sint64_sint64
1205+ , map_fixed32_fixed32: r.map_fixed32_fixed32 <> l.map_fixed32_fixed32
1206+ , map_fixed64_fixed64: r.map_fixed64_fixed64 <> l.map_fixed64_fixed64
1207+ , map_sfixed32_sfixed32: r.map_sfixed32_sfixed32 <> l.map_sfixed32_sfixed32
1208+ , map_sfixed64_sfixed64: r.map_sfixed64_sfixed64 <> l.map_sfixed64_sfixed64
1209+ , map_int32_float: r.map_int32_float <> l.map_int32_float
1210+ , map_int32_double: r.map_int32_double <> l.map_int32_double
1211+ , map_bool_bool: r.map_bool_bool <> l.map_bool_bool
1212+ , map_string_string: r.map_string_string <> l.map_string_string
1213+ , map_string_bytes: r.map_string_bytes <> l.map_string_bytes
1214+ , map_string_nested_message: r.map_string_nested_message <> l.map_string_nested_message
1215+ , map_string_foreign_message: r.map_string_foreign_message <> l.map_string_foreign_message
1216+ , map_string_nested_enum: r.map_string_nested_enum <> l.map_string_nested_enum
1217+ , map_string_foreign_enum: r.map_string_foreign_enum <> l.map_string_foreign_enum
1218+ , optional_bool_wrapper: Prelude.mergeWith Google.Protobuf.mergeBoolValue l.optional_bool_wrapper r.optional_bool_wrapper
1219+ , optional_int32_wrapper: Prelude.mergeWith Google.Protobuf.mergeInt32Value l.optional_int32_wrapper r.optional_int32_wrapper
1220+ , optional_int64_wrapper: Prelude.mergeWith Google.Protobuf.mergeInt64Value l.optional_int64_wrapper r.optional_int64_wrapper
1221+ , optional_uint32_wrapper: Prelude.mergeWith Google.Protobuf.mergeUInt32Value l.optional_uint32_wrapper r.optional_uint32_wrapper
1222+ , optional_uint64_wrapper: Prelude.mergeWith Google.Protobuf.mergeUInt64Value l.optional_uint64_wrapper r.optional_uint64_wrapper
1223+ , optional_float_wrapper: Prelude.mergeWith Google.Protobuf.mergeFloatValue l.optional_float_wrapper r.optional_float_wrapper
1224+ , optional_double_wrapper: Prelude.mergeWith Google.Protobuf.mergeDoubleValue l.optional_double_wrapper r.optional_double_wrapper
1225+ , optional_string_wrapper: Prelude.mergeWith Google.Protobuf.mergeStringValue l.optional_string_wrapper r.optional_string_wrapper
1226+ , optional_bytes_wrapper: Prelude.mergeWith Google.Protobuf.mergeBytesValue l.optional_bytes_wrapper r.optional_bytes_wrapper
1227+ , repeated_bool_wrapper: r.repeated_bool_wrapper <> l.repeated_bool_wrapper
1228+ , repeated_int32_wrapper: r.repeated_int32_wrapper <> l.repeated_int32_wrapper
1229+ , repeated_int64_wrapper: r.repeated_int64_wrapper <> l.repeated_int64_wrapper
1230+ , repeated_uint32_wrapper: r.repeated_uint32_wrapper <> l.repeated_uint32_wrapper
1231+ , repeated_uint64_wrapper: r.repeated_uint64_wrapper <> l.repeated_uint64_wrapper
1232+ , repeated_float_wrapper: r.repeated_float_wrapper <> l.repeated_float_wrapper
1233+ , repeated_double_wrapper: r.repeated_double_wrapper <> l.repeated_double_wrapper
1234+ , repeated_string_wrapper: r.repeated_string_wrapper <> l.repeated_string_wrapper
1235+ , repeated_bytes_wrapper: r.repeated_bytes_wrapper <> l.repeated_bytes_wrapper
1236+ , optional_duration: Prelude.mergeWith Google.Protobuf.mergeDuration l.optional_duration r.optional_duration
1237+ , optional_timestamp: Prelude.mergeWith Google.Protobuf.mergeTimestamp l.optional_timestamp r.optional_timestamp
1238+ , optional_field_mask: Prelude.mergeWith Google.Protobuf.mergeFieldMask l.optional_field_mask r.optional_field_mask
1239+ , optional_struct: Prelude.mergeWith Google.Protobuf.mergeStruct l.optional_struct r.optional_struct
1240+ , optional_any: Prelude.mergeWith Google.Protobuf.mergeAny l.optional_any r.optional_any
1241+ , optional_value: Prelude.mergeWith Google.Protobuf.mergeValue l.optional_value r.optional_value
1242+ , optional_null_value: Prelude.alt l.optional_null_value r.optional_null_value
1243+ , repeated_duration: r.repeated_duration <> l.repeated_duration
1244+ , repeated_timestamp: r.repeated_timestamp <> l.repeated_timestamp
1245+ , repeated_fieldmask: r.repeated_fieldmask <> l.repeated_fieldmask
1246+ , repeated_struct: r.repeated_struct <> l.repeated_struct
1247+ , repeated_any: r.repeated_any <> l.repeated_any
1248+ , repeated_value: r.repeated_value <> l.repeated_value
1249+ , repeated_list_value: r.repeated_list_value <> l.repeated_list_value
1250+ , fieldname1: Prelude.alt l.fieldname1 r.fieldname1
1251+ , field_name2: Prelude.alt l.field_name2 r.field_name2
1252+ , _field_name3: Prelude.alt l._field_name3 r._field_name3
1253+ , field__name4_: Prelude.alt l.field__name4_ r.field__name4_
1254+ , field0name5: Prelude.alt l.field0name5 r.field0name5
1255+ , field_0_name6: Prelude.alt l.field_0_name6 r.field_0_name6
1256+ , fieldName7: Prelude.alt l.fieldName7 r.fieldName7
1257+ , fieldName8: Prelude.alt l.fieldName8 r.fieldName8
1258+ , field_Name9: Prelude.alt l.field_Name9 r.field_Name9
1259+ , field_Name10: Prelude.alt l.field_Name10 r.field_Name10
1260+ , fIELD_NAME11: Prelude.alt l.fIELD_NAME11 r.fIELD_NAME11
1261+ , fIELD_name12: Prelude.alt l.fIELD_name12 r.fIELD_name12
1262+ , __field_name13: Prelude.alt l.__field_name13 r.__field_name13
1263+ , __Field_name14: Prelude.alt l.__Field_name14 r.__Field_name14
1264+ , field__name15: Prelude.alt l.field__name15 r.field__name15
1265+ , field__Name16: Prelude.alt l.field__Name16 r.field__Name16
1266+ , field_name17__: Prelude.alt l.field_name17__ r.field_name17__
1267+ , field_name18__: Prelude.alt l.field_name18__ r.field_name18__
1268+ , oneof_field: mergeTestAllTypesProto3_Oneof_field l.oneof_field r.oneof_field
1269+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1270+ }
1271+
1272+
1273+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage`
1274+newtype TestAllTypesProto3_NestedMessage = TestAllTypesProto3_NestedMessage TestAllTypesProto3_NestedMessageR
1275+type TestAllTypesProto3_NestedMessageRow =
1276+ ( a :: Prelude.Maybe Int
1277+ , corecursive :: Prelude.Maybe TestAllTypesProto3
1278+ , __unknown_fields :: Array Prelude.UnknownField
1279+ )
1280+type TestAllTypesProto3_NestedMessageR = Record TestAllTypesProto3_NestedMessageRow
1281+derive instance genericTestAllTypesProto3_NestedMessage :: Prelude.Generic TestAllTypesProto3_NestedMessage _
1282+derive instance newtypeTestAllTypesProto3_NestedMessage :: Prelude.Newtype TestAllTypesProto3_NestedMessage _
1283+derive instance eqTestAllTypesProto3_NestedMessage :: Prelude.Eq TestAllTypesProto3_NestedMessage
1284+instance showTestAllTypesProto3_NestedMessage :: Prelude.Show TestAllTypesProto3_NestedMessage where show x = Prelude.genericShow x
1285+
1286+putTestAllTypesProto3_NestedMessage :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_NestedMessage -> Prelude.PutM m Prelude.Unit
1287+putTestAllTypesProto3_NestedMessage (TestAllTypesProto3_NestedMessage r) = do
1288+ Prelude.putOptional 1 r.a Prelude.isDefault Prelude.encodeInt32Field
1289+ Prelude.putOptional 2 r.corecursive (\_ -> false) $ Prelude.putLenDel putTestAllTypesProto3
1290+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1291+
1292+parseTestAllTypesProto3_NestedMessage :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_NestedMessage
1293+parseTestAllTypesProto3_NestedMessage length = Prelude.label "NestedMessage / " $
1294+ Prelude.parseMessage TestAllTypesProto3_NestedMessage defaultTestAllTypesProto3_NestedMessage parseField length
1295+ where
1296+ parseField
1297+ :: Prelude.FieldNumberInt
1298+ -> Prelude.WireType
1299+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_NestedMessageR TestAllTypesProto3_NestedMessageR)
1300+ parseField 1 Prelude.VarInt = Prelude.label "a / " $ do
1301+ x <- Prelude.decodeInt32
1302+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "a") $ \_ -> Prelude.Just x
1303+ parseField 2 Prelude.LenDel = Prelude.label "corecursive / " $ do
1304+ x <- Prelude.parseLenDel parseTestAllTypesProto3
1305+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "corecursive") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeTestAllTypesProto3 x)
1306+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1307+
1308+defaultTestAllTypesProto3_NestedMessage :: TestAllTypesProto3_NestedMessageR
1309+defaultTestAllTypesProto3_NestedMessage =
1310+ { a: Prelude.Nothing
1311+ , corecursive: Prelude.Nothing
1312+ , __unknown_fields: []
1313+ }
1314+
1315+mkTestAllTypesProto3_NestedMessage :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_NestedMessageRow r3 => Prelude.Nub r3 TestAllTypesProto3_NestedMessageRow => Record r1 -> TestAllTypesProto3_NestedMessage
1316+mkTestAllTypesProto3_NestedMessage r = TestAllTypesProto3_NestedMessage $ Prelude.merge r defaultTestAllTypesProto3_NestedMessage
1317+
1318+mergeTestAllTypesProto3_NestedMessage :: TestAllTypesProto3_NestedMessage -> TestAllTypesProto3_NestedMessage -> TestAllTypesProto3_NestedMessage
1319+mergeTestAllTypesProto3_NestedMessage (TestAllTypesProto3_NestedMessage l) (TestAllTypesProto3_NestedMessage r) = TestAllTypesProto3_NestedMessage
1320+ { a: Prelude.alt l.a r.a
1321+ , corecursive: Prelude.mergeWith mergeTestAllTypesProto3 l.corecursive r.corecursive
1322+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1323+ }
1324+
1325+
1326+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32Int32Entry`
1327+newtype TestAllTypesProto3_MapInt32Int32Entry = TestAllTypesProto3_MapInt32Int32Entry TestAllTypesProto3_MapInt32Int32EntryR
1328+type TestAllTypesProto3_MapInt32Int32EntryRow =
1329+ ( key :: Prelude.Maybe Int
1330+ , value :: Prelude.Maybe Int
1331+ , __unknown_fields :: Array Prelude.UnknownField
1332+ )
1333+type TestAllTypesProto3_MapInt32Int32EntryR = Record TestAllTypesProto3_MapInt32Int32EntryRow
1334+derive instance genericTestAllTypesProto3_MapInt32Int32Entry :: Prelude.Generic TestAllTypesProto3_MapInt32Int32Entry _
1335+derive instance newtypeTestAllTypesProto3_MapInt32Int32Entry :: Prelude.Newtype TestAllTypesProto3_MapInt32Int32Entry _
1336+derive instance eqTestAllTypesProto3_MapInt32Int32Entry :: Prelude.Eq TestAllTypesProto3_MapInt32Int32Entry
1337+instance showTestAllTypesProto3_MapInt32Int32Entry :: Prelude.Show TestAllTypesProto3_MapInt32Int32Entry where show x = Prelude.genericShow x
1338+
1339+putTestAllTypesProto3_MapInt32Int32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapInt32Int32Entry -> Prelude.PutM m Prelude.Unit
1340+putTestAllTypesProto3_MapInt32Int32Entry (TestAllTypesProto3_MapInt32Int32Entry r) = do
1341+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeInt32Field
1342+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeInt32Field
1343+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1344+
1345+parseTestAllTypesProto3_MapInt32Int32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapInt32Int32Entry
1346+parseTestAllTypesProto3_MapInt32Int32Entry length = Prelude.label "MapInt32Int32Entry / " $
1347+ Prelude.parseMessage TestAllTypesProto3_MapInt32Int32Entry defaultTestAllTypesProto3_MapInt32Int32Entry parseField length
1348+ where
1349+ parseField
1350+ :: Prelude.FieldNumberInt
1351+ -> Prelude.WireType
1352+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapInt32Int32EntryR TestAllTypesProto3_MapInt32Int32EntryR)
1353+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1354+ x <- Prelude.decodeInt32
1355+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1356+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1357+ x <- Prelude.decodeInt32
1358+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1359+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1360+
1361+defaultTestAllTypesProto3_MapInt32Int32Entry :: TestAllTypesProto3_MapInt32Int32EntryR
1362+defaultTestAllTypesProto3_MapInt32Int32Entry =
1363+ { key: Prelude.Nothing
1364+ , value: Prelude.Nothing
1365+ , __unknown_fields: []
1366+ }
1367+
1368+mkTestAllTypesProto3_MapInt32Int32Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapInt32Int32EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapInt32Int32EntryRow => Record r1 -> TestAllTypesProto3_MapInt32Int32Entry
1369+mkTestAllTypesProto3_MapInt32Int32Entry r = TestAllTypesProto3_MapInt32Int32Entry $ Prelude.merge r defaultTestAllTypesProto3_MapInt32Int32Entry
1370+
1371+mergeTestAllTypesProto3_MapInt32Int32Entry :: TestAllTypesProto3_MapInt32Int32Entry -> TestAllTypesProto3_MapInt32Int32Entry -> TestAllTypesProto3_MapInt32Int32Entry
1372+mergeTestAllTypesProto3_MapInt32Int32Entry (TestAllTypesProto3_MapInt32Int32Entry l) (TestAllTypesProto3_MapInt32Int32Entry r) = TestAllTypesProto3_MapInt32Int32Entry
1373+ { key: Prelude.alt l.key r.key
1374+ , value: Prelude.alt l.value r.value
1375+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1376+ }
1377+
1378+
1379+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapInt64Int64Entry`
1380+newtype TestAllTypesProto3_MapInt64Int64Entry = TestAllTypesProto3_MapInt64Int64Entry TestAllTypesProto3_MapInt64Int64EntryR
1381+type TestAllTypesProto3_MapInt64Int64EntryRow =
1382+ ( key :: Prelude.Maybe Prelude.Int64
1383+ , value :: Prelude.Maybe Prelude.Int64
1384+ , __unknown_fields :: Array Prelude.UnknownField
1385+ )
1386+type TestAllTypesProto3_MapInt64Int64EntryR = Record TestAllTypesProto3_MapInt64Int64EntryRow
1387+derive instance genericTestAllTypesProto3_MapInt64Int64Entry :: Prelude.Generic TestAllTypesProto3_MapInt64Int64Entry _
1388+derive instance newtypeTestAllTypesProto3_MapInt64Int64Entry :: Prelude.Newtype TestAllTypesProto3_MapInt64Int64Entry _
1389+derive instance eqTestAllTypesProto3_MapInt64Int64Entry :: Prelude.Eq TestAllTypesProto3_MapInt64Int64Entry
1390+instance showTestAllTypesProto3_MapInt64Int64Entry :: Prelude.Show TestAllTypesProto3_MapInt64Int64Entry where show x = Prelude.genericShow x
1391+
1392+putTestAllTypesProto3_MapInt64Int64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapInt64Int64Entry -> Prelude.PutM m Prelude.Unit
1393+putTestAllTypesProto3_MapInt64Int64Entry (TestAllTypesProto3_MapInt64Int64Entry r) = do
1394+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeInt64Field
1395+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeInt64Field
1396+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1397+
1398+parseTestAllTypesProto3_MapInt64Int64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapInt64Int64Entry
1399+parseTestAllTypesProto3_MapInt64Int64Entry length = Prelude.label "MapInt64Int64Entry / " $
1400+ Prelude.parseMessage TestAllTypesProto3_MapInt64Int64Entry defaultTestAllTypesProto3_MapInt64Int64Entry parseField length
1401+ where
1402+ parseField
1403+ :: Prelude.FieldNumberInt
1404+ -> Prelude.WireType
1405+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapInt64Int64EntryR TestAllTypesProto3_MapInt64Int64EntryR)
1406+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1407+ x <- Prelude.decodeInt64
1408+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1409+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1410+ x <- Prelude.decodeInt64
1411+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1412+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1413+
1414+defaultTestAllTypesProto3_MapInt64Int64Entry :: TestAllTypesProto3_MapInt64Int64EntryR
1415+defaultTestAllTypesProto3_MapInt64Int64Entry =
1416+ { key: Prelude.Nothing
1417+ , value: Prelude.Nothing
1418+ , __unknown_fields: []
1419+ }
1420+
1421+mkTestAllTypesProto3_MapInt64Int64Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapInt64Int64EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapInt64Int64EntryRow => Record r1 -> TestAllTypesProto3_MapInt64Int64Entry
1422+mkTestAllTypesProto3_MapInt64Int64Entry r = TestAllTypesProto3_MapInt64Int64Entry $ Prelude.merge r defaultTestAllTypesProto3_MapInt64Int64Entry
1423+
1424+mergeTestAllTypesProto3_MapInt64Int64Entry :: TestAllTypesProto3_MapInt64Int64Entry -> TestAllTypesProto3_MapInt64Int64Entry -> TestAllTypesProto3_MapInt64Int64Entry
1425+mergeTestAllTypesProto3_MapInt64Int64Entry (TestAllTypesProto3_MapInt64Int64Entry l) (TestAllTypesProto3_MapInt64Int64Entry r) = TestAllTypesProto3_MapInt64Int64Entry
1426+ { key: Prelude.alt l.key r.key
1427+ , value: Prelude.alt l.value r.value
1428+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1429+ }
1430+
1431+
1432+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapUint32Uint32Entry`
1433+newtype TestAllTypesProto3_MapUint32Uint32Entry = TestAllTypesProto3_MapUint32Uint32Entry TestAllTypesProto3_MapUint32Uint32EntryR
1434+type TestAllTypesProto3_MapUint32Uint32EntryRow =
1435+ ( key :: Prelude.Maybe Prelude.UInt
1436+ , value :: Prelude.Maybe Prelude.UInt
1437+ , __unknown_fields :: Array Prelude.UnknownField
1438+ )
1439+type TestAllTypesProto3_MapUint32Uint32EntryR = Record TestAllTypesProto3_MapUint32Uint32EntryRow
1440+derive instance genericTestAllTypesProto3_MapUint32Uint32Entry :: Prelude.Generic TestAllTypesProto3_MapUint32Uint32Entry _
1441+derive instance newtypeTestAllTypesProto3_MapUint32Uint32Entry :: Prelude.Newtype TestAllTypesProto3_MapUint32Uint32Entry _
1442+derive instance eqTestAllTypesProto3_MapUint32Uint32Entry :: Prelude.Eq TestAllTypesProto3_MapUint32Uint32Entry
1443+instance showTestAllTypesProto3_MapUint32Uint32Entry :: Prelude.Show TestAllTypesProto3_MapUint32Uint32Entry where show x = Prelude.genericShow x
1444+
1445+putTestAllTypesProto3_MapUint32Uint32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapUint32Uint32Entry -> Prelude.PutM m Prelude.Unit
1446+putTestAllTypesProto3_MapUint32Uint32Entry (TestAllTypesProto3_MapUint32Uint32Entry r) = do
1447+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeUint32Field
1448+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeUint32Field
1449+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1450+
1451+parseTestAllTypesProto3_MapUint32Uint32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapUint32Uint32Entry
1452+parseTestAllTypesProto3_MapUint32Uint32Entry length = Prelude.label "MapUint32Uint32Entry / " $
1453+ Prelude.parseMessage TestAllTypesProto3_MapUint32Uint32Entry defaultTestAllTypesProto3_MapUint32Uint32Entry parseField length
1454+ where
1455+ parseField
1456+ :: Prelude.FieldNumberInt
1457+ -> Prelude.WireType
1458+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapUint32Uint32EntryR TestAllTypesProto3_MapUint32Uint32EntryR)
1459+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1460+ x <- Prelude.decodeUint32
1461+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1462+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1463+ x <- Prelude.decodeUint32
1464+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1465+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1466+
1467+defaultTestAllTypesProto3_MapUint32Uint32Entry :: TestAllTypesProto3_MapUint32Uint32EntryR
1468+defaultTestAllTypesProto3_MapUint32Uint32Entry =
1469+ { key: Prelude.Nothing
1470+ , value: Prelude.Nothing
1471+ , __unknown_fields: []
1472+ }
1473+
1474+mkTestAllTypesProto3_MapUint32Uint32Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapUint32Uint32EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapUint32Uint32EntryRow => Record r1 -> TestAllTypesProto3_MapUint32Uint32Entry
1475+mkTestAllTypesProto3_MapUint32Uint32Entry r = TestAllTypesProto3_MapUint32Uint32Entry $ Prelude.merge r defaultTestAllTypesProto3_MapUint32Uint32Entry
1476+
1477+mergeTestAllTypesProto3_MapUint32Uint32Entry :: TestAllTypesProto3_MapUint32Uint32Entry -> TestAllTypesProto3_MapUint32Uint32Entry -> TestAllTypesProto3_MapUint32Uint32Entry
1478+mergeTestAllTypesProto3_MapUint32Uint32Entry (TestAllTypesProto3_MapUint32Uint32Entry l) (TestAllTypesProto3_MapUint32Uint32Entry r) = TestAllTypesProto3_MapUint32Uint32Entry
1479+ { key: Prelude.alt l.key r.key
1480+ , value: Prelude.alt l.value r.value
1481+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1482+ }
1483+
1484+
1485+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapUint64Uint64Entry`
1486+newtype TestAllTypesProto3_MapUint64Uint64Entry = TestAllTypesProto3_MapUint64Uint64Entry TestAllTypesProto3_MapUint64Uint64EntryR
1487+type TestAllTypesProto3_MapUint64Uint64EntryRow =
1488+ ( key :: Prelude.Maybe Prelude.UInt64
1489+ , value :: Prelude.Maybe Prelude.UInt64
1490+ , __unknown_fields :: Array Prelude.UnknownField
1491+ )
1492+type TestAllTypesProto3_MapUint64Uint64EntryR = Record TestAllTypesProto3_MapUint64Uint64EntryRow
1493+derive instance genericTestAllTypesProto3_MapUint64Uint64Entry :: Prelude.Generic TestAllTypesProto3_MapUint64Uint64Entry _
1494+derive instance newtypeTestAllTypesProto3_MapUint64Uint64Entry :: Prelude.Newtype TestAllTypesProto3_MapUint64Uint64Entry _
1495+derive instance eqTestAllTypesProto3_MapUint64Uint64Entry :: Prelude.Eq TestAllTypesProto3_MapUint64Uint64Entry
1496+instance showTestAllTypesProto3_MapUint64Uint64Entry :: Prelude.Show TestAllTypesProto3_MapUint64Uint64Entry where show x = Prelude.genericShow x
1497+
1498+putTestAllTypesProto3_MapUint64Uint64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapUint64Uint64Entry -> Prelude.PutM m Prelude.Unit
1499+putTestAllTypesProto3_MapUint64Uint64Entry (TestAllTypesProto3_MapUint64Uint64Entry r) = do
1500+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeUint64Field
1501+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeUint64Field
1502+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1503+
1504+parseTestAllTypesProto3_MapUint64Uint64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapUint64Uint64Entry
1505+parseTestAllTypesProto3_MapUint64Uint64Entry length = Prelude.label "MapUint64Uint64Entry / " $
1506+ Prelude.parseMessage TestAllTypesProto3_MapUint64Uint64Entry defaultTestAllTypesProto3_MapUint64Uint64Entry parseField length
1507+ where
1508+ parseField
1509+ :: Prelude.FieldNumberInt
1510+ -> Prelude.WireType
1511+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapUint64Uint64EntryR TestAllTypesProto3_MapUint64Uint64EntryR)
1512+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1513+ x <- Prelude.decodeUint64
1514+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1515+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1516+ x <- Prelude.decodeUint64
1517+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1518+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1519+
1520+defaultTestAllTypesProto3_MapUint64Uint64Entry :: TestAllTypesProto3_MapUint64Uint64EntryR
1521+defaultTestAllTypesProto3_MapUint64Uint64Entry =
1522+ { key: Prelude.Nothing
1523+ , value: Prelude.Nothing
1524+ , __unknown_fields: []
1525+ }
1526+
1527+mkTestAllTypesProto3_MapUint64Uint64Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapUint64Uint64EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapUint64Uint64EntryRow => Record r1 -> TestAllTypesProto3_MapUint64Uint64Entry
1528+mkTestAllTypesProto3_MapUint64Uint64Entry r = TestAllTypesProto3_MapUint64Uint64Entry $ Prelude.merge r defaultTestAllTypesProto3_MapUint64Uint64Entry
1529+
1530+mergeTestAllTypesProto3_MapUint64Uint64Entry :: TestAllTypesProto3_MapUint64Uint64Entry -> TestAllTypesProto3_MapUint64Uint64Entry -> TestAllTypesProto3_MapUint64Uint64Entry
1531+mergeTestAllTypesProto3_MapUint64Uint64Entry (TestAllTypesProto3_MapUint64Uint64Entry l) (TestAllTypesProto3_MapUint64Uint64Entry r) = TestAllTypesProto3_MapUint64Uint64Entry
1532+ { key: Prelude.alt l.key r.key
1533+ , value: Prelude.alt l.value r.value
1534+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1535+ }
1536+
1537+
1538+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapSint32Sint32Entry`
1539+newtype TestAllTypesProto3_MapSint32Sint32Entry = TestAllTypesProto3_MapSint32Sint32Entry TestAllTypesProto3_MapSint32Sint32EntryR
1540+type TestAllTypesProto3_MapSint32Sint32EntryRow =
1541+ ( key :: Prelude.Maybe Int
1542+ , value :: Prelude.Maybe Int
1543+ , __unknown_fields :: Array Prelude.UnknownField
1544+ )
1545+type TestAllTypesProto3_MapSint32Sint32EntryR = Record TestAllTypesProto3_MapSint32Sint32EntryRow
1546+derive instance genericTestAllTypesProto3_MapSint32Sint32Entry :: Prelude.Generic TestAllTypesProto3_MapSint32Sint32Entry _
1547+derive instance newtypeTestAllTypesProto3_MapSint32Sint32Entry :: Prelude.Newtype TestAllTypesProto3_MapSint32Sint32Entry _
1548+derive instance eqTestAllTypesProto3_MapSint32Sint32Entry :: Prelude.Eq TestAllTypesProto3_MapSint32Sint32Entry
1549+instance showTestAllTypesProto3_MapSint32Sint32Entry :: Prelude.Show TestAllTypesProto3_MapSint32Sint32Entry where show x = Prelude.genericShow x
1550+
1551+putTestAllTypesProto3_MapSint32Sint32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapSint32Sint32Entry -> Prelude.PutM m Prelude.Unit
1552+putTestAllTypesProto3_MapSint32Sint32Entry (TestAllTypesProto3_MapSint32Sint32Entry r) = do
1553+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeSint32Field
1554+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeSint32Field
1555+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1556+
1557+parseTestAllTypesProto3_MapSint32Sint32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapSint32Sint32Entry
1558+parseTestAllTypesProto3_MapSint32Sint32Entry length = Prelude.label "MapSint32Sint32Entry / " $
1559+ Prelude.parseMessage TestAllTypesProto3_MapSint32Sint32Entry defaultTestAllTypesProto3_MapSint32Sint32Entry parseField length
1560+ where
1561+ parseField
1562+ :: Prelude.FieldNumberInt
1563+ -> Prelude.WireType
1564+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapSint32Sint32EntryR TestAllTypesProto3_MapSint32Sint32EntryR)
1565+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1566+ x <- Prelude.decodeSint32
1567+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1568+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1569+ x <- Prelude.decodeSint32
1570+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1571+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1572+
1573+defaultTestAllTypesProto3_MapSint32Sint32Entry :: TestAllTypesProto3_MapSint32Sint32EntryR
1574+defaultTestAllTypesProto3_MapSint32Sint32Entry =
1575+ { key: Prelude.Nothing
1576+ , value: Prelude.Nothing
1577+ , __unknown_fields: []
1578+ }
1579+
1580+mkTestAllTypesProto3_MapSint32Sint32Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapSint32Sint32EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapSint32Sint32EntryRow => Record r1 -> TestAllTypesProto3_MapSint32Sint32Entry
1581+mkTestAllTypesProto3_MapSint32Sint32Entry r = TestAllTypesProto3_MapSint32Sint32Entry $ Prelude.merge r defaultTestAllTypesProto3_MapSint32Sint32Entry
1582+
1583+mergeTestAllTypesProto3_MapSint32Sint32Entry :: TestAllTypesProto3_MapSint32Sint32Entry -> TestAllTypesProto3_MapSint32Sint32Entry -> TestAllTypesProto3_MapSint32Sint32Entry
1584+mergeTestAllTypesProto3_MapSint32Sint32Entry (TestAllTypesProto3_MapSint32Sint32Entry l) (TestAllTypesProto3_MapSint32Sint32Entry r) = TestAllTypesProto3_MapSint32Sint32Entry
1585+ { key: Prelude.alt l.key r.key
1586+ , value: Prelude.alt l.value r.value
1587+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1588+ }
1589+
1590+
1591+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapSint64Sint64Entry`
1592+newtype TestAllTypesProto3_MapSint64Sint64Entry = TestAllTypesProto3_MapSint64Sint64Entry TestAllTypesProto3_MapSint64Sint64EntryR
1593+type TestAllTypesProto3_MapSint64Sint64EntryRow =
1594+ ( key :: Prelude.Maybe Prelude.Int64
1595+ , value :: Prelude.Maybe Prelude.Int64
1596+ , __unknown_fields :: Array Prelude.UnknownField
1597+ )
1598+type TestAllTypesProto3_MapSint64Sint64EntryR = Record TestAllTypesProto3_MapSint64Sint64EntryRow
1599+derive instance genericTestAllTypesProto3_MapSint64Sint64Entry :: Prelude.Generic TestAllTypesProto3_MapSint64Sint64Entry _
1600+derive instance newtypeTestAllTypesProto3_MapSint64Sint64Entry :: Prelude.Newtype TestAllTypesProto3_MapSint64Sint64Entry _
1601+derive instance eqTestAllTypesProto3_MapSint64Sint64Entry :: Prelude.Eq TestAllTypesProto3_MapSint64Sint64Entry
1602+instance showTestAllTypesProto3_MapSint64Sint64Entry :: Prelude.Show TestAllTypesProto3_MapSint64Sint64Entry where show x = Prelude.genericShow x
1603+
1604+putTestAllTypesProto3_MapSint64Sint64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapSint64Sint64Entry -> Prelude.PutM m Prelude.Unit
1605+putTestAllTypesProto3_MapSint64Sint64Entry (TestAllTypesProto3_MapSint64Sint64Entry r) = do
1606+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeSint64Field
1607+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeSint64Field
1608+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1609+
1610+parseTestAllTypesProto3_MapSint64Sint64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapSint64Sint64Entry
1611+parseTestAllTypesProto3_MapSint64Sint64Entry length = Prelude.label "MapSint64Sint64Entry / " $
1612+ Prelude.parseMessage TestAllTypesProto3_MapSint64Sint64Entry defaultTestAllTypesProto3_MapSint64Sint64Entry parseField length
1613+ where
1614+ parseField
1615+ :: Prelude.FieldNumberInt
1616+ -> Prelude.WireType
1617+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapSint64Sint64EntryR TestAllTypesProto3_MapSint64Sint64EntryR)
1618+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1619+ x <- Prelude.decodeSint64
1620+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1621+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1622+ x <- Prelude.decodeSint64
1623+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1624+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1625+
1626+defaultTestAllTypesProto3_MapSint64Sint64Entry :: TestAllTypesProto3_MapSint64Sint64EntryR
1627+defaultTestAllTypesProto3_MapSint64Sint64Entry =
1628+ { key: Prelude.Nothing
1629+ , value: Prelude.Nothing
1630+ , __unknown_fields: []
1631+ }
1632+
1633+mkTestAllTypesProto3_MapSint64Sint64Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapSint64Sint64EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapSint64Sint64EntryRow => Record r1 -> TestAllTypesProto3_MapSint64Sint64Entry
1634+mkTestAllTypesProto3_MapSint64Sint64Entry r = TestAllTypesProto3_MapSint64Sint64Entry $ Prelude.merge r defaultTestAllTypesProto3_MapSint64Sint64Entry
1635+
1636+mergeTestAllTypesProto3_MapSint64Sint64Entry :: TestAllTypesProto3_MapSint64Sint64Entry -> TestAllTypesProto3_MapSint64Sint64Entry -> TestAllTypesProto3_MapSint64Sint64Entry
1637+mergeTestAllTypesProto3_MapSint64Sint64Entry (TestAllTypesProto3_MapSint64Sint64Entry l) (TestAllTypesProto3_MapSint64Sint64Entry r) = TestAllTypesProto3_MapSint64Sint64Entry
1638+ { key: Prelude.alt l.key r.key
1639+ , value: Prelude.alt l.value r.value
1640+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1641+ }
1642+
1643+
1644+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed32Fixed32Entry`
1645+newtype TestAllTypesProto3_MapFixed32Fixed32Entry = TestAllTypesProto3_MapFixed32Fixed32Entry TestAllTypesProto3_MapFixed32Fixed32EntryR
1646+type TestAllTypesProto3_MapFixed32Fixed32EntryRow =
1647+ ( key :: Prelude.Maybe Prelude.UInt
1648+ , value :: Prelude.Maybe Prelude.UInt
1649+ , __unknown_fields :: Array Prelude.UnknownField
1650+ )
1651+type TestAllTypesProto3_MapFixed32Fixed32EntryR = Record TestAllTypesProto3_MapFixed32Fixed32EntryRow
1652+derive instance genericTestAllTypesProto3_MapFixed32Fixed32Entry :: Prelude.Generic TestAllTypesProto3_MapFixed32Fixed32Entry _
1653+derive instance newtypeTestAllTypesProto3_MapFixed32Fixed32Entry :: Prelude.Newtype TestAllTypesProto3_MapFixed32Fixed32Entry _
1654+derive instance eqTestAllTypesProto3_MapFixed32Fixed32Entry :: Prelude.Eq TestAllTypesProto3_MapFixed32Fixed32Entry
1655+instance showTestAllTypesProto3_MapFixed32Fixed32Entry :: Prelude.Show TestAllTypesProto3_MapFixed32Fixed32Entry where show x = Prelude.genericShow x
1656+
1657+putTestAllTypesProto3_MapFixed32Fixed32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapFixed32Fixed32Entry -> Prelude.PutM m Prelude.Unit
1658+putTestAllTypesProto3_MapFixed32Fixed32Entry (TestAllTypesProto3_MapFixed32Fixed32Entry r) = do
1659+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeFixed32Field
1660+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeFixed32Field
1661+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1662+
1663+parseTestAllTypesProto3_MapFixed32Fixed32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapFixed32Fixed32Entry
1664+parseTestAllTypesProto3_MapFixed32Fixed32Entry length = Prelude.label "MapFixed32Fixed32Entry / " $
1665+ Prelude.parseMessage TestAllTypesProto3_MapFixed32Fixed32Entry defaultTestAllTypesProto3_MapFixed32Fixed32Entry parseField length
1666+ where
1667+ parseField
1668+ :: Prelude.FieldNumberInt
1669+ -> Prelude.WireType
1670+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapFixed32Fixed32EntryR TestAllTypesProto3_MapFixed32Fixed32EntryR)
1671+ parseField 1 Prelude.Bits32 = Prelude.label "key / " $ do
1672+ x <- Prelude.decodeFixed32
1673+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1674+ parseField 2 Prelude.Bits32 = Prelude.label "value / " $ do
1675+ x <- Prelude.decodeFixed32
1676+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1677+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1678+
1679+defaultTestAllTypesProto3_MapFixed32Fixed32Entry :: TestAllTypesProto3_MapFixed32Fixed32EntryR
1680+defaultTestAllTypesProto3_MapFixed32Fixed32Entry =
1681+ { key: Prelude.Nothing
1682+ , value: Prelude.Nothing
1683+ , __unknown_fields: []
1684+ }
1685+
1686+mkTestAllTypesProto3_MapFixed32Fixed32Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapFixed32Fixed32EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapFixed32Fixed32EntryRow => Record r1 -> TestAllTypesProto3_MapFixed32Fixed32Entry
1687+mkTestAllTypesProto3_MapFixed32Fixed32Entry r = TestAllTypesProto3_MapFixed32Fixed32Entry $ Prelude.merge r defaultTestAllTypesProto3_MapFixed32Fixed32Entry
1688+
1689+mergeTestAllTypesProto3_MapFixed32Fixed32Entry :: TestAllTypesProto3_MapFixed32Fixed32Entry -> TestAllTypesProto3_MapFixed32Fixed32Entry -> TestAllTypesProto3_MapFixed32Fixed32Entry
1690+mergeTestAllTypesProto3_MapFixed32Fixed32Entry (TestAllTypesProto3_MapFixed32Fixed32Entry l) (TestAllTypesProto3_MapFixed32Fixed32Entry r) = TestAllTypesProto3_MapFixed32Fixed32Entry
1691+ { key: Prelude.alt l.key r.key
1692+ , value: Prelude.alt l.value r.value
1693+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1694+ }
1695+
1696+
1697+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed64Fixed64Entry`
1698+newtype TestAllTypesProto3_MapFixed64Fixed64Entry = TestAllTypesProto3_MapFixed64Fixed64Entry TestAllTypesProto3_MapFixed64Fixed64EntryR
1699+type TestAllTypesProto3_MapFixed64Fixed64EntryRow =
1700+ ( key :: Prelude.Maybe Prelude.UInt64
1701+ , value :: Prelude.Maybe Prelude.UInt64
1702+ , __unknown_fields :: Array Prelude.UnknownField
1703+ )
1704+type TestAllTypesProto3_MapFixed64Fixed64EntryR = Record TestAllTypesProto3_MapFixed64Fixed64EntryRow
1705+derive instance genericTestAllTypesProto3_MapFixed64Fixed64Entry :: Prelude.Generic TestAllTypesProto3_MapFixed64Fixed64Entry _
1706+derive instance newtypeTestAllTypesProto3_MapFixed64Fixed64Entry :: Prelude.Newtype TestAllTypesProto3_MapFixed64Fixed64Entry _
1707+derive instance eqTestAllTypesProto3_MapFixed64Fixed64Entry :: Prelude.Eq TestAllTypesProto3_MapFixed64Fixed64Entry
1708+instance showTestAllTypesProto3_MapFixed64Fixed64Entry :: Prelude.Show TestAllTypesProto3_MapFixed64Fixed64Entry where show x = Prelude.genericShow x
1709+
1710+putTestAllTypesProto3_MapFixed64Fixed64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapFixed64Fixed64Entry -> Prelude.PutM m Prelude.Unit
1711+putTestAllTypesProto3_MapFixed64Fixed64Entry (TestAllTypesProto3_MapFixed64Fixed64Entry r) = do
1712+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeFixed64Field
1713+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeFixed64Field
1714+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1715+
1716+parseTestAllTypesProto3_MapFixed64Fixed64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapFixed64Fixed64Entry
1717+parseTestAllTypesProto3_MapFixed64Fixed64Entry length = Prelude.label "MapFixed64Fixed64Entry / " $
1718+ Prelude.parseMessage TestAllTypesProto3_MapFixed64Fixed64Entry defaultTestAllTypesProto3_MapFixed64Fixed64Entry parseField length
1719+ where
1720+ parseField
1721+ :: Prelude.FieldNumberInt
1722+ -> Prelude.WireType
1723+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapFixed64Fixed64EntryR TestAllTypesProto3_MapFixed64Fixed64EntryR)
1724+ parseField 1 Prelude.Bits64 = Prelude.label "key / " $ do
1725+ x <- Prelude.decodeFixed64
1726+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1727+ parseField 2 Prelude.Bits64 = Prelude.label "value / " $ do
1728+ x <- Prelude.decodeFixed64
1729+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1730+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1731+
1732+defaultTestAllTypesProto3_MapFixed64Fixed64Entry :: TestAllTypesProto3_MapFixed64Fixed64EntryR
1733+defaultTestAllTypesProto3_MapFixed64Fixed64Entry =
1734+ { key: Prelude.Nothing
1735+ , value: Prelude.Nothing
1736+ , __unknown_fields: []
1737+ }
1738+
1739+mkTestAllTypesProto3_MapFixed64Fixed64Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapFixed64Fixed64EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapFixed64Fixed64EntryRow => Record r1 -> TestAllTypesProto3_MapFixed64Fixed64Entry
1740+mkTestAllTypesProto3_MapFixed64Fixed64Entry r = TestAllTypesProto3_MapFixed64Fixed64Entry $ Prelude.merge r defaultTestAllTypesProto3_MapFixed64Fixed64Entry
1741+
1742+mergeTestAllTypesProto3_MapFixed64Fixed64Entry :: TestAllTypesProto3_MapFixed64Fixed64Entry -> TestAllTypesProto3_MapFixed64Fixed64Entry -> TestAllTypesProto3_MapFixed64Fixed64Entry
1743+mergeTestAllTypesProto3_MapFixed64Fixed64Entry (TestAllTypesProto3_MapFixed64Fixed64Entry l) (TestAllTypesProto3_MapFixed64Fixed64Entry r) = TestAllTypesProto3_MapFixed64Fixed64Entry
1744+ { key: Prelude.alt l.key r.key
1745+ , value: Prelude.alt l.value r.value
1746+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1747+ }
1748+
1749+
1750+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed32Sfixed32Entry`
1751+newtype TestAllTypesProto3_MapSfixed32Sfixed32Entry = TestAllTypesProto3_MapSfixed32Sfixed32Entry TestAllTypesProto3_MapSfixed32Sfixed32EntryR
1752+type TestAllTypesProto3_MapSfixed32Sfixed32EntryRow =
1753+ ( key :: Prelude.Maybe Int
1754+ , value :: Prelude.Maybe Int
1755+ , __unknown_fields :: Array Prelude.UnknownField
1756+ )
1757+type TestAllTypesProto3_MapSfixed32Sfixed32EntryR = Record TestAllTypesProto3_MapSfixed32Sfixed32EntryRow
1758+derive instance genericTestAllTypesProto3_MapSfixed32Sfixed32Entry :: Prelude.Generic TestAllTypesProto3_MapSfixed32Sfixed32Entry _
1759+derive instance newtypeTestAllTypesProto3_MapSfixed32Sfixed32Entry :: Prelude.Newtype TestAllTypesProto3_MapSfixed32Sfixed32Entry _
1760+derive instance eqTestAllTypesProto3_MapSfixed32Sfixed32Entry :: Prelude.Eq TestAllTypesProto3_MapSfixed32Sfixed32Entry
1761+instance showTestAllTypesProto3_MapSfixed32Sfixed32Entry :: Prelude.Show TestAllTypesProto3_MapSfixed32Sfixed32Entry where show x = Prelude.genericShow x
1762+
1763+putTestAllTypesProto3_MapSfixed32Sfixed32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapSfixed32Sfixed32Entry -> Prelude.PutM m Prelude.Unit
1764+putTestAllTypesProto3_MapSfixed32Sfixed32Entry (TestAllTypesProto3_MapSfixed32Sfixed32Entry r) = do
1765+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeSfixed32Field
1766+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeSfixed32Field
1767+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1768+
1769+parseTestAllTypesProto3_MapSfixed32Sfixed32Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapSfixed32Sfixed32Entry
1770+parseTestAllTypesProto3_MapSfixed32Sfixed32Entry length = Prelude.label "MapSfixed32Sfixed32Entry / " $
1771+ Prelude.parseMessage TestAllTypesProto3_MapSfixed32Sfixed32Entry defaultTestAllTypesProto3_MapSfixed32Sfixed32Entry parseField length
1772+ where
1773+ parseField
1774+ :: Prelude.FieldNumberInt
1775+ -> Prelude.WireType
1776+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapSfixed32Sfixed32EntryR TestAllTypesProto3_MapSfixed32Sfixed32EntryR)
1777+ parseField 1 Prelude.Bits32 = Prelude.label "key / " $ do
1778+ x <- Prelude.decodeSfixed32
1779+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1780+ parseField 2 Prelude.Bits32 = Prelude.label "value / " $ do
1781+ x <- Prelude.decodeSfixed32
1782+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1783+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1784+
1785+defaultTestAllTypesProto3_MapSfixed32Sfixed32Entry :: TestAllTypesProto3_MapSfixed32Sfixed32EntryR
1786+defaultTestAllTypesProto3_MapSfixed32Sfixed32Entry =
1787+ { key: Prelude.Nothing
1788+ , value: Prelude.Nothing
1789+ , __unknown_fields: []
1790+ }
1791+
1792+mkTestAllTypesProto3_MapSfixed32Sfixed32Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapSfixed32Sfixed32EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapSfixed32Sfixed32EntryRow => Record r1 -> TestAllTypesProto3_MapSfixed32Sfixed32Entry
1793+mkTestAllTypesProto3_MapSfixed32Sfixed32Entry r = TestAllTypesProto3_MapSfixed32Sfixed32Entry $ Prelude.merge r defaultTestAllTypesProto3_MapSfixed32Sfixed32Entry
1794+
1795+mergeTestAllTypesProto3_MapSfixed32Sfixed32Entry :: TestAllTypesProto3_MapSfixed32Sfixed32Entry -> TestAllTypesProto3_MapSfixed32Sfixed32Entry -> TestAllTypesProto3_MapSfixed32Sfixed32Entry
1796+mergeTestAllTypesProto3_MapSfixed32Sfixed32Entry (TestAllTypesProto3_MapSfixed32Sfixed32Entry l) (TestAllTypesProto3_MapSfixed32Sfixed32Entry r) = TestAllTypesProto3_MapSfixed32Sfixed32Entry
1797+ { key: Prelude.alt l.key r.key
1798+ , value: Prelude.alt l.value r.value
1799+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1800+ }
1801+
1802+
1803+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed64Sfixed64Entry`
1804+newtype TestAllTypesProto3_MapSfixed64Sfixed64Entry = TestAllTypesProto3_MapSfixed64Sfixed64Entry TestAllTypesProto3_MapSfixed64Sfixed64EntryR
1805+type TestAllTypesProto3_MapSfixed64Sfixed64EntryRow =
1806+ ( key :: Prelude.Maybe Prelude.Int64
1807+ , value :: Prelude.Maybe Prelude.Int64
1808+ , __unknown_fields :: Array Prelude.UnknownField
1809+ )
1810+type TestAllTypesProto3_MapSfixed64Sfixed64EntryR = Record TestAllTypesProto3_MapSfixed64Sfixed64EntryRow
1811+derive instance genericTestAllTypesProto3_MapSfixed64Sfixed64Entry :: Prelude.Generic TestAllTypesProto3_MapSfixed64Sfixed64Entry _
1812+derive instance newtypeTestAllTypesProto3_MapSfixed64Sfixed64Entry :: Prelude.Newtype TestAllTypesProto3_MapSfixed64Sfixed64Entry _
1813+derive instance eqTestAllTypesProto3_MapSfixed64Sfixed64Entry :: Prelude.Eq TestAllTypesProto3_MapSfixed64Sfixed64Entry
1814+instance showTestAllTypesProto3_MapSfixed64Sfixed64Entry :: Prelude.Show TestAllTypesProto3_MapSfixed64Sfixed64Entry where show x = Prelude.genericShow x
1815+
1816+putTestAllTypesProto3_MapSfixed64Sfixed64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapSfixed64Sfixed64Entry -> Prelude.PutM m Prelude.Unit
1817+putTestAllTypesProto3_MapSfixed64Sfixed64Entry (TestAllTypesProto3_MapSfixed64Sfixed64Entry r) = do
1818+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeSfixed64Field
1819+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeSfixed64Field
1820+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1821+
1822+parseTestAllTypesProto3_MapSfixed64Sfixed64Entry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapSfixed64Sfixed64Entry
1823+parseTestAllTypesProto3_MapSfixed64Sfixed64Entry length = Prelude.label "MapSfixed64Sfixed64Entry / " $
1824+ Prelude.parseMessage TestAllTypesProto3_MapSfixed64Sfixed64Entry defaultTestAllTypesProto3_MapSfixed64Sfixed64Entry parseField length
1825+ where
1826+ parseField
1827+ :: Prelude.FieldNumberInt
1828+ -> Prelude.WireType
1829+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapSfixed64Sfixed64EntryR TestAllTypesProto3_MapSfixed64Sfixed64EntryR)
1830+ parseField 1 Prelude.Bits64 = Prelude.label "key / " $ do
1831+ x <- Prelude.decodeSfixed64
1832+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1833+ parseField 2 Prelude.Bits64 = Prelude.label "value / " $ do
1834+ x <- Prelude.decodeSfixed64
1835+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1836+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1837+
1838+defaultTestAllTypesProto3_MapSfixed64Sfixed64Entry :: TestAllTypesProto3_MapSfixed64Sfixed64EntryR
1839+defaultTestAllTypesProto3_MapSfixed64Sfixed64Entry =
1840+ { key: Prelude.Nothing
1841+ , value: Prelude.Nothing
1842+ , __unknown_fields: []
1843+ }
1844+
1845+mkTestAllTypesProto3_MapSfixed64Sfixed64Entry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapSfixed64Sfixed64EntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapSfixed64Sfixed64EntryRow => Record r1 -> TestAllTypesProto3_MapSfixed64Sfixed64Entry
1846+mkTestAllTypesProto3_MapSfixed64Sfixed64Entry r = TestAllTypesProto3_MapSfixed64Sfixed64Entry $ Prelude.merge r defaultTestAllTypesProto3_MapSfixed64Sfixed64Entry
1847+
1848+mergeTestAllTypesProto3_MapSfixed64Sfixed64Entry :: TestAllTypesProto3_MapSfixed64Sfixed64Entry -> TestAllTypesProto3_MapSfixed64Sfixed64Entry -> TestAllTypesProto3_MapSfixed64Sfixed64Entry
1849+mergeTestAllTypesProto3_MapSfixed64Sfixed64Entry (TestAllTypesProto3_MapSfixed64Sfixed64Entry l) (TestAllTypesProto3_MapSfixed64Sfixed64Entry r) = TestAllTypesProto3_MapSfixed64Sfixed64Entry
1850+ { key: Prelude.alt l.key r.key
1851+ , value: Prelude.alt l.value r.value
1852+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1853+ }
1854+
1855+
1856+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32FloatEntry`
1857+newtype TestAllTypesProto3_MapInt32FloatEntry = TestAllTypesProto3_MapInt32FloatEntry TestAllTypesProto3_MapInt32FloatEntryR
1858+type TestAllTypesProto3_MapInt32FloatEntryRow =
1859+ ( key :: Prelude.Maybe Int
1860+ , value :: Prelude.Maybe Prelude.Float32
1861+ , __unknown_fields :: Array Prelude.UnknownField
1862+ )
1863+type TestAllTypesProto3_MapInt32FloatEntryR = Record TestAllTypesProto3_MapInt32FloatEntryRow
1864+derive instance genericTestAllTypesProto3_MapInt32FloatEntry :: Prelude.Generic TestAllTypesProto3_MapInt32FloatEntry _
1865+derive instance newtypeTestAllTypesProto3_MapInt32FloatEntry :: Prelude.Newtype TestAllTypesProto3_MapInt32FloatEntry _
1866+derive instance eqTestAllTypesProto3_MapInt32FloatEntry :: Prelude.Eq TestAllTypesProto3_MapInt32FloatEntry
1867+instance showTestAllTypesProto3_MapInt32FloatEntry :: Prelude.Show TestAllTypesProto3_MapInt32FloatEntry where show x = Prelude.genericShow x
1868+
1869+putTestAllTypesProto3_MapInt32FloatEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapInt32FloatEntry -> Prelude.PutM m Prelude.Unit
1870+putTestAllTypesProto3_MapInt32FloatEntry (TestAllTypesProto3_MapInt32FloatEntry r) = do
1871+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeInt32Field
1872+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeFloatField
1873+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1874+
1875+parseTestAllTypesProto3_MapInt32FloatEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapInt32FloatEntry
1876+parseTestAllTypesProto3_MapInt32FloatEntry length = Prelude.label "MapInt32FloatEntry / " $
1877+ Prelude.parseMessage TestAllTypesProto3_MapInt32FloatEntry defaultTestAllTypesProto3_MapInt32FloatEntry parseField length
1878+ where
1879+ parseField
1880+ :: Prelude.FieldNumberInt
1881+ -> Prelude.WireType
1882+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapInt32FloatEntryR TestAllTypesProto3_MapInt32FloatEntryR)
1883+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1884+ x <- Prelude.decodeInt32
1885+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1886+ parseField 2 Prelude.Bits32 = Prelude.label "value / " $ do
1887+ x <- Prelude.decodeFloat
1888+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1889+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1890+
1891+defaultTestAllTypesProto3_MapInt32FloatEntry :: TestAllTypesProto3_MapInt32FloatEntryR
1892+defaultTestAllTypesProto3_MapInt32FloatEntry =
1893+ { key: Prelude.Nothing
1894+ , value: Prelude.Nothing
1895+ , __unknown_fields: []
1896+ }
1897+
1898+mkTestAllTypesProto3_MapInt32FloatEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapInt32FloatEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapInt32FloatEntryRow => Record r1 -> TestAllTypesProto3_MapInt32FloatEntry
1899+mkTestAllTypesProto3_MapInt32FloatEntry r = TestAllTypesProto3_MapInt32FloatEntry $ Prelude.merge r defaultTestAllTypesProto3_MapInt32FloatEntry
1900+
1901+mergeTestAllTypesProto3_MapInt32FloatEntry :: TestAllTypesProto3_MapInt32FloatEntry -> TestAllTypesProto3_MapInt32FloatEntry -> TestAllTypesProto3_MapInt32FloatEntry
1902+mergeTestAllTypesProto3_MapInt32FloatEntry (TestAllTypesProto3_MapInt32FloatEntry l) (TestAllTypesProto3_MapInt32FloatEntry r) = TestAllTypesProto3_MapInt32FloatEntry
1903+ { key: Prelude.alt l.key r.key
1904+ , value: Prelude.alt l.value r.value
1905+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1906+ }
1907+
1908+
1909+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32DoubleEntry`
1910+newtype TestAllTypesProto3_MapInt32DoubleEntry = TestAllTypesProto3_MapInt32DoubleEntry TestAllTypesProto3_MapInt32DoubleEntryR
1911+type TestAllTypesProto3_MapInt32DoubleEntryRow =
1912+ ( key :: Prelude.Maybe Int
1913+ , value :: Prelude.Maybe Number
1914+ , __unknown_fields :: Array Prelude.UnknownField
1915+ )
1916+type TestAllTypesProto3_MapInt32DoubleEntryR = Record TestAllTypesProto3_MapInt32DoubleEntryRow
1917+derive instance genericTestAllTypesProto3_MapInt32DoubleEntry :: Prelude.Generic TestAllTypesProto3_MapInt32DoubleEntry _
1918+derive instance newtypeTestAllTypesProto3_MapInt32DoubleEntry :: Prelude.Newtype TestAllTypesProto3_MapInt32DoubleEntry _
1919+derive instance eqTestAllTypesProto3_MapInt32DoubleEntry :: Prelude.Eq TestAllTypesProto3_MapInt32DoubleEntry
1920+instance showTestAllTypesProto3_MapInt32DoubleEntry :: Prelude.Show TestAllTypesProto3_MapInt32DoubleEntry where show x = Prelude.genericShow x
1921+
1922+putTestAllTypesProto3_MapInt32DoubleEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapInt32DoubleEntry -> Prelude.PutM m Prelude.Unit
1923+putTestAllTypesProto3_MapInt32DoubleEntry (TestAllTypesProto3_MapInt32DoubleEntry r) = do
1924+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeInt32Field
1925+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeDoubleField
1926+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1927+
1928+parseTestAllTypesProto3_MapInt32DoubleEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapInt32DoubleEntry
1929+parseTestAllTypesProto3_MapInt32DoubleEntry length = Prelude.label "MapInt32DoubleEntry / " $
1930+ Prelude.parseMessage TestAllTypesProto3_MapInt32DoubleEntry defaultTestAllTypesProto3_MapInt32DoubleEntry parseField length
1931+ where
1932+ parseField
1933+ :: Prelude.FieldNumberInt
1934+ -> Prelude.WireType
1935+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapInt32DoubleEntryR TestAllTypesProto3_MapInt32DoubleEntryR)
1936+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1937+ x <- Prelude.decodeInt32
1938+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1939+ parseField 2 Prelude.Bits64 = Prelude.label "value / " $ do
1940+ x <- Prelude.decodeDouble
1941+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1942+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1943+
1944+defaultTestAllTypesProto3_MapInt32DoubleEntry :: TestAllTypesProto3_MapInt32DoubleEntryR
1945+defaultTestAllTypesProto3_MapInt32DoubleEntry =
1946+ { key: Prelude.Nothing
1947+ , value: Prelude.Nothing
1948+ , __unknown_fields: []
1949+ }
1950+
1951+mkTestAllTypesProto3_MapInt32DoubleEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapInt32DoubleEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapInt32DoubleEntryRow => Record r1 -> TestAllTypesProto3_MapInt32DoubleEntry
1952+mkTestAllTypesProto3_MapInt32DoubleEntry r = TestAllTypesProto3_MapInt32DoubleEntry $ Prelude.merge r defaultTestAllTypesProto3_MapInt32DoubleEntry
1953+
1954+mergeTestAllTypesProto3_MapInt32DoubleEntry :: TestAllTypesProto3_MapInt32DoubleEntry -> TestAllTypesProto3_MapInt32DoubleEntry -> TestAllTypesProto3_MapInt32DoubleEntry
1955+mergeTestAllTypesProto3_MapInt32DoubleEntry (TestAllTypesProto3_MapInt32DoubleEntry l) (TestAllTypesProto3_MapInt32DoubleEntry r) = TestAllTypesProto3_MapInt32DoubleEntry
1956+ { key: Prelude.alt l.key r.key
1957+ , value: Prelude.alt l.value r.value
1958+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
1959+ }
1960+
1961+
1962+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapBoolBoolEntry`
1963+newtype TestAllTypesProto3_MapBoolBoolEntry = TestAllTypesProto3_MapBoolBoolEntry TestAllTypesProto3_MapBoolBoolEntryR
1964+type TestAllTypesProto3_MapBoolBoolEntryRow =
1965+ ( key :: Prelude.Maybe Boolean
1966+ , value :: Prelude.Maybe Boolean
1967+ , __unknown_fields :: Array Prelude.UnknownField
1968+ )
1969+type TestAllTypesProto3_MapBoolBoolEntryR = Record TestAllTypesProto3_MapBoolBoolEntryRow
1970+derive instance genericTestAllTypesProto3_MapBoolBoolEntry :: Prelude.Generic TestAllTypesProto3_MapBoolBoolEntry _
1971+derive instance newtypeTestAllTypesProto3_MapBoolBoolEntry :: Prelude.Newtype TestAllTypesProto3_MapBoolBoolEntry _
1972+derive instance eqTestAllTypesProto3_MapBoolBoolEntry :: Prelude.Eq TestAllTypesProto3_MapBoolBoolEntry
1973+instance showTestAllTypesProto3_MapBoolBoolEntry :: Prelude.Show TestAllTypesProto3_MapBoolBoolEntry where show x = Prelude.genericShow x
1974+
1975+putTestAllTypesProto3_MapBoolBoolEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapBoolBoolEntry -> Prelude.PutM m Prelude.Unit
1976+putTestAllTypesProto3_MapBoolBoolEntry (TestAllTypesProto3_MapBoolBoolEntry r) = do
1977+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeBoolField
1978+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeBoolField
1979+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
1980+
1981+parseTestAllTypesProto3_MapBoolBoolEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapBoolBoolEntry
1982+parseTestAllTypesProto3_MapBoolBoolEntry length = Prelude.label "MapBoolBoolEntry / " $
1983+ Prelude.parseMessage TestAllTypesProto3_MapBoolBoolEntry defaultTestAllTypesProto3_MapBoolBoolEntry parseField length
1984+ where
1985+ parseField
1986+ :: Prelude.FieldNumberInt
1987+ -> Prelude.WireType
1988+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapBoolBoolEntryR TestAllTypesProto3_MapBoolBoolEntryR)
1989+ parseField 1 Prelude.VarInt = Prelude.label "key / " $ do
1990+ x <- Prelude.decodeBool
1991+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
1992+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
1993+ x <- Prelude.decodeBool
1994+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
1995+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
1996+
1997+defaultTestAllTypesProto3_MapBoolBoolEntry :: TestAllTypesProto3_MapBoolBoolEntryR
1998+defaultTestAllTypesProto3_MapBoolBoolEntry =
1999+ { key: Prelude.Nothing
2000+ , value: Prelude.Nothing
2001+ , __unknown_fields: []
2002+ }
2003+
2004+mkTestAllTypesProto3_MapBoolBoolEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapBoolBoolEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapBoolBoolEntryRow => Record r1 -> TestAllTypesProto3_MapBoolBoolEntry
2005+mkTestAllTypesProto3_MapBoolBoolEntry r = TestAllTypesProto3_MapBoolBoolEntry $ Prelude.merge r defaultTestAllTypesProto3_MapBoolBoolEntry
2006+
2007+mergeTestAllTypesProto3_MapBoolBoolEntry :: TestAllTypesProto3_MapBoolBoolEntry -> TestAllTypesProto3_MapBoolBoolEntry -> TestAllTypesProto3_MapBoolBoolEntry
2008+mergeTestAllTypesProto3_MapBoolBoolEntry (TestAllTypesProto3_MapBoolBoolEntry l) (TestAllTypesProto3_MapBoolBoolEntry r) = TestAllTypesProto3_MapBoolBoolEntry
2009+ { key: Prelude.alt l.key r.key
2010+ , value: Prelude.alt l.value r.value
2011+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2012+ }
2013+
2014+
2015+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringStringEntry`
2016+newtype TestAllTypesProto3_MapStringStringEntry = TestAllTypesProto3_MapStringStringEntry TestAllTypesProto3_MapStringStringEntryR
2017+type TestAllTypesProto3_MapStringStringEntryRow =
2018+ ( key :: Prelude.Maybe String
2019+ , value :: Prelude.Maybe String
2020+ , __unknown_fields :: Array Prelude.UnknownField
2021+ )
2022+type TestAllTypesProto3_MapStringStringEntryR = Record TestAllTypesProto3_MapStringStringEntryRow
2023+derive instance genericTestAllTypesProto3_MapStringStringEntry :: Prelude.Generic TestAllTypesProto3_MapStringStringEntry _
2024+derive instance newtypeTestAllTypesProto3_MapStringStringEntry :: Prelude.Newtype TestAllTypesProto3_MapStringStringEntry _
2025+derive instance eqTestAllTypesProto3_MapStringStringEntry :: Prelude.Eq TestAllTypesProto3_MapStringStringEntry
2026+instance showTestAllTypesProto3_MapStringStringEntry :: Prelude.Show TestAllTypesProto3_MapStringStringEntry where show x = Prelude.genericShow x
2027+
2028+putTestAllTypesProto3_MapStringStringEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringStringEntry -> Prelude.PutM m Prelude.Unit
2029+putTestAllTypesProto3_MapStringStringEntry (TestAllTypesProto3_MapStringStringEntry r) = do
2030+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2031+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeStringField
2032+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2033+
2034+parseTestAllTypesProto3_MapStringStringEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringStringEntry
2035+parseTestAllTypesProto3_MapStringStringEntry length = Prelude.label "MapStringStringEntry / " $
2036+ Prelude.parseMessage TestAllTypesProto3_MapStringStringEntry defaultTestAllTypesProto3_MapStringStringEntry parseField length
2037+ where
2038+ parseField
2039+ :: Prelude.FieldNumberInt
2040+ -> Prelude.WireType
2041+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringStringEntryR TestAllTypesProto3_MapStringStringEntryR)
2042+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2043+ x <- Prelude.decodeString
2044+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2045+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
2046+ x <- Prelude.decodeString
2047+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
2048+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2049+
2050+defaultTestAllTypesProto3_MapStringStringEntry :: TestAllTypesProto3_MapStringStringEntryR
2051+defaultTestAllTypesProto3_MapStringStringEntry =
2052+ { key: Prelude.Nothing
2053+ , value: Prelude.Nothing
2054+ , __unknown_fields: []
2055+ }
2056+
2057+mkTestAllTypesProto3_MapStringStringEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringStringEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringStringEntryRow => Record r1 -> TestAllTypesProto3_MapStringStringEntry
2058+mkTestAllTypesProto3_MapStringStringEntry r = TestAllTypesProto3_MapStringStringEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringStringEntry
2059+
2060+mergeTestAllTypesProto3_MapStringStringEntry :: TestAllTypesProto3_MapStringStringEntry -> TestAllTypesProto3_MapStringStringEntry -> TestAllTypesProto3_MapStringStringEntry
2061+mergeTestAllTypesProto3_MapStringStringEntry (TestAllTypesProto3_MapStringStringEntry l) (TestAllTypesProto3_MapStringStringEntry r) = TestAllTypesProto3_MapStringStringEntry
2062+ { key: Prelude.alt l.key r.key
2063+ , value: Prelude.alt l.value r.value
2064+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2065+ }
2066+
2067+
2068+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringBytesEntry`
2069+newtype TestAllTypesProto3_MapStringBytesEntry = TestAllTypesProto3_MapStringBytesEntry TestAllTypesProto3_MapStringBytesEntryR
2070+type TestAllTypesProto3_MapStringBytesEntryRow =
2071+ ( key :: Prelude.Maybe String
2072+ , value :: Prelude.Maybe Prelude.Bytes
2073+ , __unknown_fields :: Array Prelude.UnknownField
2074+ )
2075+type TestAllTypesProto3_MapStringBytesEntryR = Record TestAllTypesProto3_MapStringBytesEntryRow
2076+derive instance genericTestAllTypesProto3_MapStringBytesEntry :: Prelude.Generic TestAllTypesProto3_MapStringBytesEntry _
2077+derive instance newtypeTestAllTypesProto3_MapStringBytesEntry :: Prelude.Newtype TestAllTypesProto3_MapStringBytesEntry _
2078+derive instance eqTestAllTypesProto3_MapStringBytesEntry :: Prelude.Eq TestAllTypesProto3_MapStringBytesEntry
2079+instance showTestAllTypesProto3_MapStringBytesEntry :: Prelude.Show TestAllTypesProto3_MapStringBytesEntry where show x = Prelude.genericShow x
2080+
2081+putTestAllTypesProto3_MapStringBytesEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringBytesEntry -> Prelude.PutM m Prelude.Unit
2082+putTestAllTypesProto3_MapStringBytesEntry (TestAllTypesProto3_MapStringBytesEntry r) = do
2083+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2084+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.encodeBytesField
2085+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2086+
2087+parseTestAllTypesProto3_MapStringBytesEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringBytesEntry
2088+parseTestAllTypesProto3_MapStringBytesEntry length = Prelude.label "MapStringBytesEntry / " $
2089+ Prelude.parseMessage TestAllTypesProto3_MapStringBytesEntry defaultTestAllTypesProto3_MapStringBytesEntry parseField length
2090+ where
2091+ parseField
2092+ :: Prelude.FieldNumberInt
2093+ -> Prelude.WireType
2094+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringBytesEntryR TestAllTypesProto3_MapStringBytesEntryR)
2095+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2096+ x <- Prelude.decodeString
2097+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2098+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
2099+ x <- Prelude.decodeBytes
2100+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
2101+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2102+
2103+defaultTestAllTypesProto3_MapStringBytesEntry :: TestAllTypesProto3_MapStringBytesEntryR
2104+defaultTestAllTypesProto3_MapStringBytesEntry =
2105+ { key: Prelude.Nothing
2106+ , value: Prelude.Nothing
2107+ , __unknown_fields: []
2108+ }
2109+
2110+mkTestAllTypesProto3_MapStringBytesEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringBytesEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringBytesEntryRow => Record r1 -> TestAllTypesProto3_MapStringBytesEntry
2111+mkTestAllTypesProto3_MapStringBytesEntry r = TestAllTypesProto3_MapStringBytesEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringBytesEntry
2112+
2113+mergeTestAllTypesProto3_MapStringBytesEntry :: TestAllTypesProto3_MapStringBytesEntry -> TestAllTypesProto3_MapStringBytesEntry -> TestAllTypesProto3_MapStringBytesEntry
2114+mergeTestAllTypesProto3_MapStringBytesEntry (TestAllTypesProto3_MapStringBytesEntry l) (TestAllTypesProto3_MapStringBytesEntry r) = TestAllTypesProto3_MapStringBytesEntry
2115+ { key: Prelude.alt l.key r.key
2116+ , value: Prelude.alt l.value r.value
2117+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2118+ }
2119+
2120+
2121+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedMessageEntry`
2122+newtype TestAllTypesProto3_MapStringNestedMessageEntry = TestAllTypesProto3_MapStringNestedMessageEntry TestAllTypesProto3_MapStringNestedMessageEntryR
2123+type TestAllTypesProto3_MapStringNestedMessageEntryRow =
2124+ ( key :: Prelude.Maybe String
2125+ , value :: Prelude.Maybe TestAllTypesProto3_NestedMessage
2126+ , __unknown_fields :: Array Prelude.UnknownField
2127+ )
2128+type TestAllTypesProto3_MapStringNestedMessageEntryR = Record TestAllTypesProto3_MapStringNestedMessageEntryRow
2129+derive instance genericTestAllTypesProto3_MapStringNestedMessageEntry :: Prelude.Generic TestAllTypesProto3_MapStringNestedMessageEntry _
2130+derive instance newtypeTestAllTypesProto3_MapStringNestedMessageEntry :: Prelude.Newtype TestAllTypesProto3_MapStringNestedMessageEntry _
2131+derive instance eqTestAllTypesProto3_MapStringNestedMessageEntry :: Prelude.Eq TestAllTypesProto3_MapStringNestedMessageEntry
2132+instance showTestAllTypesProto3_MapStringNestedMessageEntry :: Prelude.Show TestAllTypesProto3_MapStringNestedMessageEntry where show x = Prelude.genericShow x
2133+
2134+putTestAllTypesProto3_MapStringNestedMessageEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringNestedMessageEntry -> Prelude.PutM m Prelude.Unit
2135+putTestAllTypesProto3_MapStringNestedMessageEntry (TestAllTypesProto3_MapStringNestedMessageEntry r) = do
2136+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2137+ Prelude.putOptional 2 r.value (\_ -> false) $ Prelude.putLenDel putTestAllTypesProto3_NestedMessage
2138+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2139+
2140+parseTestAllTypesProto3_MapStringNestedMessageEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringNestedMessageEntry
2141+parseTestAllTypesProto3_MapStringNestedMessageEntry length = Prelude.label "MapStringNestedMessageEntry / " $
2142+ Prelude.parseMessage TestAllTypesProto3_MapStringNestedMessageEntry defaultTestAllTypesProto3_MapStringNestedMessageEntry parseField length
2143+ where
2144+ parseField
2145+ :: Prelude.FieldNumberInt
2146+ -> Prelude.WireType
2147+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringNestedMessageEntryR TestAllTypesProto3_MapStringNestedMessageEntryR)
2148+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2149+ x <- Prelude.decodeString
2150+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2151+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
2152+ x <- Prelude.parseLenDel parseTestAllTypesProto3_NestedMessage
2153+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeTestAllTypesProto3_NestedMessage x)
2154+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2155+
2156+defaultTestAllTypesProto3_MapStringNestedMessageEntry :: TestAllTypesProto3_MapStringNestedMessageEntryR
2157+defaultTestAllTypesProto3_MapStringNestedMessageEntry =
2158+ { key: Prelude.Nothing
2159+ , value: Prelude.Nothing
2160+ , __unknown_fields: []
2161+ }
2162+
2163+mkTestAllTypesProto3_MapStringNestedMessageEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringNestedMessageEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringNestedMessageEntryRow => Record r1 -> TestAllTypesProto3_MapStringNestedMessageEntry
2164+mkTestAllTypesProto3_MapStringNestedMessageEntry r = TestAllTypesProto3_MapStringNestedMessageEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringNestedMessageEntry
2165+
2166+mergeTestAllTypesProto3_MapStringNestedMessageEntry :: TestAllTypesProto3_MapStringNestedMessageEntry -> TestAllTypesProto3_MapStringNestedMessageEntry -> TestAllTypesProto3_MapStringNestedMessageEntry
2167+mergeTestAllTypesProto3_MapStringNestedMessageEntry (TestAllTypesProto3_MapStringNestedMessageEntry l) (TestAllTypesProto3_MapStringNestedMessageEntry r) = TestAllTypesProto3_MapStringNestedMessageEntry
2168+ { key: Prelude.alt l.key r.key
2169+ , value: Prelude.mergeWith mergeTestAllTypesProto3_NestedMessage l.value r.value
2170+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2171+ }
2172+
2173+
2174+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignMessageEntry`
2175+newtype TestAllTypesProto3_MapStringForeignMessageEntry = TestAllTypesProto3_MapStringForeignMessageEntry TestAllTypesProto3_MapStringForeignMessageEntryR
2176+type TestAllTypesProto3_MapStringForeignMessageEntryRow =
2177+ ( key :: Prelude.Maybe String
2178+ , value :: Prelude.Maybe ForeignMessage
2179+ , __unknown_fields :: Array Prelude.UnknownField
2180+ )
2181+type TestAllTypesProto3_MapStringForeignMessageEntryR = Record TestAllTypesProto3_MapStringForeignMessageEntryRow
2182+derive instance genericTestAllTypesProto3_MapStringForeignMessageEntry :: Prelude.Generic TestAllTypesProto3_MapStringForeignMessageEntry _
2183+derive instance newtypeTestAllTypesProto3_MapStringForeignMessageEntry :: Prelude.Newtype TestAllTypesProto3_MapStringForeignMessageEntry _
2184+derive instance eqTestAllTypesProto3_MapStringForeignMessageEntry :: Prelude.Eq TestAllTypesProto3_MapStringForeignMessageEntry
2185+instance showTestAllTypesProto3_MapStringForeignMessageEntry :: Prelude.Show TestAllTypesProto3_MapStringForeignMessageEntry where show x = Prelude.genericShow x
2186+
2187+putTestAllTypesProto3_MapStringForeignMessageEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringForeignMessageEntry -> Prelude.PutM m Prelude.Unit
2188+putTestAllTypesProto3_MapStringForeignMessageEntry (TestAllTypesProto3_MapStringForeignMessageEntry r) = do
2189+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2190+ Prelude.putOptional 2 r.value (\_ -> false) $ Prelude.putLenDel putForeignMessage
2191+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2192+
2193+parseTestAllTypesProto3_MapStringForeignMessageEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringForeignMessageEntry
2194+parseTestAllTypesProto3_MapStringForeignMessageEntry length = Prelude.label "MapStringForeignMessageEntry / " $
2195+ Prelude.parseMessage TestAllTypesProto3_MapStringForeignMessageEntry defaultTestAllTypesProto3_MapStringForeignMessageEntry parseField length
2196+ where
2197+ parseField
2198+ :: Prelude.FieldNumberInt
2199+ -> Prelude.WireType
2200+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringForeignMessageEntryR TestAllTypesProto3_MapStringForeignMessageEntryR)
2201+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2202+ x <- Prelude.decodeString
2203+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2204+ parseField 2 Prelude.LenDel = Prelude.label "value / " $ do
2205+ x <- Prelude.parseLenDel parseForeignMessage
2206+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ Prelude.Just Prelude.<<< Prelude.maybe x (mergeForeignMessage x)
2207+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2208+
2209+defaultTestAllTypesProto3_MapStringForeignMessageEntry :: TestAllTypesProto3_MapStringForeignMessageEntryR
2210+defaultTestAllTypesProto3_MapStringForeignMessageEntry =
2211+ { key: Prelude.Nothing
2212+ , value: Prelude.Nothing
2213+ , __unknown_fields: []
2214+ }
2215+
2216+mkTestAllTypesProto3_MapStringForeignMessageEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringForeignMessageEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringForeignMessageEntryRow => Record r1 -> TestAllTypesProto3_MapStringForeignMessageEntry
2217+mkTestAllTypesProto3_MapStringForeignMessageEntry r = TestAllTypesProto3_MapStringForeignMessageEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringForeignMessageEntry
2218+
2219+mergeTestAllTypesProto3_MapStringForeignMessageEntry :: TestAllTypesProto3_MapStringForeignMessageEntry -> TestAllTypesProto3_MapStringForeignMessageEntry -> TestAllTypesProto3_MapStringForeignMessageEntry
2220+mergeTestAllTypesProto3_MapStringForeignMessageEntry (TestAllTypesProto3_MapStringForeignMessageEntry l) (TestAllTypesProto3_MapStringForeignMessageEntry r) = TestAllTypesProto3_MapStringForeignMessageEntry
2221+ { key: Prelude.alt l.key r.key
2222+ , value: Prelude.mergeWith mergeForeignMessage l.value r.value
2223+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2224+ }
2225+
2226+
2227+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedEnumEntry`
2228+newtype TestAllTypesProto3_MapStringNestedEnumEntry = TestAllTypesProto3_MapStringNestedEnumEntry TestAllTypesProto3_MapStringNestedEnumEntryR
2229+type TestAllTypesProto3_MapStringNestedEnumEntryRow =
2230+ ( key :: Prelude.Maybe String
2231+ , value :: Prelude.Maybe TestAllTypesProto3_NestedEnum
2232+ , __unknown_fields :: Array Prelude.UnknownField
2233+ )
2234+type TestAllTypesProto3_MapStringNestedEnumEntryR = Record TestAllTypesProto3_MapStringNestedEnumEntryRow
2235+derive instance genericTestAllTypesProto3_MapStringNestedEnumEntry :: Prelude.Generic TestAllTypesProto3_MapStringNestedEnumEntry _
2236+derive instance newtypeTestAllTypesProto3_MapStringNestedEnumEntry :: Prelude.Newtype TestAllTypesProto3_MapStringNestedEnumEntry _
2237+derive instance eqTestAllTypesProto3_MapStringNestedEnumEntry :: Prelude.Eq TestAllTypesProto3_MapStringNestedEnumEntry
2238+instance showTestAllTypesProto3_MapStringNestedEnumEntry :: Prelude.Show TestAllTypesProto3_MapStringNestedEnumEntry where show x = Prelude.genericShow x
2239+
2240+putTestAllTypesProto3_MapStringNestedEnumEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringNestedEnumEntry -> Prelude.PutM m Prelude.Unit
2241+putTestAllTypesProto3_MapStringNestedEnumEntry (TestAllTypesProto3_MapStringNestedEnumEntry r) = do
2242+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2243+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.putEnumField
2244+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2245+
2246+parseTestAllTypesProto3_MapStringNestedEnumEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringNestedEnumEntry
2247+parseTestAllTypesProto3_MapStringNestedEnumEntry length = Prelude.label "MapStringNestedEnumEntry / " $
2248+ Prelude.parseMessage TestAllTypesProto3_MapStringNestedEnumEntry defaultTestAllTypesProto3_MapStringNestedEnumEntry parseField length
2249+ where
2250+ parseField
2251+ :: Prelude.FieldNumberInt
2252+ -> Prelude.WireType
2253+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringNestedEnumEntryR TestAllTypesProto3_MapStringNestedEnumEntryR)
2254+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2255+ x <- Prelude.decodeString
2256+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2257+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
2258+ x <- Prelude.parseEnum
2259+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
2260+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2261+
2262+defaultTestAllTypesProto3_MapStringNestedEnumEntry :: TestAllTypesProto3_MapStringNestedEnumEntryR
2263+defaultTestAllTypesProto3_MapStringNestedEnumEntry =
2264+ { key: Prelude.Nothing
2265+ , value: Prelude.Nothing
2266+ , __unknown_fields: []
2267+ }
2268+
2269+mkTestAllTypesProto3_MapStringNestedEnumEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringNestedEnumEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringNestedEnumEntryRow => Record r1 -> TestAllTypesProto3_MapStringNestedEnumEntry
2270+mkTestAllTypesProto3_MapStringNestedEnumEntry r = TestAllTypesProto3_MapStringNestedEnumEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringNestedEnumEntry
2271+
2272+mergeTestAllTypesProto3_MapStringNestedEnumEntry :: TestAllTypesProto3_MapStringNestedEnumEntry -> TestAllTypesProto3_MapStringNestedEnumEntry -> TestAllTypesProto3_MapStringNestedEnumEntry
2273+mergeTestAllTypesProto3_MapStringNestedEnumEntry (TestAllTypesProto3_MapStringNestedEnumEntry l) (TestAllTypesProto3_MapStringNestedEnumEntry r) = TestAllTypesProto3_MapStringNestedEnumEntry
2274+ { key: Prelude.alt l.key r.key
2275+ , value: Prelude.alt l.value r.value
2276+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2277+ }
2278+
2279+
2280+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignEnumEntry`
2281+newtype TestAllTypesProto3_MapStringForeignEnumEntry = TestAllTypesProto3_MapStringForeignEnumEntry TestAllTypesProto3_MapStringForeignEnumEntryR
2282+type TestAllTypesProto3_MapStringForeignEnumEntryRow =
2283+ ( key :: Prelude.Maybe String
2284+ , value :: Prelude.Maybe ForeignEnum
2285+ , __unknown_fields :: Array Prelude.UnknownField
2286+ )
2287+type TestAllTypesProto3_MapStringForeignEnumEntryR = Record TestAllTypesProto3_MapStringForeignEnumEntryRow
2288+derive instance genericTestAllTypesProto3_MapStringForeignEnumEntry :: Prelude.Generic TestAllTypesProto3_MapStringForeignEnumEntry _
2289+derive instance newtypeTestAllTypesProto3_MapStringForeignEnumEntry :: Prelude.Newtype TestAllTypesProto3_MapStringForeignEnumEntry _
2290+derive instance eqTestAllTypesProto3_MapStringForeignEnumEntry :: Prelude.Eq TestAllTypesProto3_MapStringForeignEnumEntry
2291+instance showTestAllTypesProto3_MapStringForeignEnumEntry :: Prelude.Show TestAllTypesProto3_MapStringForeignEnumEntry where show x = Prelude.genericShow x
2292+
2293+putTestAllTypesProto3_MapStringForeignEnumEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => TestAllTypesProto3_MapStringForeignEnumEntry -> Prelude.PutM m Prelude.Unit
2294+putTestAllTypesProto3_MapStringForeignEnumEntry (TestAllTypesProto3_MapStringForeignEnumEntry r) = do
2295+ Prelude.putOptional 1 r.key Prelude.isDefault Prelude.encodeStringField
2296+ Prelude.putOptional 2 r.value Prelude.isDefault Prelude.putEnumField
2297+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2298+
2299+parseTestAllTypesProto3_MapStringForeignEnumEntry :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m TestAllTypesProto3_MapStringForeignEnumEntry
2300+parseTestAllTypesProto3_MapStringForeignEnumEntry length = Prelude.label "MapStringForeignEnumEntry / " $
2301+ Prelude.parseMessage TestAllTypesProto3_MapStringForeignEnumEntry defaultTestAllTypesProto3_MapStringForeignEnumEntry parseField length
2302+ where
2303+ parseField
2304+ :: Prelude.FieldNumberInt
2305+ -> Prelude.WireType
2306+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TestAllTypesProto3_MapStringForeignEnumEntryR TestAllTypesProto3_MapStringForeignEnumEntryR)
2307+ parseField 1 Prelude.LenDel = Prelude.label "key / " $ do
2308+ x <- Prelude.decodeString
2309+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "key") $ \_ -> Prelude.Just x
2310+ parseField 2 Prelude.VarInt = Prelude.label "value / " $ do
2311+ x <- Prelude.parseEnum
2312+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
2313+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2314+
2315+defaultTestAllTypesProto3_MapStringForeignEnumEntry :: TestAllTypesProto3_MapStringForeignEnumEntryR
2316+defaultTestAllTypesProto3_MapStringForeignEnumEntry =
2317+ { key: Prelude.Nothing
2318+ , value: Prelude.Nothing
2319+ , __unknown_fields: []
2320+ }
2321+
2322+mkTestAllTypesProto3_MapStringForeignEnumEntry :: forall r1 r3. Prelude.Union r1 TestAllTypesProto3_MapStringForeignEnumEntryRow r3 => Prelude.Nub r3 TestAllTypesProto3_MapStringForeignEnumEntryRow => Record r1 -> TestAllTypesProto3_MapStringForeignEnumEntry
2323+mkTestAllTypesProto3_MapStringForeignEnumEntry r = TestAllTypesProto3_MapStringForeignEnumEntry $ Prelude.merge r defaultTestAllTypesProto3_MapStringForeignEnumEntry
2324+
2325+mergeTestAllTypesProto3_MapStringForeignEnumEntry :: TestAllTypesProto3_MapStringForeignEnumEntry -> TestAllTypesProto3_MapStringForeignEnumEntry -> TestAllTypesProto3_MapStringForeignEnumEntry
2326+mergeTestAllTypesProto3_MapStringForeignEnumEntry (TestAllTypesProto3_MapStringForeignEnumEntry l) (TestAllTypesProto3_MapStringForeignEnumEntry r) = TestAllTypesProto3_MapStringForeignEnumEntry
2327+ { key: Prelude.alt l.key r.key
2328+ , value: Prelude.alt l.value r.value
2329+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2330+ }
2331+
2332+
2333+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.ForeignMessage`
2334+newtype ForeignMessage = ForeignMessage ForeignMessageR
2335+type ForeignMessageRow =
2336+ ( c :: Prelude.Maybe Int
2337+ , __unknown_fields :: Array Prelude.UnknownField
2338+ )
2339+type ForeignMessageR = Record ForeignMessageRow
2340+derive instance genericForeignMessage :: Prelude.Generic ForeignMessage _
2341+derive instance newtypeForeignMessage :: Prelude.Newtype ForeignMessage _
2342+derive instance eqForeignMessage :: Prelude.Eq ForeignMessage
2343+instance showForeignMessage :: Prelude.Show ForeignMessage where show x = Prelude.genericShow x
2344+
2345+putForeignMessage :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => ForeignMessage -> Prelude.PutM m Prelude.Unit
2346+putForeignMessage (ForeignMessage r) = do
2347+ Prelude.putOptional 1 r.c Prelude.isDefault Prelude.encodeInt32Field
2348+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2349+
2350+parseForeignMessage :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m ForeignMessage
2351+parseForeignMessage length = Prelude.label "ForeignMessage / " $
2352+ Prelude.parseMessage ForeignMessage defaultForeignMessage parseField length
2353+ where
2354+ parseField
2355+ :: Prelude.FieldNumberInt
2356+ -> Prelude.WireType
2357+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder ForeignMessageR ForeignMessageR)
2358+ parseField 1 Prelude.VarInt = Prelude.label "c / " $ do
2359+ x <- Prelude.decodeInt32
2360+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "c") $ \_ -> Prelude.Just x
2361+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2362+
2363+defaultForeignMessage :: ForeignMessageR
2364+defaultForeignMessage =
2365+ { c: Prelude.Nothing
2366+ , __unknown_fields: []
2367+ }
2368+
2369+mkForeignMessage :: forall r1 r3. Prelude.Union r1 ForeignMessageRow r3 => Prelude.Nub r3 ForeignMessageRow => Record r1 -> ForeignMessage
2370+mkForeignMessage r = ForeignMessage $ Prelude.merge r defaultForeignMessage
2371+
2372+mergeForeignMessage :: ForeignMessage -> ForeignMessage -> ForeignMessage
2373+mergeForeignMessage (ForeignMessage l) (ForeignMessage r) = ForeignMessage
2374+ { c: Prelude.alt l.c r.c
2375+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2376+ }
2377+
2378+
2379+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.NullHypothesisProto3`
2380+newtype NullHypothesisProto3 = NullHypothesisProto3 NullHypothesisProto3R
2381+type NullHypothesisProto3Row =
2382+ ( __unknown_fields :: Array Prelude.UnknownField
2383+ )
2384+type NullHypothesisProto3R = Record NullHypothesisProto3Row
2385+derive instance genericNullHypothesisProto3 :: Prelude.Generic NullHypothesisProto3 _
2386+derive instance newtypeNullHypothesisProto3 :: Prelude.Newtype NullHypothesisProto3 _
2387+derive instance eqNullHypothesisProto3 :: Prelude.Eq NullHypothesisProto3
2388+instance showNullHypothesisProto3 :: Prelude.Show NullHypothesisProto3 where show x = Prelude.genericShow x
2389+
2390+putNullHypothesisProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => NullHypothesisProto3 -> Prelude.PutM m Prelude.Unit
2391+putNullHypothesisProto3 (NullHypothesisProto3 r) = do
2392+
2393+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2394+
2395+parseNullHypothesisProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m NullHypothesisProto3
2396+parseNullHypothesisProto3 length = Prelude.label "NullHypothesisProto3 / " $
2397+ Prelude.parseMessage NullHypothesisProto3 defaultNullHypothesisProto3 parseField length
2398+ where
2399+ parseField
2400+ :: Prelude.FieldNumberInt
2401+ -> Prelude.WireType
2402+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder NullHypothesisProto3R NullHypothesisProto3R)
2403+
2404+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2405+
2406+defaultNullHypothesisProto3 :: NullHypothesisProto3R
2407+defaultNullHypothesisProto3 =
2408+ { __unknown_fields: []
2409+ }
2410+
2411+mkNullHypothesisProto3 :: forall r1 r3. Prelude.Union r1 NullHypothesisProto3Row r3 => Prelude.Nub r3 NullHypothesisProto3Row => Record r1 -> NullHypothesisProto3
2412+mkNullHypothesisProto3 r = NullHypothesisProto3 $ Prelude.merge r defaultNullHypothesisProto3
2413+
2414+mergeNullHypothesisProto3 :: NullHypothesisProto3 -> NullHypothesisProto3 -> NullHypothesisProto3
2415+mergeNullHypothesisProto3 (NullHypothesisProto3 l) (NullHypothesisProto3 r) = NullHypothesisProto3
2416+ { __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2417+ }
2418+
2419+
2420+-- | Message generated by __protobuf__ from `protobuf_test_messages.proto3.EnumOnlyProto3`
2421+newtype EnumOnlyProto3 = EnumOnlyProto3 EnumOnlyProto3R
2422+type EnumOnlyProto3Row =
2423+ ( __unknown_fields :: Array Prelude.UnknownField
2424+ )
2425+type EnumOnlyProto3R = Record EnumOnlyProto3Row
2426+derive instance genericEnumOnlyProto3 :: Prelude.Generic EnumOnlyProto3 _
2427+derive instance newtypeEnumOnlyProto3 :: Prelude.Newtype EnumOnlyProto3 _
2428+derive instance eqEnumOnlyProto3 :: Prelude.Eq EnumOnlyProto3
2429+instance showEnumOnlyProto3 :: Prelude.Show EnumOnlyProto3 where show x = Prelude.genericShow x
2430+
2431+putEnumOnlyProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => EnumOnlyProto3 -> Prelude.PutM m Prelude.Unit
2432+putEnumOnlyProto3 (EnumOnlyProto3 r) = do
2433+
2434+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
2435+
2436+parseEnumOnlyProto3 :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m EnumOnlyProto3
2437+parseEnumOnlyProto3 length = Prelude.label "EnumOnlyProto3 / " $
2438+ Prelude.parseMessage EnumOnlyProto3 defaultEnumOnlyProto3 parseField length
2439+ where
2440+ parseField
2441+ :: Prelude.FieldNumberInt
2442+ -> Prelude.WireType
2443+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder EnumOnlyProto3R EnumOnlyProto3R)
2444+
2445+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
2446+
2447+defaultEnumOnlyProto3 :: EnumOnlyProto3R
2448+defaultEnumOnlyProto3 =
2449+ { __unknown_fields: []
2450+ }
2451+
2452+mkEnumOnlyProto3 :: forall r1 r3. Prelude.Union r1 EnumOnlyProto3Row r3 => Prelude.Nub r3 EnumOnlyProto3Row => Record r1 -> EnumOnlyProto3
2453+mkEnumOnlyProto3 r = EnumOnlyProto3 $ Prelude.merge r defaultEnumOnlyProto3
2454+
2455+mergeEnumOnlyProto3 :: EnumOnlyProto3 -> EnumOnlyProto3 -> EnumOnlyProto3
2456+mergeEnumOnlyProto3 (EnumOnlyProto3 l) (EnumOnlyProto3 r) = EnumOnlyProto3
2457+ { __unknown_fields: r.__unknown_fields <> l.__unknown_fields
2458+ }
2459+
2460+
2461+-- | Enum generated by __protobuf__ from `protobuf_test_messages.proto3.ForeignEnum`
2462+data ForeignEnum
2463+ = ForeignEnum_FOREIGN_FOO
2464+ | ForeignEnum_FOREIGN_BAR
2465+ | ForeignEnum_FOREIGN_BAZ
2466+derive instance genericForeignEnum :: Prelude.Generic ForeignEnum _
2467+derive instance eqForeignEnum :: Prelude.Eq ForeignEnum
2468+instance showForeignEnum :: Prelude.Show ForeignEnum where show = Prelude.genericShow
2469+instance ordForeignEnum :: Prelude.Ord ForeignEnum where compare = Prelude.genericCompare
2470+instance boundedForeignEnum :: Prelude.Bounded ForeignEnum
2471+ where
2472+ bottom = Prelude.genericBottom
2473+ top = Prelude.genericTop
2474+instance enumForeignEnum :: Prelude.Enum ForeignEnum
2475+ where
2476+ succ = Prelude.genericSucc
2477+ pred = Prelude.genericPred
2478+instance boundedenumForeignEnum :: Prelude.BoundedEnum ForeignEnum
2479+ where
2480+ cardinality = Prelude.genericCardinality
2481+ toEnum (0) = Prelude.Just ForeignEnum_FOREIGN_FOO
2482+ toEnum (1) = Prelude.Just ForeignEnum_FOREIGN_BAR
2483+ toEnum (2) = Prelude.Just ForeignEnum_FOREIGN_BAZ
2484+ toEnum _ = Prelude.Nothing
2485+ fromEnum ForeignEnum_FOREIGN_FOO = (0)
2486+ fromEnum ForeignEnum_FOREIGN_BAR = (1)
2487+ fromEnum ForeignEnum_FOREIGN_BAZ = (2)
2488+instance defaultForeignEnum :: Prelude.Default ForeignEnum
2489+ where
2490+ default = ForeignEnum_FOREIGN_FOO
2491+ isDefault = eq ForeignEnum_FOREIGN_FOO
2492+
2493+-- | Enum generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum`
2494+data TestAllTypesProto3_NestedEnum
2495+ = TestAllTypesProto3_NestedEnum_FOO
2496+ | TestAllTypesProto3_NestedEnum_BAR
2497+ | TestAllTypesProto3_NestedEnum_BAZ
2498+ | TestAllTypesProto3_NestedEnum_NEG
2499+derive instance genericTestAllTypesProto3_NestedEnum :: Prelude.Generic TestAllTypesProto3_NestedEnum _
2500+derive instance eqTestAllTypesProto3_NestedEnum :: Prelude.Eq TestAllTypesProto3_NestedEnum
2501+instance showTestAllTypesProto3_NestedEnum :: Prelude.Show TestAllTypesProto3_NestedEnum where show = Prelude.genericShow
2502+instance ordTestAllTypesProto3_NestedEnum :: Prelude.Ord TestAllTypesProto3_NestedEnum where compare = Prelude.genericCompare
2503+instance boundedTestAllTypesProto3_NestedEnum :: Prelude.Bounded TestAllTypesProto3_NestedEnum
2504+ where
2505+ bottom = Prelude.genericBottom
2506+ top = Prelude.genericTop
2507+instance enumTestAllTypesProto3_NestedEnum :: Prelude.Enum TestAllTypesProto3_NestedEnum
2508+ where
2509+ succ = Prelude.genericSucc
2510+ pred = Prelude.genericPred
2511+instance boundedenumTestAllTypesProto3_NestedEnum :: Prelude.BoundedEnum TestAllTypesProto3_NestedEnum
2512+ where
2513+ cardinality = Prelude.genericCardinality
2514+ toEnum (0) = Prelude.Just TestAllTypesProto3_NestedEnum_FOO
2515+ toEnum (1) = Prelude.Just TestAllTypesProto3_NestedEnum_BAR
2516+ toEnum (2) = Prelude.Just TestAllTypesProto3_NestedEnum_BAZ
2517+ toEnum (-1) = Prelude.Just TestAllTypesProto3_NestedEnum_NEG
2518+ toEnum _ = Prelude.Nothing
2519+ fromEnum TestAllTypesProto3_NestedEnum_FOO = (0)
2520+ fromEnum TestAllTypesProto3_NestedEnum_BAR = (1)
2521+ fromEnum TestAllTypesProto3_NestedEnum_BAZ = (2)
2522+ fromEnum TestAllTypesProto3_NestedEnum_NEG = (-1)
2523+instance defaultTestAllTypesProto3_NestedEnum :: Prelude.Default TestAllTypesProto3_NestedEnum
2524+ where
2525+ default = TestAllTypesProto3_NestedEnum_FOO
2526+ isDefault = eq TestAllTypesProto3_NestedEnum_FOO
2527+
2528+-- | Enum generated by __protobuf__ from `protobuf_test_messages.proto3.TestAllTypesProto3.AliasedEnum`
2529+data TestAllTypesProto3_AliasedEnum
2530+ = TestAllTypesProto3_AliasedEnum_ALIAS_FOO
2531+ | TestAllTypesProto3_AliasedEnum_ALIAS_BAR
2532+ | TestAllTypesProto3_AliasedEnum_ALIAS_BAZ
2533+ | TestAllTypesProto3_AliasedEnum_MOO
2534+ | TestAllTypesProto3_AliasedEnum_Moo
2535+ | TestAllTypesProto3_AliasedEnum_BAz
2536+derive instance genericTestAllTypesProto3_AliasedEnum :: Prelude.Generic TestAllTypesProto3_AliasedEnum _
2537+derive instance eqTestAllTypesProto3_AliasedEnum :: Prelude.Eq TestAllTypesProto3_AliasedEnum
2538+instance showTestAllTypesProto3_AliasedEnum :: Prelude.Show TestAllTypesProto3_AliasedEnum where show = Prelude.genericShow
2539+instance ordTestAllTypesProto3_AliasedEnum :: Prelude.Ord TestAllTypesProto3_AliasedEnum where compare = Prelude.genericCompare
2540+instance boundedTestAllTypesProto3_AliasedEnum :: Prelude.Bounded TestAllTypesProto3_AliasedEnum
2541+ where
2542+ bottom = Prelude.genericBottom
2543+ top = Prelude.genericTop
2544+instance enumTestAllTypesProto3_AliasedEnum :: Prelude.Enum TestAllTypesProto3_AliasedEnum
2545+ where
2546+ succ = Prelude.genericSucc
2547+ pred = Prelude.genericPred
2548+instance boundedenumTestAllTypesProto3_AliasedEnum :: Prelude.BoundedEnum TestAllTypesProto3_AliasedEnum
2549+ where
2550+ cardinality = Prelude.genericCardinality
2551+ toEnum (0) = Prelude.Just TestAllTypesProto3_AliasedEnum_ALIAS_FOO
2552+ toEnum (1) = Prelude.Just TestAllTypesProto3_AliasedEnum_ALIAS_BAR
2553+ toEnum (2) = Prelude.Just TestAllTypesProto3_AliasedEnum_ALIAS_BAZ
2554+ toEnum (2) = Prelude.Just TestAllTypesProto3_AliasedEnum_MOO
2555+ toEnum (2) = Prelude.Just TestAllTypesProto3_AliasedEnum_Moo
2556+ toEnum (2) = Prelude.Just TestAllTypesProto3_AliasedEnum_BAz
2557+ toEnum _ = Prelude.Nothing
2558+ fromEnum TestAllTypesProto3_AliasedEnum_ALIAS_FOO = (0)
2559+ fromEnum TestAllTypesProto3_AliasedEnum_ALIAS_BAR = (1)
2560+ fromEnum TestAllTypesProto3_AliasedEnum_ALIAS_BAZ = (2)
2561+ fromEnum TestAllTypesProto3_AliasedEnum_MOO = (2)
2562+ fromEnum TestAllTypesProto3_AliasedEnum_Moo = (2)
2563+ fromEnum TestAllTypesProto3_AliasedEnum_BAz = (2)
2564+instance defaultTestAllTypesProto3_AliasedEnum :: Prelude.Default TestAllTypesProto3_AliasedEnum
2565+ where
2566+ default = TestAllTypesProto3_AliasedEnum_ALIAS_FOO
2567+ isDefault = eq TestAllTypesProto3_AliasedEnum_ALIAS_FOO
2568+
2569+-- | Enum generated by __protobuf__ from `protobuf_test_messages.proto3.EnumOnlyProto3.Bool`
2570+data EnumOnlyProto3_Bool
2571+ = EnumOnlyProto3_Bool_KFalse
2572+ | EnumOnlyProto3_Bool_KTrue
2573+derive instance genericEnumOnlyProto3_Bool :: Prelude.Generic EnumOnlyProto3_Bool _
2574+derive instance eqEnumOnlyProto3_Bool :: Prelude.Eq EnumOnlyProto3_Bool
2575+instance showEnumOnlyProto3_Bool :: Prelude.Show EnumOnlyProto3_Bool where show = Prelude.genericShow
2576+instance ordEnumOnlyProto3_Bool :: Prelude.Ord EnumOnlyProto3_Bool where compare = Prelude.genericCompare
2577+instance boundedEnumOnlyProto3_Bool :: Prelude.Bounded EnumOnlyProto3_Bool
2578+ where
2579+ bottom = Prelude.genericBottom
2580+ top = Prelude.genericTop
2581+instance enumEnumOnlyProto3_Bool :: Prelude.Enum EnumOnlyProto3_Bool
2582+ where
2583+ succ = Prelude.genericSucc
2584+ pred = Prelude.genericPred
2585+instance boundedenumEnumOnlyProto3_Bool :: Prelude.BoundedEnum EnumOnlyProto3_Bool
2586+ where
2587+ cardinality = Prelude.genericCardinality
2588+ toEnum (0) = Prelude.Just EnumOnlyProto3_Bool_KFalse
2589+ toEnum (1) = Prelude.Just EnumOnlyProto3_Bool_KTrue
2590+ toEnum _ = Prelude.Nothing
2591+ fromEnum EnumOnlyProto3_Bool_KFalse = (0)
2592+ fromEnum EnumOnlyProto3_Bool_KTrue = (1)
2593+instance defaultEnumOnlyProto3_Bool :: Prelude.Default EnumOnlyProto3_Bool
2594+ where
2595+ default = EnumOnlyProto3_Bool_KFalse
2596+ isDefault = eq EnumOnlyProto3_Bool_KFalse
2597+
conformance/src/generated/timestamp.Google.Protobuf.pursnew file+155
@@ -0,0 +1,155 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/timestamp.proto`
2+module Google.Protobuf.Timestamp
3+( Timestamp(..), TimestampRow, TimestampR, parseTimestamp, putTimestamp, defaultTimestamp, mkTimestamp, mergeTimestamp
4+)
5+where
6+import Protobuf.Internal.Prelude
7+import Protobuf.Internal.Prelude as Prelude
8+
9+
10+
11+
12+-- | Message generated by __protobuf__ from `google.protobuf.Timestamp`
13+-- |
14+-- | A Timestamp represents a point in time independent of any time zone or local
15+-- | calendar, encoded as a count of seconds and fractions of seconds at
16+-- | nanosecond resolution. The count is relative to an epoch at UTC midnight on
17+-- | January 1, 1970, in the proleptic Gregorian calendar which extends the
18+-- | Gregorian calendar backwards to year one.
19+-- |
20+-- | All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
21+-- | second table is needed for interpretation, using a [24-hour linear
22+-- | smear](https://developers.google.com/time/smear).
23+-- |
24+-- | The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
25+-- | restricting to that range, we ensure that we can convert to and from [RFC
26+-- | 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
27+-- |
28+-- | # Examples
29+-- |
30+-- | Example 1: Compute Timestamp from POSIX `time()`.
31+-- |
32+-- | Timestamp timestamp;
33+-- | timestamp.set_seconds(time(NULL));
34+-- | timestamp.set_nanos(0);
35+-- |
36+-- | Example 2: Compute Timestamp from POSIX `gettimeofday()`.
37+-- |
38+-- | struct timeval tv;
39+-- | gettimeofday(&tv, NULL);
40+-- |
41+-- | Timestamp timestamp;
42+-- | timestamp.set_seconds(tv.tv_sec);
43+-- | timestamp.set_nanos(tv.tv_usec * 1000);
44+-- |
45+-- | Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
46+-- |
47+-- | FILETIME ft;
48+-- | GetSystemTimeAsFileTime(&ft);
49+-- | UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
50+-- |
51+-- | // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
52+-- | // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
53+-- | Timestamp timestamp;
54+-- | timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
55+-- | timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
56+-- |
57+-- | Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
58+-- |
59+-- | long millis = System.currentTimeMillis();
60+-- |
61+-- | Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
62+-- | .setNanos((int) ((millis % 1000) * 1000000)).build();
63+-- |
64+-- | Example 5: Compute Timestamp from Java `Instant.now()`.
65+-- |
66+-- | Instant now = Instant.now();
67+-- |
68+-- | Timestamp timestamp =
69+-- | Timestamp.newBuilder().setSeconds(now.getEpochSecond())
70+-- | .setNanos(now.getNano()).build();
71+-- |
72+-- | Example 6: Compute Timestamp from current time in Python.
73+-- |
74+-- | timestamp = Timestamp()
75+-- | timestamp.GetCurrentTime()
76+-- |
77+-- | # JSON Mapping
78+-- |
79+-- | In JSON format, the Timestamp type is encoded as a string in the
80+-- | [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
81+-- | format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
82+-- | where {year} is always expressed using four digits while {month}, {day},
83+-- | {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
84+-- | seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
85+-- | are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
86+-- | is required. A proto3 JSON serializer should always use UTC (as indicated by
87+-- | "Z") when printing the Timestamp type and a proto3 JSON parser should be
88+-- | able to accept both UTC and other timezones (as indicated by an offset).
89+-- |
90+-- | For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
91+-- | 01:30 UTC on January 15, 2017.
92+-- |
93+-- | In JavaScript, one can convert a Date object to this format using the
94+-- | standard
95+-- | [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
96+-- | method. In Python, a standard `datetime.datetime` object can be converted
97+-- | to this format using
98+-- | [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
99+-- | the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
100+-- | the Joda Time's [`ISODateTimeFormat.dateTime()`](
101+-- | http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
102+-- | ) to obtain a formatter capable of generating timestamps in this format.
103+-- |
104+newtype Timestamp = Timestamp TimestampR
105+type TimestampRow =
106+ ( seconds :: Prelude.Maybe Prelude.Int64
107+ , nanos :: Prelude.Maybe Int
108+ , __unknown_fields :: Array Prelude.UnknownField
109+ )
110+type TimestampR = Record TimestampRow
111+derive instance genericTimestamp :: Prelude.Generic Timestamp _
112+derive instance newtypeTimestamp :: Prelude.Newtype Timestamp _
113+derive instance eqTimestamp :: Prelude.Eq Timestamp
114+instance showTimestamp :: Prelude.Show Timestamp where show x = Prelude.genericShow x
115+
116+putTimestamp :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Timestamp -> Prelude.PutM m Prelude.Unit
117+putTimestamp (Timestamp r) = do
118+ Prelude.putOptional 1 r.seconds Prelude.isDefault Prelude.encodeInt64Field
119+ Prelude.putOptional 2 r.nanos Prelude.isDefault Prelude.encodeInt32Field
120+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
121+
122+parseTimestamp :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Timestamp
123+parseTimestamp length = Prelude.label "Timestamp / " $
124+ Prelude.parseMessage Timestamp defaultTimestamp parseField length
125+ where
126+ parseField
127+ :: Prelude.FieldNumberInt
128+ -> Prelude.WireType
129+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder TimestampR TimestampR)
130+ parseField 1 Prelude.VarInt = Prelude.label "seconds / " $ do
131+ x <- Prelude.decodeInt64
132+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "seconds") $ \_ -> Prelude.Just x
133+ parseField 2 Prelude.VarInt = Prelude.label "nanos / " $ do
134+ x <- Prelude.decodeInt32
135+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "nanos") $ \_ -> Prelude.Just x
136+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
137+
138+defaultTimestamp :: TimestampR
139+defaultTimestamp =
140+ { seconds: Prelude.Nothing
141+ , nanos: Prelude.Nothing
142+ , __unknown_fields: []
143+ }
144+
145+mkTimestamp :: forall r1 r3. Prelude.Union r1 TimestampRow r3 => Prelude.Nub r3 TimestampRow => Record r1 -> Timestamp
146+mkTimestamp r = Timestamp $ Prelude.merge r defaultTimestamp
147+
148+mergeTimestamp :: Timestamp -> Timestamp -> Timestamp
149+mergeTimestamp (Timestamp l) (Timestamp r) = Timestamp
150+ { seconds: Prelude.alt l.seconds r.seconds
151+ , nanos: Prelude.alt l.nanos r.nanos
152+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
153+ }
154+
155+
conformance/src/generated/wrappers.Google.Protobuf.pursnew file+469
@@ -0,0 +1,469 @@
1+-- | Generated by __protobuf__ from file `google/protobuf/wrappers.proto`
2+module Google.Protobuf.Wrappers
3+( DoubleValue(..), DoubleValueRow, DoubleValueR, parseDoubleValue, putDoubleValue, defaultDoubleValue, mkDoubleValue, mergeDoubleValue
4+, FloatValue(..), FloatValueRow, FloatValueR, parseFloatValue, putFloatValue, defaultFloatValue, mkFloatValue, mergeFloatValue
5+, Int64Value(..), Int64ValueRow, Int64ValueR, parseInt64Value, putInt64Value, defaultInt64Value, mkInt64Value, mergeInt64Value
6+, UInt64Value(..), UInt64ValueRow, UInt64ValueR, parseUInt64Value, putUInt64Value, defaultUInt64Value, mkUInt64Value, mergeUInt64Value
7+, Int32Value(..), Int32ValueRow, Int32ValueR, parseInt32Value, putInt32Value, defaultInt32Value, mkInt32Value, mergeInt32Value
8+, UInt32Value(..), UInt32ValueRow, UInt32ValueR, parseUInt32Value, putUInt32Value, defaultUInt32Value, mkUInt32Value, mergeUInt32Value
9+, BoolValue(..), BoolValueRow, BoolValueR, parseBoolValue, putBoolValue, defaultBoolValue, mkBoolValue, mergeBoolValue
10+, StringValue(..), StringValueRow, StringValueR, parseStringValue, putStringValue, defaultStringValue, mkStringValue, mergeStringValue
11+, BytesValue(..), BytesValueRow, BytesValueR, parseBytesValue, putBytesValue, defaultBytesValue, mkBytesValue, mergeBytesValue
12+)
13+where
14+import Protobuf.Internal.Prelude
15+import Protobuf.Internal.Prelude as Prelude
16+
17+
18+
19+
20+-- | Message generated by __protobuf__ from `google.protobuf.DoubleValue`
21+-- |
22+-- | Wrapper message for `double`.
23+-- |
24+-- | The JSON representation for `DoubleValue` is JSON number.
25+newtype DoubleValue = DoubleValue DoubleValueR
26+type DoubleValueRow =
27+ ( value :: Prelude.Maybe Number
28+ , __unknown_fields :: Array Prelude.UnknownField
29+ )
30+type DoubleValueR = Record DoubleValueRow
31+derive instance genericDoubleValue :: Prelude.Generic DoubleValue _
32+derive instance newtypeDoubleValue :: Prelude.Newtype DoubleValue _
33+derive instance eqDoubleValue :: Prelude.Eq DoubleValue
34+instance showDoubleValue :: Prelude.Show DoubleValue where show x = Prelude.genericShow x
35+
36+putDoubleValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => DoubleValue -> Prelude.PutM m Prelude.Unit
37+putDoubleValue (DoubleValue r) = do
38+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeDoubleField
39+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
40+
41+parseDoubleValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m DoubleValue
42+parseDoubleValue length = Prelude.label "DoubleValue / " $
43+ Prelude.parseMessage DoubleValue defaultDoubleValue parseField length
44+ where
45+ parseField
46+ :: Prelude.FieldNumberInt
47+ -> Prelude.WireType
48+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder DoubleValueR DoubleValueR)
49+ parseField 1 Prelude.Bits64 = Prelude.label "value / " $ do
50+ x <- Prelude.decodeDouble
51+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
52+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
53+
54+defaultDoubleValue :: DoubleValueR
55+defaultDoubleValue =
56+ { value: Prelude.Nothing
57+ , __unknown_fields: []
58+ }
59+
60+mkDoubleValue :: forall r1 r3. Prelude.Union r1 DoubleValueRow r3 => Prelude.Nub r3 DoubleValueRow => Record r1 -> DoubleValue
61+mkDoubleValue r = DoubleValue $ Prelude.merge r defaultDoubleValue
62+
63+mergeDoubleValue :: DoubleValue -> DoubleValue -> DoubleValue
64+mergeDoubleValue (DoubleValue l) (DoubleValue r) = DoubleValue
65+ { value: Prelude.alt l.value r.value
66+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
67+ }
68+
69+
70+-- | Message generated by __protobuf__ from `google.protobuf.FloatValue`
71+-- |
72+-- | Wrapper message for `float`.
73+-- |
74+-- | The JSON representation for `FloatValue` is JSON number.
75+newtype FloatValue = FloatValue FloatValueR
76+type FloatValueRow =
77+ ( value :: Prelude.Maybe Prelude.Float32
78+ , __unknown_fields :: Array Prelude.UnknownField
79+ )
80+type FloatValueR = Record FloatValueRow
81+derive instance genericFloatValue :: Prelude.Generic FloatValue _
82+derive instance newtypeFloatValue :: Prelude.Newtype FloatValue _
83+derive instance eqFloatValue :: Prelude.Eq FloatValue
84+instance showFloatValue :: Prelude.Show FloatValue where show x = Prelude.genericShow x
85+
86+putFloatValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => FloatValue -> Prelude.PutM m Prelude.Unit
87+putFloatValue (FloatValue r) = do
88+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeFloatField
89+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
90+
91+parseFloatValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m FloatValue
92+parseFloatValue length = Prelude.label "FloatValue / " $
93+ Prelude.parseMessage FloatValue defaultFloatValue parseField length
94+ where
95+ parseField
96+ :: Prelude.FieldNumberInt
97+ -> Prelude.WireType
98+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder FloatValueR FloatValueR)
99+ parseField 1 Prelude.Bits32 = Prelude.label "value / " $ do
100+ x <- Prelude.decodeFloat
101+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
102+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
103+
104+defaultFloatValue :: FloatValueR
105+defaultFloatValue =
106+ { value: Prelude.Nothing
107+ , __unknown_fields: []
108+ }
109+
110+mkFloatValue :: forall r1 r3. Prelude.Union r1 FloatValueRow r3 => Prelude.Nub r3 FloatValueRow => Record r1 -> FloatValue
111+mkFloatValue r = FloatValue $ Prelude.merge r defaultFloatValue
112+
113+mergeFloatValue :: FloatValue -> FloatValue -> FloatValue
114+mergeFloatValue (FloatValue l) (FloatValue r) = FloatValue
115+ { value: Prelude.alt l.value r.value
116+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
117+ }
118+
119+
120+-- | Message generated by __protobuf__ from `google.protobuf.Int64Value`
121+-- |
122+-- | Wrapper message for `int64`.
123+-- |
124+-- | The JSON representation for `Int64Value` is JSON string.
125+newtype Int64Value = Int64Value Int64ValueR
126+type Int64ValueRow =
127+ ( value :: Prelude.Maybe Prelude.Int64
128+ , __unknown_fields :: Array Prelude.UnknownField
129+ )
130+type Int64ValueR = Record Int64ValueRow
131+derive instance genericInt64Value :: Prelude.Generic Int64Value _
132+derive instance newtypeInt64Value :: Prelude.Newtype Int64Value _
133+derive instance eqInt64Value :: Prelude.Eq Int64Value
134+instance showInt64Value :: Prelude.Show Int64Value where show x = Prelude.genericShow x
135+
136+putInt64Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Int64Value -> Prelude.PutM m Prelude.Unit
137+putInt64Value (Int64Value r) = do
138+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeInt64Field
139+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
140+
141+parseInt64Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Int64Value
142+parseInt64Value length = Prelude.label "Int64Value / " $
143+ Prelude.parseMessage Int64Value defaultInt64Value parseField length
144+ where
145+ parseField
146+ :: Prelude.FieldNumberInt
147+ -> Prelude.WireType
148+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder Int64ValueR Int64ValueR)
149+ parseField 1 Prelude.VarInt = Prelude.label "value / " $ do
150+ x <- Prelude.decodeInt64
151+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
152+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
153+
154+defaultInt64Value :: Int64ValueR
155+defaultInt64Value =
156+ { value: Prelude.Nothing
157+ , __unknown_fields: []
158+ }
159+
160+mkInt64Value :: forall r1 r3. Prelude.Union r1 Int64ValueRow r3 => Prelude.Nub r3 Int64ValueRow => Record r1 -> Int64Value
161+mkInt64Value r = Int64Value $ Prelude.merge r defaultInt64Value
162+
163+mergeInt64Value :: Int64Value -> Int64Value -> Int64Value
164+mergeInt64Value (Int64Value l) (Int64Value r) = Int64Value
165+ { value: Prelude.alt l.value r.value
166+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
167+ }
168+
169+
170+-- | Message generated by __protobuf__ from `google.protobuf.UInt64Value`
171+-- |
172+-- | Wrapper message for `uint64`.
173+-- |
174+-- | The JSON representation for `UInt64Value` is JSON string.
175+newtype UInt64Value = UInt64Value UInt64ValueR
176+type UInt64ValueRow =
177+ ( value :: Prelude.Maybe Prelude.UInt64
178+ , __unknown_fields :: Array Prelude.UnknownField
179+ )
180+type UInt64ValueR = Record UInt64ValueRow
181+derive instance genericUInt64Value :: Prelude.Generic UInt64Value _
182+derive instance newtypeUInt64Value :: Prelude.Newtype UInt64Value _
183+derive instance eqUInt64Value :: Prelude.Eq UInt64Value
184+instance showUInt64Value :: Prelude.Show UInt64Value where show x = Prelude.genericShow x
185+
186+putUInt64Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => UInt64Value -> Prelude.PutM m Prelude.Unit
187+putUInt64Value (UInt64Value r) = do
188+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeUint64Field
189+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
190+
191+parseUInt64Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m UInt64Value
192+parseUInt64Value length = Prelude.label "UInt64Value / " $
193+ Prelude.parseMessage UInt64Value defaultUInt64Value parseField length
194+ where
195+ parseField
196+ :: Prelude.FieldNumberInt
197+ -> Prelude.WireType
198+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder UInt64ValueR UInt64ValueR)
199+ parseField 1 Prelude.VarInt = Prelude.label "value / " $ do
200+ x <- Prelude.decodeUint64
201+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
202+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
203+
204+defaultUInt64Value :: UInt64ValueR
205+defaultUInt64Value =
206+ { value: Prelude.Nothing
207+ , __unknown_fields: []
208+ }
209+
210+mkUInt64Value :: forall r1 r3. Prelude.Union r1 UInt64ValueRow r3 => Prelude.Nub r3 UInt64ValueRow => Record r1 -> UInt64Value
211+mkUInt64Value r = UInt64Value $ Prelude.merge r defaultUInt64Value
212+
213+mergeUInt64Value :: UInt64Value -> UInt64Value -> UInt64Value
214+mergeUInt64Value (UInt64Value l) (UInt64Value r) = UInt64Value
215+ { value: Prelude.alt l.value r.value
216+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
217+ }
218+
219+
220+-- | Message generated by __protobuf__ from `google.protobuf.Int32Value`
221+-- |
222+-- | Wrapper message for `int32`.
223+-- |
224+-- | The JSON representation for `Int32Value` is JSON number.
225+newtype Int32Value = Int32Value Int32ValueR
226+type Int32ValueRow =
227+ ( value :: Prelude.Maybe Int
228+ , __unknown_fields :: Array Prelude.UnknownField
229+ )
230+type Int32ValueR = Record Int32ValueRow
231+derive instance genericInt32Value :: Prelude.Generic Int32Value _
232+derive instance newtypeInt32Value :: Prelude.Newtype Int32Value _
233+derive instance eqInt32Value :: Prelude.Eq Int32Value
234+instance showInt32Value :: Prelude.Show Int32Value where show x = Prelude.genericShow x
235+
236+putInt32Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Int32Value -> Prelude.PutM m Prelude.Unit
237+putInt32Value (Int32Value r) = do
238+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeInt32Field
239+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
240+
241+parseInt32Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m Int32Value
242+parseInt32Value length = Prelude.label "Int32Value / " $
243+ Prelude.parseMessage Int32Value defaultInt32Value parseField length
244+ where
245+ parseField
246+ :: Prelude.FieldNumberInt
247+ -> Prelude.WireType
248+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder Int32ValueR Int32ValueR)
249+ parseField 1 Prelude.VarInt = Prelude.label "value / " $ do
250+ x <- Prelude.decodeInt32
251+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
252+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
253+
254+defaultInt32Value :: Int32ValueR
255+defaultInt32Value =
256+ { value: Prelude.Nothing
257+ , __unknown_fields: []
258+ }
259+
260+mkInt32Value :: forall r1 r3. Prelude.Union r1 Int32ValueRow r3 => Prelude.Nub r3 Int32ValueRow => Record r1 -> Int32Value
261+mkInt32Value r = Int32Value $ Prelude.merge r defaultInt32Value
262+
263+mergeInt32Value :: Int32Value -> Int32Value -> Int32Value
264+mergeInt32Value (Int32Value l) (Int32Value r) = Int32Value
265+ { value: Prelude.alt l.value r.value
266+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
267+ }
268+
269+
270+-- | Message generated by __protobuf__ from `google.protobuf.UInt32Value`
271+-- |
272+-- | Wrapper message for `uint32`.
273+-- |
274+-- | The JSON representation for `UInt32Value` is JSON number.
275+newtype UInt32Value = UInt32Value UInt32ValueR
276+type UInt32ValueRow =
277+ ( value :: Prelude.Maybe Prelude.UInt
278+ , __unknown_fields :: Array Prelude.UnknownField
279+ )
280+type UInt32ValueR = Record UInt32ValueRow
281+derive instance genericUInt32Value :: Prelude.Generic UInt32Value _
282+derive instance newtypeUInt32Value :: Prelude.Newtype UInt32Value _
283+derive instance eqUInt32Value :: Prelude.Eq UInt32Value
284+instance showUInt32Value :: Prelude.Show UInt32Value where show x = Prelude.genericShow x
285+
286+putUInt32Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => UInt32Value -> Prelude.PutM m Prelude.Unit
287+putUInt32Value (UInt32Value r) = do
288+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeUint32Field
289+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
290+
291+parseUInt32Value :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m UInt32Value
292+parseUInt32Value length = Prelude.label "UInt32Value / " $
293+ Prelude.parseMessage UInt32Value defaultUInt32Value parseField length
294+ where
295+ parseField
296+ :: Prelude.FieldNumberInt
297+ -> Prelude.WireType
298+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder UInt32ValueR UInt32ValueR)
299+ parseField 1 Prelude.VarInt = Prelude.label "value / " $ do
300+ x <- Prelude.decodeUint32
301+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
302+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
303+
304+defaultUInt32Value :: UInt32ValueR
305+defaultUInt32Value =
306+ { value: Prelude.Nothing
307+ , __unknown_fields: []
308+ }
309+
310+mkUInt32Value :: forall r1 r3. Prelude.Union r1 UInt32ValueRow r3 => Prelude.Nub r3 UInt32ValueRow => Record r1 -> UInt32Value
311+mkUInt32Value r = UInt32Value $ Prelude.merge r defaultUInt32Value
312+
313+mergeUInt32Value :: UInt32Value -> UInt32Value -> UInt32Value
314+mergeUInt32Value (UInt32Value l) (UInt32Value r) = UInt32Value
315+ { value: Prelude.alt l.value r.value
316+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
317+ }
318+
319+
320+-- | Message generated by __protobuf__ from `google.protobuf.BoolValue`
321+-- |
322+-- | Wrapper message for `bool`.
323+-- |
324+-- | The JSON representation for `BoolValue` is JSON `true` and `false`.
325+newtype BoolValue = BoolValue BoolValueR
326+type BoolValueRow =
327+ ( value :: Prelude.Maybe Boolean
328+ , __unknown_fields :: Array Prelude.UnknownField
329+ )
330+type BoolValueR = Record BoolValueRow
331+derive instance genericBoolValue :: Prelude.Generic BoolValue _
332+derive instance newtypeBoolValue :: Prelude.Newtype BoolValue _
333+derive instance eqBoolValue :: Prelude.Eq BoolValue
334+instance showBoolValue :: Prelude.Show BoolValue where show x = Prelude.genericShow x
335+
336+putBoolValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => BoolValue -> Prelude.PutM m Prelude.Unit
337+putBoolValue (BoolValue r) = do
338+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeBoolField
339+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
340+
341+parseBoolValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m BoolValue
342+parseBoolValue length = Prelude.label "BoolValue / " $
343+ Prelude.parseMessage BoolValue defaultBoolValue parseField length
344+ where
345+ parseField
346+ :: Prelude.FieldNumberInt
347+ -> Prelude.WireType
348+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder BoolValueR BoolValueR)
349+ parseField 1 Prelude.VarInt = Prelude.label "value / " $ do
350+ x <- Prelude.decodeBool
351+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
352+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
353+
354+defaultBoolValue :: BoolValueR
355+defaultBoolValue =
356+ { value: Prelude.Nothing
357+ , __unknown_fields: []
358+ }
359+
360+mkBoolValue :: forall r1 r3. Prelude.Union r1 BoolValueRow r3 => Prelude.Nub r3 BoolValueRow => Record r1 -> BoolValue
361+mkBoolValue r = BoolValue $ Prelude.merge r defaultBoolValue
362+
363+mergeBoolValue :: BoolValue -> BoolValue -> BoolValue
364+mergeBoolValue (BoolValue l) (BoolValue r) = BoolValue
365+ { value: Prelude.alt l.value r.value
366+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
367+ }
368+
369+
370+-- | Message generated by __protobuf__ from `google.protobuf.StringValue`
371+-- |
372+-- | Wrapper message for `string`.
373+-- |
374+-- | The JSON representation for `StringValue` is JSON string.
375+newtype StringValue = StringValue StringValueR
376+type StringValueRow =
377+ ( value :: Prelude.Maybe String
378+ , __unknown_fields :: Array Prelude.UnknownField
379+ )
380+type StringValueR = Record StringValueRow
381+derive instance genericStringValue :: Prelude.Generic StringValue _
382+derive instance newtypeStringValue :: Prelude.Newtype StringValue _
383+derive instance eqStringValue :: Prelude.Eq StringValue
384+instance showStringValue :: Prelude.Show StringValue where show x = Prelude.genericShow x
385+
386+putStringValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => StringValue -> Prelude.PutM m Prelude.Unit
387+putStringValue (StringValue r) = do
388+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeStringField
389+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
390+
391+parseStringValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m StringValue
392+parseStringValue length = Prelude.label "StringValue / " $
393+ Prelude.parseMessage StringValue defaultStringValue parseField length
394+ where
395+ parseField
396+ :: Prelude.FieldNumberInt
397+ -> Prelude.WireType
398+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder StringValueR StringValueR)
399+ parseField 1 Prelude.LenDel = Prelude.label "value / " $ do
400+ x <- Prelude.decodeString
401+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
402+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
403+
404+defaultStringValue :: StringValueR
405+defaultStringValue =
406+ { value: Prelude.Nothing
407+ , __unknown_fields: []
408+ }
409+
410+mkStringValue :: forall r1 r3. Prelude.Union r1 StringValueRow r3 => Prelude.Nub r3 StringValueRow => Record r1 -> StringValue
411+mkStringValue r = StringValue $ Prelude.merge r defaultStringValue
412+
413+mergeStringValue :: StringValue -> StringValue -> StringValue
414+mergeStringValue (StringValue l) (StringValue r) = StringValue
415+ { value: Prelude.alt l.value r.value
416+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
417+ }
418+
419+
420+-- | Message generated by __protobuf__ from `google.protobuf.BytesValue`
421+-- |
422+-- | Wrapper message for `bytes`.
423+-- |
424+-- | The JSON representation for `BytesValue` is JSON string.
425+newtype BytesValue = BytesValue BytesValueR
426+type BytesValueRow =
427+ ( value :: Prelude.Maybe Prelude.Bytes
428+ , __unknown_fields :: Array Prelude.UnknownField
429+ )
430+type BytesValueR = Record BytesValueRow
431+derive instance genericBytesValue :: Prelude.Generic BytesValue _
432+derive instance newtypeBytesValue :: Prelude.Newtype BytesValue _
433+derive instance eqBytesValue :: Prelude.Eq BytesValue
434+instance showBytesValue :: Prelude.Show BytesValue where show x = Prelude.genericShow x
435+
436+putBytesValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => BytesValue -> Prelude.PutM m Prelude.Unit
437+putBytesValue (BytesValue r) = do
438+ Prelude.putOptional 1 r.value Prelude.isDefault Prelude.encodeBytesField
439+ Prelude.foldRecM (\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields
440+
441+parseBytesValue :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m BytesValue
442+parseBytesValue length = Prelude.label "BytesValue / " $
443+ Prelude.parseMessage BytesValue defaultBytesValue parseField length
444+ where
445+ parseField
446+ :: Prelude.FieldNumberInt
447+ -> Prelude.WireType
448+ -> Prelude.ParserT Prelude.DataView m (Prelude.Builder BytesValueR BytesValueR)
449+ parseField 1 Prelude.LenDel = Prelude.label "value / " $ do
450+ x <- Prelude.decodeBytes
451+ pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy "value") $ \_ -> Prelude.Just x
452+ parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType
453+
454+defaultBytesValue :: BytesValueR
455+defaultBytesValue =
456+ { value: Prelude.Nothing
457+ , __unknown_fields: []
458+ }
459+
460+mkBytesValue :: forall r1 r3. Prelude.Union r1 BytesValueRow r3 => Prelude.Nub r3 BytesValueRow => Record r1 -> BytesValue
461+mkBytesValue r = BytesValue $ Prelude.merge r defaultBytesValue
462+
463+mergeBytesValue :: BytesValue -> BytesValue -> BytesValue
464+mergeBytesValue (BytesValue l) (BytesValue r) = BytesValue
465+ { value: Prelude.alt l.value r.value
466+ , __unknown_fields: r.__unknown_fields <> l.__unknown_fields
467+ }
468+
469+
failing_tests.txtnew file

No changes to the content.

flake.locknew file+251
@@ -0,0 +1,251 @@
1+{
2+ "nodes": {
3+ "flake-compat": {
4+ "flake": false,
5+ "locked": {
6+ "lastModified": 1696426674,
7+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
8+ "owner": "edolstra",
9+ "repo": "flake-compat",
10+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
11+ "type": "github"
12+ },
13+ "original": {
14+ "owner": "edolstra",
15+ "repo": "flake-compat",
16+ "type": "github"
17+ }
18+ },
19+ "flake-compat_2": {
20+ "flake": false,
21+ "locked": {
22+ "lastModified": 1696426674,
23+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
24+ "owner": "edolstra",
25+ "repo": "flake-compat",
26+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
27+ "type": "github"
28+ },
29+ "original": {
30+ "owner": "edolstra",
31+ "repo": "flake-compat",
32+ "type": "github"
33+ }
34+ },
35+ "flake-utils": {
36+ "inputs": {
37+ "systems": "systems"
38+ },
39+ "locked": {
40+ "lastModified": 1731533236,
41+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
42+ "owner": "numtide",
43+ "repo": "flake-utils",
44+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
45+ "type": "github"
46+ },
47+ "original": {
48+ "owner": "numtide",
49+ "repo": "flake-utils",
50+ "type": "github"
51+ }
52+ },
53+ "mkSpagoDerivation": {
54+ "inputs": {
55+ "nixpkgs": [
56+ "nixpkgs"
57+ ],
58+ "ps-overlay": "ps-overlay",
59+ "registry": "registry",
60+ "registry-index": "registry-index"
61+ },
62+ "locked": {
63+ "lastModified": 1741484263,
64+ "narHash": "sha256-t3EgVkcA97N75UB8nv+82AtIJtLOXIRLLxrm8Fr2Hdg=",
65+ "owner": "jeslie0",
66+ "repo": "mkSpagoDerivation",
67+ "rev": "b752ee8613cc041922278df9df71351618c62832",
68+ "type": "github"
69+ },
70+ "original": {
71+ "owner": "jeslie0",
72+ "repo": "mkSpagoDerivation",
73+ "type": "github"
74+ }
75+ },
76+ "nixpkgs": {
77+ "locked": {
78+ "lastModified": 1702882221,
79+ "narHash": "sha256-L/uOrBqkGsa45EvQk4DLq/aR6JeomW+7Mwe0mC/dVUM=",
80+ "owner": "nixos",
81+ "repo": "nixpkgs",
82+ "rev": "25fef6e30d8ad48f47a8411ccfe986d8baed8a15",
83+ "type": "github"
84+ },
85+ "original": {
86+ "owner": "nixos",
87+ "ref": "release-23.05",
88+ "repo": "nixpkgs",
89+ "type": "github"
90+ }
91+ },
92+ "nixpkgs_2": {
93+ "locked": {
94+ "lastModified": 1741332913,
95+ "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=",
96+ "owner": "NixOS",
97+ "repo": "nixpkgs",
98+ "rev": "20755fa05115c84be00b04690630cb38f0a203ad",
99+ "type": "github"
100+ },
101+ "original": {
102+ "owner": "NixOS",
103+ "ref": "nixos-24.11",
104+ "repo": "nixpkgs",
105+ "type": "github"
106+ }
107+ },
108+ "ps-overlay": {
109+ "inputs": {
110+ "flake-compat": "flake-compat",
111+ "nixpkgs": "nixpkgs",
112+ "slimlock": "slimlock"
113+ },
114+ "locked": {
115+ "lastModified": 1739795788,
116+ "narHash": "sha256-PG4lO49fvWHpQoCN3mIGflisXF+5vEf91ceV9hsWTLU=",
117+ "owner": "thomashoneyman",
118+ "repo": "purescript-overlay",
119+ "rev": "f754c2ef94cef46e5d5223c25d3f361e1f6cb509",
120+ "type": "github"
121+ },
122+ "original": {
123+ "owner": "thomashoneyman",
124+ "repo": "purescript-overlay",
125+ "type": "github"
126+ }
127+ },
128+ "purescript-overlay": {
129+ "inputs": {
130+ "flake-compat": "flake-compat_2",
131+ "nixpkgs": [
132+ "nixpkgs"
133+ ],
134+ "slimlock": "slimlock_2"
135+ },
136+ "locked": {
137+ "lastModified": 1739795788,
138+ "narHash": "sha256-PG4lO49fvWHpQoCN3mIGflisXF+5vEf91ceV9hsWTLU=",
139+ "owner": "thomashoneyman",
140+ "repo": "purescript-overlay",
141+ "rev": "f754c2ef94cef46e5d5223c25d3f361e1f6cb509",
142+ "type": "github"
143+ },
144+ "original": {
145+ "owner": "thomashoneyman",
146+ "repo": "purescript-overlay",
147+ "type": "github"
148+ }
149+ },
150+ "registry": {
151+ "flake": false,
152+ "locked": {
153+ "lastModified": 1741415458,
154+ "narHash": "sha256-m/8bQDH7sFmSwAmQfYXe+hmBDLfeEbSs37FMLmkB8dk=",
155+ "owner": "purescript",
156+ "repo": "registry",
157+ "rev": "2d14b19308e97159bf26713dce9a5da1ad132ccb",
158+ "type": "github"
159+ },
160+ "original": {
161+ "owner": "purescript",
162+ "repo": "registry",
163+ "type": "github"
164+ }
165+ },
166+ "registry-index": {
167+ "flake": false,
168+ "locked": {
169+ "lastModified": 1741415461,
170+ "narHash": "sha256-6ABxd+Ta53u3SPtAhXDTULNcWajQIAW5z+AuyPxmeKE=",
171+ "owner": "purescript",
172+ "repo": "registry-index",
173+ "rev": "7f0f8a6681e1af84f1fa5ba86927a53c0f91edf3",
174+ "type": "github"
175+ },
176+ "original": {
177+ "owner": "purescript",
178+ "repo": "registry-index",
179+ "type": "github"
180+ }
181+ },
182+ "root": {
183+ "inputs": {
184+ "flake-utils": "flake-utils",
185+ "mkSpagoDerivation": "mkSpagoDerivation",
186+ "nixpkgs": "nixpkgs_2",
187+ "purescript-overlay": "purescript-overlay"
188+ }
189+ },
190+ "slimlock": {
191+ "inputs": {
192+ "nixpkgs": [
193+ "mkSpagoDerivation",
194+ "ps-overlay",
195+ "nixpkgs"
196+ ]
197+ },
198+ "locked": {
199+ "lastModified": 1688756706,
200+ "narHash": "sha256-xzkkMv3neJJJ89zo3o2ojp7nFeaZc2G0fYwNXNJRFlo=",
201+ "owner": "thomashoneyman",
202+ "repo": "slimlock",
203+ "rev": "cf72723f59e2340d24881fd7bf61cb113b4c407c",
204+ "type": "github"
205+ },
206+ "original": {
207+ "owner": "thomashoneyman",
208+ "repo": "slimlock",
209+ "type": "github"
210+ }
211+ },
212+ "slimlock_2": {
213+ "inputs": {
214+ "nixpkgs": [
215+ "purescript-overlay",
216+ "nixpkgs"
217+ ]
218+ },
219+ "locked": {
220+ "lastModified": 1688756706,
221+ "narHash": "sha256-xzkkMv3neJJJ89zo3o2ojp7nFeaZc2G0fYwNXNJRFlo=",
222+ "owner": "thomashoneyman",
223+ "repo": "slimlock",
224+ "rev": "cf72723f59e2340d24881fd7bf61cb113b4c407c",
225+ "type": "github"
226+ },
227+ "original": {
228+ "owner": "thomashoneyman",
229+ "repo": "slimlock",
230+ "type": "github"
231+ }
232+ },
233+ "systems": {
234+ "locked": {
235+ "lastModified": 1681028828,
236+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
237+ "owner": "nix-systems",
238+ "repo": "default",
239+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
240+ "type": "github"
241+ },
242+ "original": {
243+ "owner": "nix-systems",
244+ "repo": "default",
245+ "type": "github"
246+ }
247+ }
248+ },
249+ "root": "root",
250+ "version": 7
251+}
flake.nixnew file+175
@@ -0,0 +1,175 @@
1+{
2+ description = "PureScript Protobuf";
3+
4+ inputs = {
5+ nixpkgs.url = github:NixOS/nixpkgs/nixos-24.11;
6+ flake-utils = {
7+ url = "github:numtide/flake-utils";
8+ };
9+ purescript-overlay = {
10+ url = "github:thomashoneyman/purescript-overlay";
11+ inputs.nixpkgs.follows = "nixpkgs";
12+ };
13+ mkSpagoDerivation = {
14+ url = "github:jeslie0/mkSpagoDerivation";
15+ inputs.nixpkgs.follows = "nixpkgs";
16+ };
17+ };
18+
19+ outputs = { self, nixpkgs, ... }@inputs:
20+ let
21+ supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
22+
23+ forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
24+
25+ library-src = ./library/src;
26+
27+ nixpkgsFor = forAllSystems (system: import nixpkgs {
28+ inherit system;
29+ config = { };
30+ overlays = builtins.attrValues self.overlays ++ [
31+ inputs.purescript-overlay.overlays.default
32+ inputs.mkSpagoDerivation.overlays.default
33+ (prev: final: import ./nix/protobuf.nix final)
34+ (prev: final: {
35+ purescript-protobuf-library = prev.mkSpagoDerivation {
36+ name = "purescript-protobuf-library";
37+ src = ./library;
38+ nativeBuildInputs = with prev; [ purs spago-unstable ];
39+ buildPhase = "spago build";
40+ installPhase = "mkdir $out; cp -r output/* $out/";
41+ };
42+ })
43+ (prev: final: {
44+ purescript-protobuf-plugin = prev.mkSpagoDerivation {
45+ name = "purescript-protobuf-plugin";
46+ src = ./plugin;
47+ nativeBuildInputs = with prev; [ purs spago-unstable purs-backend-es esbuild];
48+ buildPhase = ''
49+ spago build --purs-args '${prev.purescript-protobuf-library.src}/src/**/*.purs'
50+ '';
51+ installPhase = "mkdir $out; cp -r output/* $out/";
52+ };
53+ })
54+ (prev: final: {
55+ purescript-protobuf-conformance = prev.mkSpagoDerivation {
56+ name = "purescript-protobuf-conformance";
57+ src = ./conformance;
58+ nativeBuildInputs = with prev; [ purs spago-unstable purs-backend-es esbuild];
59+ buildPhase = ''
60+ spago build --purs-args '${prev.purescript-protobuf-library.src}/src/**/*.purs'
61+ '';
62+ installPhase = "mkdir $out; cp -r output/* $out/";
63+ };
64+ })
65+ (prev: final: {
66+ protoc-gen-purescript = prev.writeShellScriptBin "protoc-gen-purescript" ''
67+ ${prev.nodejs}/bin/node --input-type=module -e "import {main} from '${final.purescript-protobuf-plugin}/Main/index.js'; main();"
68+ '';
69+ conformance-purescript = prev.writeShellScriptBin "conformance-purescript" ''
70+ ${prev.nodejs}/bin/node --abort-on-uncaught-exception --trace-sigint --trace-uncaught --input-type=module -e "import {main} from '${final.purescript-protobuf-conformance}/Main/index.js'; main();"
71+ '';
72+ }
73+ )
74+ ];
75+ });
76+
77+ in {
78+ overlays = {
79+ };
80+
81+ packages = forAllSystems (system:
82+ let pkgs = nixpkgsFor.${system}; in {
83+ protoc-gen-purescript = pkgs.protoc-gen-purescript;
84+ conformance-purescript = pkgs.conformance-purescript;
85+ protobuf_v3_9_2 = pkgs.protobuf_v3_9_2;
86+ protobuf_v3_14_0 = pkgs.protobuf_v3_14_0;
87+ protobuf_v3_15_8 = pkgs.protobuf_v3_15_8;
88+ protobuf_v3_20_1 = pkgs.protobuf_v3_20_1;
89+ protobuf_v3_21_0 = pkgs.protobuf_v3_21_0;
90+ protobuf_v21_10 = pkgs.protobuf_v21_10;
91+ protobuf_v23_2 = pkgs.protobuf_v23_2;
92+ protobuf_v24_4 = pkgs.protobuf_v24_4;
93+ protobuf_v28_2 = pkgs.protobuf_v28_2;
94+ protobuf_local = pkgs.protobuf_local;
95+ });
96+
97+ devShells = forAllSystems (system:
98+ let pkgs = nixpkgsFor.${system}; in {
99+ default = pkgs.mkShell {
100+ name = "purescript-protobuf-devshell";
101+ # inputsFrom = builtins.attrValues self.packages.${system};
102+ buildInputs = with pkgs; [
103+ purs
104+ spago-unstable
105+ purs-tidy-bin.purs-tidy-0_10_0
106+ purs-backend-es
107+ purescript-language-server
108+ nodejs
109+ # If MacOS then we use the protobuf from nixpkgs.
110+ # Else we use our own protobuf.
111+ (if stdenv.isDarwin then protobuf else protobuf_local)
112+ esbuild
113+ protoc-gen-purescript
114+ ];
115+
116+ # spago sources not working for whole project, TODO something like:
117+ # export PURS_IDE_SOURCES=$(cd plugin;spago sources)
118+ shellHook = ''
119+ source <(spago --bash-completion-script `which spago`)
120+ source <(node --completion-bash)
121+ echo "PureScript Protobuf development environment"
122+ protoc --version
123+ echo -n "node "
124+ node --version
125+ echo -n "purs "
126+ purs --version
127+ echo -n "spago "
128+ spago --version
129+ echo ""
130+ echo "To build the protoc compiler plugin, run:"
131+ echo ""
132+ echo " cd plugin; spago build"
133+ echo ""
134+ echo "To compile PureScript .purs files from .proto files, run for example:"
135+ echo ""
136+ echo " protoc --purescript_out=. google/protobuf/timestamp.proto"
137+ echo ""'';
138+ };
139+ });
140+
141+
142+ apps = forAllSystems (system:
143+ let pkgs = nixpkgsFor.${system}; in {
144+ protoc = {
145+ type = "app";
146+ program = "${pkgs.protobuf_local}/bin/protoc";
147+ };
148+ protoc-gen-purescript = {
149+ type = "app";
150+ program = "${pkgs.protoc-gen-purescript}/bin/protoc-gen-purescript";
151+ };
152+ conformance_test_runner = {
153+ type = "app";
154+ program = "${pkgs.protobuf_local}/bin/conformance_test_runner";
155+ };
156+ conformance-purescript = {
157+ type = "app";
158+ program = "${pkgs.conformance-purescript}/bin/conformance-purescript";
159+ };
160+ conformance =
161+ let
162+ conformance-run = pkgs.writeShellScriptBin "conformance" ''
163+ set -e
164+ set -x
165+ ${pkgs.protobuf_local}/bin/conformance_test_runner --enforce_recommended ${pkgs.conformance-purescript}/bin/conformance-purescript
166+ '';
167+ in
168+ {
169+ type = "app";
170+ program = "${conformance-run}/bin/conformance";
171+ };
172+ }
173+ );
174+ };
175+}
library/README.mdnew file+383
@@ -0,0 +1,383 @@
1+# purescript-protobuf
2+
3+[![Pursuit](http://pursuit.purescript.org/packages/purescript-protobuf/badge)](http://pursuit.purescript.org/packages/purescript-protobuf/)
4+[![Maintainer: jamesdbrock](https://img.shields.io/badge/maintainer-jamesdbrock-teal.svg)](https://github.com/jamesdbrock)
5+
6+PureScript library and code generator for
7+[Google Protocol Buffers version 3](https://protobuf.dev/programming-guides/proto3/).
8+
9+This library operates on
10+[`ArrayBuffer`](https://pursuit.purescript.org/packages/purescript-arraybuffer-types/docs/Data.ArrayBuffer.Types#t:ArrayBuffer), so it will run both
11+[in *Node.js*](https://pursuit.purescript.org/packages/purescript-node-buffer/docs/Node.Buffer.Class)
12+and in browser environments.
13+
14+## Features
15+
16+We aim to support binary-encoded protobuf for
17+`syntax = "proto3";` descriptor files.
18+
19+Many `syntax = "proto2";` descriptor files will
20+also work, as long as they don't use `"proto2"` features, especially
21+[groups](https://protobuf.dev/programming-guides/proto2/#groups),
22+which we do not support. We also do not support `"proto2"`
23+[extensions](https://protobuf.dev/programming-guides/proto2/#extensions).
24+
25+We do not support
26+[services](https://protobuf.dev/programming-guides/proto3/#services).
27+
28+We do not support
29+[JSON Mapping](https://protobuf.dev/programming-guides/proto3/#json).
30+
31+### Conformance and Testing
32+
33+In this version, we pass all 684 of the
34+[Google conformance tests](https://github.com/protocolbuffers/protobuf/tree/main/conformance)
35+of binary-wire-format *proto3* for [Protocol Buffers v28.2](https://github.com/protocolbuffers/protobuf/releases/tag/v28.2).
36+See the `conformance/README.md` in this repository for details.
37+
38+We also have our own unit tests, see `test/README.md` in this repository.
39+
40+## Code Generation
41+
42+The `nix develop` environment provides
43+
44+* The PureScript toolchain: `purs`, `spago`, and `node`.
45+* The [`protoc`](https://protobuf.dev/programming-guides/proto3/#generating) compiler.
46+* The `protoc-gen-purescript` executable plugin for `protoc` on the `PATH` so that
47+ [`protoc` can find it](https://protobuf.dev/reference/cpp/api-docs/google.protobuf.compiler.plugin/).
48+
49+```
50+$ nix develop
51+
52+PureScript Protobuf development environment
53+libprotoc 28.2
54+node v20.15.1
55+purs 0.15.15
56+spago 0.93.40
57+
58+To build the protoc compiler plugin, run:
59+
60+ cd plugin
61+ spago build
62+
63+To compile PureScript .purs files from .proto files, run for example:
64+
65+ protoc --purescript_out=. google/protobuf/timestamp.proto
66+```
67+
68+We can test out code generation immediately by
69+generating `.purs` files for any of Google’s built-in “well-known types” in the
70+[`google.protobuf`](https://protobuf.dev/reference/protobuf/google.protobuf/) package namespace. Try the command
71+```shell
72+protoc --purescript_out=. google/protobuf/any.proto
73+```
74+or
75+```shell
76+protoc --purescript_out=. google/protobuf/timestamp.proto
77+```
78+
79+To see
80+[all of the `.proto` definitions](https://github.com/protocolbuffers/protobuf/tree/main/src/google/protobuf)
81+included with the Nix PureScript Protobuf installation including
82+the “well-known types,”
83+```shell
84+ls $(nix path-info .#protobuf_local)/src/google/protobuf/*.proto
85+```
86+
87+If you don't want to use Nix,
88+1. install the PureScript toolchain and `protoc`.
89+2. Build the [PureScript plugin for `protoc`](plugin/).
90+3. Run `protoc` with the path to the PureScript plugin executable, like for example
91+ ```shell
92+ protoc --plugin=bin/protoc-gen-purescript --purescript_out=. google/protobuf/timestamp.proto
93+ ```
94+
95+## Writing programs with the generated code
96+
97+Suppose we have a `Rectangle` message declared in a `shapes.proto` descriptor file:
98+
99+```
100+syntax = "proto3";
101+package interproc;
102+
103+message Rectangle {
104+ double width = 1;
105+ double height = 2;
106+}
107+```
108+
109+We run
110+
111+```shell
112+protoc --purescript_out=. shapes.proto
113+```
114+
115+which will generate a file `shapes.Interproc.purs`.
116+
117+The code generator will use the `package` import statement in the `.proto` file
118+and the base `.proto` file name as the PureScript module name for that file.
119+
120+The generated `shapes.Interproc.purs` file
121+will export these four names from module `Interproc.Shapes`.
122+
123+1. A message data type.
124+
125+ ```purescript
126+ newtype Rectangle = Rectangle { width :: Maybe Number, height :: Maybe Number }
127+ ```
128+
129+ The message data type will also include an `__unknown_fields` array field for
130+ holding received fields which were not in the descriptor `.proto` file. We can
131+ ignore `__unknown_fields` if we want to.
132+
133+2. A message maker which constructs a message from a `Record`
134+ with some message fields.
135+
136+ ```purescript
137+ mkRectangle :: forall r. Record r -> Rectangle
138+ ```
139+
140+ All message fields are optional, and can be omitted when making a message.
141+ There are some extra type constraints, not shown here, which will cause a
142+ compiler error if we try to add a field which is not in the message data type.
143+
144+ If we want the compiler to check that we’ve explicitly supplied all the fields,
145+ then we can use the ordinary message data type constructor `Rectangle`.
146+
147+3. A message serializer which works with
148+ [__arraybuffer-builder__](http://pursuit.purescript.org/packages/purescript-arraybuffer-builder/).
149+
150+ ```purescript
151+ putRectangle :: forall m. MonadEffect m => Rectangle -> PutM m Unit
152+ ```
153+
154+4. A message deserializer which works with
155+ [__parsing-dataview__](http://pursuit.purescript.org/packages/purescript-parsing-dataview/).
156+
157+ ```purescript
158+ parseRectangle :: forall m. MonadEffect m => ByteLength -> ParserT DataView m Rectangle
159+ ```
160+
161+ The message parser needs an argument which tells it the
162+ length of the message which it’s about to parse, because
163+ [“the Protocol Buffer wire format is not self-delimiting.”](https://protobuf.dev/programming-guides/techniques/#streaming)
164+
165+In our program, our imports will look something like this.
166+The only module from this package which we will import into our program
167+will be the `Protobuf.Library` module.
168+We'll import the message modules from the generated `.purs` files.
169+We'll also import modules for reading and writing `ArrayBuffer`s.
170+
171+
172+```purescript
173+import Protobuf.Library (Bytes(..))
174+import Interproc.Shapes (Rectangle, mkRectangle, putRectangle, parseRectangle)
175+import Parsing (runParserT, ParseError, liftMaybe)
176+import Data.ArrayBuffer.Builder (execPutM)
177+import Data.ArrayBuffer.DataView (whole)
178+import Data.ArrayBuffer.ArrayBuffer (byteLength)
179+import Data.Tuple (Tuple)
180+import Data.Newtype (unwrap)
181+```
182+
183+This is how we serialize a `Rectangle` to an `ArrayBuffer`.
184+We must be in a `MonadEffect`.
185+
186+```purescript
187+do
188+ arraybuffer <- execPutM $ putRectangle $ mkRectangle
189+ { width: Just 3.0
190+ , height: Just 4.0
191+ }
192+```
193+
194+Next we’ll deserialize `Rectangle` from the `ArrayBuffer` that we just made.
195+
196+```purescript
197+ result :: Either ParseError {width :: Number, height :: Number}
198+ <- runParserT (whole arraybuffer) do
199+ rectangle :: Rectangle <- parseRectangle (byteLength arraybuffer)
200+```
201+
202+At this point we’ve consumed all of the parser input and constructed our
203+`Rectangle` message, but we’re not finished parsing.
204+We want to “validate” the `Rectangle` message to make sure it has all of the
205+fields that we require, because in
206+[*proto3*, all fields are optional](https://github.com/protocolbuffers/protobuf/issues/2497).
207+
208+Fortunately we are already in the `ParserT` monad,
209+so we can do better than to “validate”:
210+[Parse, don't validate](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/).
211+
212+We will construct a record `{width::Number, height::Number}`
213+with the width and height of the `Rectangle`. If the width or height
214+are missing from the `Rectangle` message, then we will fail in the `ParserT`
215+monad.
216+
217+For this validation step,
218+[pattern matching](https://github.com/purescript/documentation/blob/master/language/Pattern-Matching.md)
219+on the `Rectangle` message type works well, so we could validate this way:
220+
221+```purescript
222+ case rectangle of
223+ Rectangle { width: Just width, height: Just height } ->
224+ pure {width, height}
225+ _ -> fail "Missing required width or height"
226+```
227+
228+Or we might want to use `liftMaybe` for more fine-grained validation:
229+
230+```purescript
231+ width <- liftMaybe "Missing required width" (unwrap rectangle).width
232+ height <- liftMaybe "Missing required height" (unwrap rectangle).height
233+ pure {width, height}
234+```
235+
236+And now the `result` is either a parsing error or a fully validated rectangle.
237+
238+### Dependencies
239+
240+The generated code modules will import modules from this
241+package.
242+
243+The generated code depends on packages which are all in the
244+[PureScript Registry](https://github.com/purescript/registry).
245+
246+If the runtime environment is *Node.js*, then it must be at least *v11*,
247+because that is the version in which
248+[`TextDecoder`](https://nodejs.org/docs/latest-v11.x/api/globals.html#globals_textdecoder)
249+ and
250+[`TextEncoder`](https://nodejs.org/docs/latest-v11.x/api/globals.html#globals_textencoder)
251+were added to `Globals`.
252+
253+
254+### Generated message instances
255+
256+All of the generated message types have instances of
257+[`Eq`](https://pursuit.purescript.org/packages/purescript-prelude/docs/Data.Eq#t:Eq),
258+[`Show`](https://pursuit.purescript.org/packages/purescript-prelude/docs/Data.Show#t:Show),
259+[`Generic`](https://pursuit.purescript.org/packages/purescript-generics-rep/docs/Data.Generic.Rep#t:Generic),
260+[`NewType`](https://pursuit.purescript.org/packages/purescript-newtype/docs/Data.Newtype#t:Newtype).
261+
262+### Usage Examples
263+
264+The __protobuf__ repository contains three executable *Node.js*
265+programs which use code generated by __protobuf__. Refer to these
266+for further examples of how to use the generated code.
267+
268+1. The `protoc`
269+ [compiler plugin](https://github.com/rowtype-yoga/purescript-protobuf/blob/master/plugin/src/Main.purs).
270+ The code generator imports generated code. This program writes itself.
271+2. The
272+ [unit test suite](https://github.com/rowtype-yoga/purescript-protobuf/blob/master/plugin/test/Test/Main.purs).
273+3. The Google
274+ [conformance test program](https://github.com/xc-jp/purescript-protobuf/blob/master/conformance/src/Main.purs).
275+
276+The [Protobuf Decoder Explainer](http://jamesdbrock.github.io/protobuf-decoder-explainer/) shows an
277+example of how to use this library to parse binary Protobuf when we don’t
278+have access to the `.proto` descriptor schema file and can’t generate
279+message-reading code.
280+
281+### Presence Discipline
282+
283+This is how [*field presence*](https://github.com/protocolbuffers/protobuf/blob/main/docs/field_presence.md) works
284+in our implementation.
285+
286+#### When deserializing
287+
288+A message field will always be `Just` when the field is present on the wire.
289+
290+A message field will always be `Nothing` when the field is not present on the wire, even if
291+it’s a *no presence* field.
292+If we want to interpret a missing *no presence* field as a
293+[default value](https://protobuf.dev/programming-guides/proto3/#default) then
294+we have the
295+[`Protobuf.Library.toDefault`](https://pursuit.purescript.org/packages/purescript-protobuf/docs/Protobuf.Library#v:toDefault)
296+ function for that.
297+
298+#### When serializing
299+
300+A *no presence* field will not be serialized on the wire when it is `Nothing`, or `Just` the
301+default value.
302+
303+An *explicit presence* (`optional`) field will not be serialized on the wire when it is `Nothing`.
304+It will be serialized when it is `Just` the default value.
305+
306+### Interpreting invalid encoding parse failures
307+
308+When the parser encounters an invalid encoding in the Protobuf input
309+stream then it will fail to parse.
310+
311+When
312+[`runParserT`](https://pursuit.purescript.org/packages/purescript-parsing/docs/Parsing#v:runParserT)
313+fails it will return a `ParseError String (Position {index::Int,line::Int,column::Int})`.
314+
315+The byte offset at which the parse failure occurred is given by the
316+`index`.
317+
318+The path to the Protobuf definition which failed to parse will be included
319+in the `ParseError String` and delimited by `'/'`, something
320+like `"Message1 / string_field_1 / Invalid UTF8 encoding."`.
321+
322+### Protobuf Imports
323+
324+The Protobuf
325+[`import`](https://protobuf.dev/programming-guides/proto3/#importing-definitions)
326+statement allows Protobuf messages to have fields
327+consisting of Protobuf messages imported from another file, and qualified
328+by the package name in that file. In order to generate
329+the correct PureScript module name qualifier on the types of imported message
330+fields, the code generator must be able to lookup the package name
331+statement in the imported file.
332+
333+For that reason, we can only use top-level
334+(not [nested](https://protobuf.dev/programming-guides/proto3/#nested))
335+`message` and `enum` types from a Protobuf `import`.
336+
337+### PureScript Imports
338+
339+The generated PureScript code will usually have module imports which cause
340+the `purs` compiler to emit `ImplicitQualifiedImport` warnings. Sorry. If this causes
341+trouble then the imports can be fixed automatically in a precompiling pass
342+with the command-line tool
343+[__suggest__](https://github.com/nwolverson/purescript-suggest).
344+Or you can [censor the warnings](https://discourse.purescript.org/t/suppressing-warnings-in-code/2485).
345+
346+## Nix derivation
347+
348+The `flake.nix` provides a package `protoc-gen-purescript` so that we
349+can run the `.proto` → `.purs` generation step as part of a Nix
350+derivation. Include `protoc-gen-purescript` and `protobuf` as `nativeBuildInputs`.
351+Then `protoc --purescript_out=path_to_output file.proto` will be runnable
352+in our derivation phases.
353+
354+The `flake.nix` provides the Google Protocol Buffers conformance tests
355+as an `app`. To run the conformance tests right now
356+[without installing or cloning](https://determinate.systems/posts/nix-run)
357+anything,
358+
359+```shell
360+nix run github:xc-jp/purescript-protobuf#conformance
361+```
362+
363+## Contributing
364+
365+Pull requests welcome.
366+
367+This repo is organized as a
368+[Spago polyrepo](https://github.com/purescript/spago#polyrepo-support).
369+
370+- `purescript-protobuf`
371+ - [`library`](library) — `protobuf` package, published to Pursuit
372+ - [`spago.yaml`](library/spago.yaml)
373+ - [`plugin`](plugin) — protoc plugin app for code generation
374+ - [`spago.yaml`](plugin/spago.yaml)
375+ - [`conformance`](conformance) — Google Protobuf Conformance test runner app
376+ - [`spago.yaml`](conformance/spago.yaml)
377+
378+## Other References
379+
380+* [__justifill__](https://pursuit.purescript.org/packages/purescript-justifill) package may be useful for message construction.
381+* [__morello__](https://pursuit.purescript.org/packages/purescript-morello) package may be useful for message validation.
382+* [Third-Party Add-ons for Protocol Buffers](https://github.com/protocolbuffers/protobuf/blob/main/docs/third_party.md) Google’s list of Protocol Buffers language implementations.
383+* [A vision for data interchange in Elm](https://gist.github.com/evancz/1c5f2cf34939336ecb79b97bb89d9da6) Comparison of JSON, ProtoBuf, GraphQL by Evan Czaplicki.
library/spago.locknew file+1453
@@ -0,0 +1,1453 @@
1+{
2+ "workspace": {
3+ "packages": {
4+ "protobuf": {
5+ "path": "./",
6+ "core": {
7+ "dependencies": [
8+ {
9+ "arraybuffer": ">=13.1.1 <14.0.0"
10+ },
11+ {
12+ "arraybuffer-builder": ">=3.1.0 <4.0.0"
13+ },
14+ {
15+ "arraybuffer-types": ">=3.0.2 <4.0.0"
16+ },
17+ {
18+ "arrays": ">=7.2.0 <8.0.0"
19+ },
20+ {
21+ "control": ">=6.0.0 <7.0.0"
22+ },
23+ {
24+ "effect": ">=4.0.0 <5.0.0"
25+ },
26+ {
27+ "either": ">=6.1.0 <7.0.0"
28+ },
29+ {
30+ "enums": ">=6.0.1 <7.0.0"
31+ },
32+ {
33+ "exceptions": ">=6.0.0 <7.0.0"
34+ },
35+ {
36+ "float32": ">=2.0.0 <3.0.0"
37+ },
38+ {
39+ "foldable-traversable": ">=6.0.0 <7.0.0"
40+ },
41+ {
42+ "functions": ">=6.0.0 <7.0.0"
43+ },
44+ {
45+ "int64": ">=3.0.0 <4.0.0"
46+ },
47+ {
48+ "lists": ">=7.0.0 <8.0.0"
49+ },
50+ {
51+ "maybe": ">=6.0.0 <7.0.0"
52+ },
53+ {
54+ "newtype": ">=5.0.0 <6.0.0"
55+ },
56+ {
57+ "parsing": ">=10.3.0 <12.0.0"
58+ },
59+ {
60+ "parsing-dataview": ">=3.2.4 <4.0.0"
61+ },
62+ {
63+ "prelude": ">=6.0.1 <7.0.0"
64+ },
65+ {
66+ "record": ">=4.0.0 <5.0.0"
67+ },
68+ {
69+ "strings": ">=6.0.1 <7.0.0"
70+ },
71+ {
72+ "tailrec": ">=6.1.0 <7.0.0"
73+ },
74+ {
75+ "transformers": ">=6.0.0 <7.0.0"
76+ },
77+ {
78+ "tuples": ">=7.0.0 <8.0.0"
79+ },
80+ {
81+ "uint": ">=7.0.0 <8.0.0"
82+ },
83+ {
84+ "web-encoding": ">=3.0.0 <4.0.0"
85+ }
86+ ],
87+ "build_plan": [
88+ "arraybuffer",
89+ "arraybuffer-builder",
90+ "arraybuffer-types",
91+ "arrays",
92+ "bifunctors",
93+ "const",
94+ "contravariant",
95+ "control",
96+ "distributive",
97+ "effect",
98+ "either",
99+ "enums",
100+ "exceptions",
101+ "exists",
102+ "float32",
103+ "foldable-traversable",
104+ "foreign",
105+ "functions",
106+ "functors",
107+ "gen",
108+ "identity",
109+ "int64",
110+ "integers",
111+ "invariant",
112+ "lazy",
113+ "lists",
114+ "maybe",
115+ "newtype",
116+ "nonempty",
117+ "nullable",
118+ "numbers",
119+ "orders",
120+ "parsing",
121+ "parsing-dataview",
122+ "partial",
123+ "prelude",
124+ "profunctor",
125+ "record",
126+ "refs",
127+ "safe-coerce",
128+ "st",
129+ "strings",
130+ "tailrec",
131+ "transformers",
132+ "tuples",
133+ "type-equality",
134+ "uint",
135+ "unfoldable",
136+ "unicode",
137+ "unsafe-coerce",
138+ "web-encoding"
139+ ]
140+ },
141+ "test": {
142+ "dependencies": [],
143+ "build_plan": []
144+ }
145+ }
146+ },
147+ "package_set": {
148+ "address": {
149+ "registry": "81.1.0"
150+ },
151+ "compiler": ">=0.15.15 <0.16.0",
152+ "content": {
153+ "abc-parser": "2.1.0",
154+ "ace": "9.1.0",
155+ "address-rfc2821": "0.1.1",
156+ "aff": "8.0.0",
157+ "aff-bus": "6.0.0",
158+ "aff-coroutines": "9.0.0",
159+ "aff-promise": "4.0.0",
160+ "aff-retry": "2.0.0",
161+ "affjax": "13.0.0",
162+ "affjax-node": "1.0.0",
163+ "affjax-web": "1.0.0",
164+ "ansi": "7.0.0",
165+ "apexcharts": "0.5.0",
166+ "applicative-phases": "1.0.0",
167+ "argonaut": "9.0.0",
168+ "argonaut-aeson-generic": "0.4.1",
169+ "argonaut-codecs": "9.1.0",
170+ "argonaut-core": "7.0.0",
171+ "argonaut-generic": "8.0.0",
172+ "argonaut-traversals": "10.0.0",
173+ "argparse-basic": "2.0.0",
174+ "array-builder": "0.1.2",
175+ "array-search": "0.6.0",
176+ "arraybuffer": "13.2.0",
177+ "arraybuffer-builder": "3.1.0",
178+ "arraybuffer-types": "3.0.2",
179+ "arrays": "7.3.0",
180+ "arrays-extra": "0.6.2",
181+ "arrays-zipper": "2.0.1",
182+ "ask": "1.0.0",
183+ "assert": "6.0.0",
184+ "assert-multiple": "0.4.0",
185+ "avar": "5.0.1",
186+ "axon": "0.0.3",
187+ "b64": "0.0.9",
188+ "barbies": "1.0.1",
189+ "barlow-lens": "1.0.0",
190+ "baskerville-core": "0.1.3",
191+ "baskerville-mycroft": "0.1.0",
192+ "benchlib": "0.0.4",
193+ "bifunctors": "6.1.0",
194+ "bigints": "7.0.1",
195+ "blessed": "1.0.0",
196+ "bolson": "0.3.9",
197+ "bookhound": "0.1.7",
198+ "bower-json": "3.0.0",
199+ "bytestrings": "9.0.0",
200+ "call-by-name": "4.0.1",
201+ "canvas": "6.0.0",
202+ "canvas-action": "9.0.0",
203+ "cartesian": "1.0.6",
204+ "catenable-lists": "7.0.0",
205+ "cbor-stream": "1.3.0",
206+ "chameleon": "1.0.0",
207+ "chameleon-halogen": "1.0.3",
208+ "chameleon-react-basic": "1.1.0",
209+ "chameleon-styled": "2.5.0",
210+ "chameleon-transformers": "1.0.0",
211+ "channel": "1.0.0",
212+ "chartjs": "0.2.0",
213+ "chartjs-halogen": "0.2.0",
214+ "checked-exceptions": "3.1.1",
215+ "choku": "1.0.2",
216+ "classless": "0.1.1",
217+ "classless-arbitrary": "0.1.1",
218+ "classless-decode-json": "0.1.1",
219+ "classless-encode-json": "0.1.3",
220+ "classnames": "2.0.0",
221+ "codec": "6.1.0",
222+ "codec-argonaut": "10.0.0",
223+ "codec-json": "2.0.0",
224+ "colors": "7.0.1",
225+ "compile-fail": "0.4.0",
226+ "concur-core": "0.5.0",
227+ "concur-react": "0.5.0",
228+ "concurrent-queues": "3.0.0",
229+ "console": "6.1.0",
230+ "const": "6.0.0",
231+ "contravariant": "6.0.0",
232+ "control": "6.0.0",
233+ "convertable-options": "1.0.0",
234+ "coroutines": "7.0.0",
235+ "css": "6.0.0",
236+ "css-class-name-extractor": "0.0.4",
237+ "css-frameworks": "1.1.0",
238+ "csv-stream": "2.3.0",
239+ "currency": "0.1.0",
240+ "data-mvc": "0.0.2",
241+ "datetime": "6.1.0",
242+ "datetime-parsing": "0.2.0",
243+ "debounce": "0.1.2",
244+ "debug": "6.0.2",
245+ "decimals": "7.1.0",
246+ "default-values": "1.0.1",
247+ "deku": "0.9.24",
248+ "deno": "0.0.5",
249+ "dissect": "1.0.0",
250+ "distributive": "6.0.0",
251+ "dodo-printer": "2.2.3",
252+ "dom-filereader": "7.0.0",
253+ "dom-indexed": "13.0.0",
254+ "dom-simple": "0.4.0",
255+ "dotenv": "4.0.3",
256+ "droplet": "0.6.0",
257+ "dts": "1.0.0",
258+ "dual-numbers": "1.0.3",
259+ "dynamic-buffer": "3.0.1",
260+ "echarts-simple": "0.0.1",
261+ "effect": "4.0.0",
262+ "either": "6.1.0",
263+ "elmish": "0.16.0",
264+ "elmish-enzyme": "0.1.1",
265+ "elmish-hooks": "0.12.0",
266+ "elmish-html": "0.14.0",
267+ "elmish-testing-library": "0.5.0",
268+ "email-validate": "7.0.0",
269+ "encoding": "0.0.10",
270+ "enums": "6.0.1",
271+ "env-names": "0.4.0",
272+ "environment": "2.0.0",
273+ "error": "2.0.0",
274+ "eta-conversion": "0.3.2",
275+ "exceptions": "6.1.0",
276+ "exists": "6.0.0",
277+ "exitcodes": "4.0.0",
278+ "expect-inferred": "3.0.0",
279+ "express": "0.9.1",
280+ "ezfetch": "1.1.1",
281+ "fahrtwind": "2.0.0",
282+ "faker-ffi": "0.1.1",
283+ "fakerjs": "0.0.1",
284+ "fallback": "0.1.0",
285+ "fast-vect": "1.2.0",
286+ "fetch": "4.1.0",
287+ "fetch-argonaut": "1.0.1",
288+ "fetch-core": "5.1.0",
289+ "fetch-yoga-json": "1.1.0",
290+ "ffi-simple": "0.5.1",
291+ "fft": "0.3.0",
292+ "fft-js": "0.1.0",
293+ "filterable": "5.0.0",
294+ "fix-functor": "0.1.0",
295+ "fixed-points": "7.0.0",
296+ "fixed-precision": "5.0.0",
297+ "flame": "1.6.0",
298+ "float32": "2.0.0",
299+ "fmt": "0.2.1",
300+ "foldable-traversable": "6.0.0",
301+ "foldable-traversable-extra": "0.0.6",
302+ "foreign": "7.0.0",
303+ "foreign-object": "4.1.0",
304+ "foreign-readwrite": "3.4.0",
305+ "forgetmenot": "0.1.0",
306+ "fork": "6.0.0",
307+ "form-urlencoded": "7.0.0",
308+ "formatters": "7.0.0",
309+ "framer-motion": "3.1.0",
310+ "free": "7.1.0",
311+ "freeap": "7.0.0",
312+ "freer-free": "0.0.1",
313+ "freet": "7.0.0",
314+ "functions": "6.0.0",
315+ "functor1": "3.0.0",
316+ "functors": "5.0.0",
317+ "fuzzy": "0.4.0",
318+ "gen": "4.0.0",
319+ "generate-values": "1.0.1",
320+ "generic-router": "0.0.1",
321+ "geojson": "0.0.5",
322+ "geometria": "2.2.0",
323+ "gesso": "1.0.1",
324+ "gojs": "0.1.1",
325+ "golden-test": "0.1.0",
326+ "golem-fetch": "0.1.0",
327+ "grain": "3.0.0",
328+ "grain-router": "3.0.0",
329+ "grain-virtualized": "3.0.0",
330+ "graphql-client": "10.1.1",
331+ "graphs": "8.1.0",
332+ "group": "4.1.1",
333+ "halogen": "7.0.0",
334+ "halogen-bootstrap5": "5.3.2",
335+ "halogen-canvas": "1.0.0",
336+ "halogen-css": "10.0.0",
337+ "halogen-declarative-canvas": "0.0.8",
338+ "halogen-echarts-simple": "0.0.4",
339+ "halogen-formless": "4.0.3",
340+ "halogen-helix": "1.1.0",
341+ "halogen-hooks": "0.6.3",
342+ "halogen-hooks-extra": "0.9.0",
343+ "halogen-infinite-scroll": "1.1.0",
344+ "halogen-store": "0.5.4",
345+ "halogen-storybook": "2.0.0",
346+ "halogen-subscriptions": "2.0.0",
347+ "halogen-svg-elems": "8.0.0",
348+ "halogen-typewriter": "1.0.4",
349+ "halogen-use-trigger-hooks": "1.0.0",
350+ "halogen-vdom": "8.0.0",
351+ "halogen-vdom-string-renderer": "0.5.0",
352+ "halogen-widgets": "0.3.1",
353+ "halogen-xterm": "2.0.0",
354+ "harmonia": "0.2.0",
355+ "heckin": "2.0.1",
356+ "heterogeneous": "0.7.0",
357+ "homogeneous": "0.4.0",
358+ "http-methods": "6.1.0",
359+ "httpurple": "4.0.0",
360+ "huffman": "0.4.0",
361+ "humdrum": "0.0.1",
362+ "hylograph-canvas": "0.1.0",
363+ "hylograph-components": "0.1.0",
364+ "hylograph-d3-kernel": "0.1.0",
365+ "hylograph-graph": "0.3.0",
366+ "hylograph-layout": "0.3.0",
367+ "hylograph-music": "0.4.0",
368+ "hylograph-optics": "0.1.0",
369+ "hylograph-selection": "0.5.3",
370+ "hylograph-simulation": "0.6.0",
371+ "hylograph-simulation-core": "0.1.0",
372+ "hylograph-simulation-halogen": "0.5.1",
373+ "hylograph-transitions": "0.1.0",
374+ "hylograph-wasm-kernel": "0.1.0",
375+ "hyrule": "2.3.9",
376+ "i18next": "0.1.0",
377+ "idb": "0.2.0",
378+ "identity": "6.0.0",
379+ "identy": "4.0.1",
380+ "indexed-db": "1.0.0",
381+ "indexed-monad": "3.0.0",
382+ "ink": "0.0.1",
383+ "int64": "3.0.0",
384+ "integers": "6.0.0",
385+ "interpolate": "5.0.2",
386+ "intersection-observer": "1.0.1",
387+ "invariant": "6.0.0",
388+ "jarilo": "1.0.1",
389+ "jelly": "0.10.0",
390+ "jelly-router": "0.3.0",
391+ "jelly-signal": "0.4.0",
392+ "jest": "1.0.0",
393+ "js-abort-controller": "1.0.0",
394+ "js-bigints": "2.2.1",
395+ "js-date": "8.0.0",
396+ "js-fetch": "0.2.1",
397+ "js-fileio": "3.0.0",
398+ "js-intl": "1.3.0",
399+ "js-iterators": "0.1.1",
400+ "js-maps": "0.1.2",
401+ "js-promise": "1.0.0",
402+ "js-promise-aff": "1.0.0",
403+ "js-temporal": "3.0.0",
404+ "js-timers": "6.1.0",
405+ "js-uri": "3.1.0",
406+ "jsdom": "1.0.0",
407+ "jsinc": "0.5.1",
408+ "json": "1.1.0",
409+ "json-codecs": "5.0.0",
410+ "justifill": "0.5.0",
411+ "jwt": "0.0.9",
412+ "labeled-data": "0.2.0",
413+ "language-cst-parser": "0.14.1",
414+ "lazy": "6.0.0",
415+ "lazy-joe": "1.0.0",
416+ "lcg": "4.0.0",
417+ "leibniz": "5.0.0",
418+ "leveldb": "1.0.1",
419+ "liminal": "1.0.1",
420+ "linalg": "6.0.0",
421+ "linear": "0.1.0",
422+ "lists": "7.0.0",
423+ "literals": "1.0.2",
424+ "logging": "3.0.0",
425+ "logging-journald": "0.4.0",
426+ "lumi-components": "18.0.0",
427+ "machines": "7.0.0",
428+ "maps-eager": "0.5.0",
429+ "marionette": "1.0.0",
430+ "marionette-react-basic-hooks": "0.1.1",
431+ "markdown-it-js": "0.1.0",
432+ "marked": "0.1.0",
433+ "matrices": "5.0.1",
434+ "matryoshka": "1.0.0",
435+ "maybe": "6.0.0",
436+ "media-types": "6.0.0",
437+ "meowclient": "1.0.0",
438+ "midi": "4.0.0",
439+ "milkdown": "0.1.0",
440+ "milkis": "9.0.0",
441+ "mimetype": "0.0.1",
442+ "minibench": "4.0.1",
443+ "mmorph": "7.0.0",
444+ "monad-control": "5.0.0",
445+ "monad-logger": "1.3.1",
446+ "monad-loops": "0.5.0",
447+ "monad-unlift": "1.0.1",
448+ "monoid-extras": "0.0.1",
449+ "monoidal": "0.16.0",
450+ "mote": "3.0.0",
451+ "motion": "4.0.0",
452+ "motsunabe": "2.0.0",
453+ "mvc": "0.0.1",
454+ "mycroft": "0.1.1",
455+ "mycroft-z3-wasm": "0.1.0",
456+ "mysql": "6.0.1",
457+ "n3": "0.1.0",
458+ "nano-id": "1.1.0",
459+ "nanoid": "0.1.0",
460+ "naturals": "3.0.0",
461+ "nested-functor": "0.2.1",
462+ "newtype": "5.0.0",
463+ "next-purs-rsc": "0.1.0",
464+ "nextjs": "0.1.1",
465+ "nextui": "0.2.0",
466+ "node-buffer": "9.0.0",
467+ "node-child-process": "11.1.0",
468+ "node-event-emitter": "3.0.0",
469+ "node-execa": "5.0.0",
470+ "node-fs": "9.2.0",
471+ "node-glob-basic": "2.0.0",
472+ "node-http": "9.1.0",
473+ "node-http2": "1.1.1",
474+ "node-human-signals": "1.0.0",
475+ "node-net": "5.1.0",
476+ "node-os": "5.1.0",
477+ "node-path": "5.0.1",
478+ "node-process": "11.2.0",
479+ "node-readline": "8.1.1",
480+ "node-sqlite": "0.2.0",
481+ "node-sqlite3": "8.0.0",
482+ "node-stream-pipes": "2.1.6",
483+ "node-streams": "9.0.1",
484+ "node-tls": "0.3.1",
485+ "node-url": "7.0.1",
486+ "node-workerbees": "0.3.1",
487+ "node-zlib": "0.4.0",
488+ "nonempty": "7.0.0",
489+ "now": "6.0.0",
490+ "npm-package-json": "2.0.0",
491+ "nqueens": "0.1.4",
492+ "nullable": "6.0.0",
493+ "numberfield": "0.2.2",
494+ "numbers": "9.0.1",
495+ "oak": "3.1.1",
496+ "oak-debug": "1.2.2",
497+ "object-maps": "0.3.0",
498+ "ocarina": "1.5.4",
499+ "oooooooooorrrrrrrmm-lib": "0.0.1",
500+ "open-colors-scales-and-schemes": "1.0.0",
501+ "open-drawing": "6.0.4",
502+ "open-folds": "6.4.0",
503+ "open-foreign-generic": "11.0.3",
504+ "open-memoize": "6.2.0",
505+ "open-mkdirp-aff": "1.2.0",
506+ "open-pairing": "6.2.0",
507+ "open-smolder": "12.0.2",
508+ "options": "7.0.0",
509+ "optparse": "5.0.1",
510+ "ordered-collections": "3.2.0",
511+ "ordered-set": "0.5.2",
512+ "orders": "6.0.0",
513+ "org-doc": "0.1.0",
514+ "owoify": "1.2.0",
515+ "pairs": "9.0.1",
516+ "parallel": "7.0.0",
517+ "parsing": "11.0.0",
518+ "parsing-dataview": "3.2.4",
519+ "partial": "4.0.0",
520+ "pathy": "9.0.0",
521+ "pha": "0.13.0",
522+ "phaser": "0.7.0",
523+ "phylio": "1.1.2",
524+ "pipes": "8.0.0",
525+ "pirates-charm": "0.0.1",
526+ "play": "1.0.0",
527+ "pmock": "1.1.0",
528+ "point-free": "1.0.0",
529+ "pointed-list": "0.5.1",
530+ "polymorphic-vectors": "4.0.0",
531+ "posix-types": "6.0.0",
532+ "postgresql": "2.0.21",
533+ "precise": "6.0.0",
534+ "precise-datetime": "7.0.0",
535+ "prelude": "6.0.2",
536+ "prettier-printer": "3.0.0",
537+ "printf": "0.1.0",
538+ "priority-queue": "0.1.2",
539+ "profunctor": "6.0.1",
540+ "profunctor-lenses": "8.0.0",
541+ "prospero": "0.1.0",
542+ "protobuf": "4.4.0",
543+ "ps-spa": "0.7.1",
544+ "psa-utils": "8.0.0",
545+ "psci-support": "6.0.0",
546+ "punycode": "1.0.0",
547+ "pursfmt": "0.17.0",
548+ "qualified-do": "2.2.0",
549+ "quantities": "12.2.0",
550+ "quickcheck": "8.0.1",
551+ "quickcheck-combinators": "0.1.3",
552+ "quickcheck-laws": "7.0.0",
553+ "quickcheck-utf8": "0.0.0",
554+ "random": "6.0.0",
555+ "rationals": "6.0.0",
556+ "rdf": "0.1.0",
557+ "react": "11.0.0",
558+ "react-aria": "0.2.0",
559+ "react-basic": "17.0.0",
560+ "react-basic-classic": "3.0.0",
561+ "react-basic-dnd": "10.1.0",
562+ "react-basic-dom": "7.0.0",
563+ "react-basic-dom-beta": "0.1.1",
564+ "react-basic-emotion": "7.1.0",
565+ "react-basic-hooks": "9.1.1",
566+ "react-basic-storybook": "2.0.0",
567+ "react-dnd-kit": "0.6.0",
568+ "react-dom": "8.0.0",
569+ "react-halo": "3.0.0",
570+ "react-icons": "1.1.6",
571+ "react-markdown": "0.1.0",
572+ "react-testing-library": "4.0.1",
573+ "react-virtuoso": "1.0.0",
574+ "reactix": "0.6.1",
575+ "read": "1.0.1",
576+ "recharts": "1.1.0",
577+ "record": "4.0.0",
578+ "record-extra": "5.0.1",
579+ "record-extra-srghma": "0.2.8",
580+ "record-ptional-fields": "0.1.2",
581+ "record-studio": "1.0.4",
582+ "ref-lifted": "0.0.2",
583+ "refs": "6.0.0",
584+ "remotedata": "5.0.1",
585+ "repr": "0.5.0",
586+ "resize-arrays": "0.0.1",
587+ "resize-observer": "1.0.0",
588+ "resource": "2.0.1",
589+ "resourcet": "1.0.0",
590+ "result": "1.0.3",
591+ "return": "0.2.0",
592+ "ring-modules": "5.0.1",
593+ "rito": "0.3.4",
594+ "roman": "0.4.0",
595+ "rough-notation": "1.0.2",
596+ "routing": "11.0.0",
597+ "routing-duplex": "0.7.0",
598+ "run": "5.0.0",
599+ "safe-coerce": "2.0.0",
600+ "safely": "4.0.1",
601+ "school-of-music": "1.3.0",
602+ "selection-foldable": "0.2.0",
603+ "selective-functors": "1.0.1",
604+ "semirings": "7.0.0",
605+ "shuffle": "2.0.0",
606+ "sigil": "0.3.0",
607+ "sigil-hats": "0.3.0",
608+ "signal": "13.0.0",
609+ "simple-emitter": "3.0.1",
610+ "simple-i18n": "2.0.1",
611+ "simple-json": "9.0.0",
612+ "simple-json-generics": "0.2.1",
613+ "simple-ulid": "3.0.0",
614+ "sized-matrices": "1.0.0",
615+ "sized-vectors": "5.0.2",
616+ "slug": "3.2.0",
617+ "small-ffi": "4.0.1",
618+ "soundfonts": "4.1.0",
619+ "sparse-matrices": "2.0.1",
620+ "sparse-polynomials": "3.0.1",
621+ "spec": "8.1.2",
622+ "spec-discovery": "8.4.1",
623+ "spec-mocha": "5.1.1",
624+ "spec-node": "0.0.3",
625+ "spec-quickcheck": "5.0.2",
626+ "spec-reporter-xunit": "0.7.1",
627+ "splitmix": "2.1.0",
628+ "ssrs": "1.0.0",
629+ "st": "6.2.0",
630+ "statistics": "0.3.2",
631+ "strictlypositiveint": "1.0.1",
632+ "string-parsers": "8.0.0",
633+ "strings": "6.0.1",
634+ "strings-extra": "4.0.0",
635+ "stringutils": "0.0.13",
636+ "structured-logging": "1.0.0",
637+ "substitute": "0.2.3",
638+ "supabase": "0.1.0",
639+ "supply": "0.2.0",
640+ "svg-parser": "3.0.0",
641+ "systemd-journald": "0.3.0",
642+ "tagged": "4.0.2",
643+ "tailrec": "6.1.0",
644+ "tanstack-query": "3.0.0",
645+ "tecton": "0.2.1",
646+ "tecton-halogen": "0.2.0",
647+ "temporal": "0.2.0",
648+ "test-unit": "17.0.0",
649+ "text-formatting": "0.1.0",
650+ "thermite": "6.3.1",
651+ "thermite-dom": "0.3.1",
652+ "these": "6.0.0",
653+ "threading": "0.0.3",
654+ "tidy": "0.11.1",
655+ "tidy-codegen": "4.0.1",
656+ "tldr": "0.0.0",
657+ "toestand": "0.9.0",
658+ "transformation-matrix": "1.0.1",
659+ "transformers": "6.1.0",
660+ "transit": "1.0.0",
661+ "tree-rose": "4.0.2",
662+ "trivial-unfold": "0.5.0",
663+ "ts-bridge": "4.0.0",
664+ "tuples": "7.0.0",
665+ "two-or-more": "1.0.0",
666+ "type-equality": "4.0.1",
667+ "typedenv": "2.0.1",
668+ "typelevel": "6.0.0",
669+ "typelevel-lists": "2.1.0",
670+ "typelevel-peano": "1.0.1",
671+ "typelevel-prelude": "7.0.0",
672+ "typelevel-regex": "0.0.3",
673+ "typelevel-rows": "0.1.0",
674+ "typisch": "0.4.0",
675+ "uint": "7.0.0",
676+ "ulid": "3.0.1",
677+ "uncurried-transformers": "1.1.0",
678+ "undefined": "2.0.0",
679+ "undefined-is-not-a-problem": "1.1.0",
680+ "unfoldable": "6.0.0",
681+ "unicode": "6.0.0",
682+ "unique": "0.6.1",
683+ "unlift": "1.0.1",
684+ "unordered-collections": "3.1.0",
685+ "unsafe-coerce": "6.0.0",
686+ "unsafe-reference": "5.0.0",
687+ "untagged-to-tagged": "0.1.4",
688+ "untagged-union": "1.0.0",
689+ "uri": "9.0.0",
690+ "url-immutable": "1.0.0",
691+ "url-regex-safe": "0.1.1",
692+ "uuid": "9.0.0",
693+ "uuidv4": "1.0.0",
694+ "validation": "6.0.0",
695+ "variant": "8.0.0",
696+ "variant-encodings": "2.0.0",
697+ "variant-gen": "1.0.0",
698+ "vectorfield": "1.0.1",
699+ "vectors": "2.1.0",
700+ "versions": "7.0.0",
701+ "visx": "0.0.2",
702+ "vitest": "2.0.1",
703+ "wasm-base": "0.2.0",
704+ "web-chain": "1.0.1",
705+ "web-clipboard": "6.0.0",
706+ "web-cssom": "2.0.0",
707+ "web-cssom-view": "0.1.0",
708+ "web-dom": "6.0.0",
709+ "web-dom-parser": "8.0.0",
710+ "web-dom-xpath": "3.0.0",
711+ "web-encoding": "3.0.0",
712+ "web-events": "4.0.0",
713+ "web-fetch": "4.0.1",
714+ "web-file": "4.0.0",
715+ "web-geometry": "0.1.0",
716+ "web-html": "4.1.1",
717+ "web-pointerevents": "2.0.0",
718+ "web-proletarian": "1.0.0",
719+ "web-promise": "3.2.0",
720+ "web-resize-observer": "2.1.0",
721+ "web-router": "1.0.0",
722+ "web-socket": "4.0.0",
723+ "web-storage": "5.0.0",
724+ "web-streams": "4.0.0",
725+ "web-touchevents": "4.0.0",
726+ "web-uievents": "5.0.0",
727+ "web-url": "2.0.0",
728+ "web-workers": "2.0.0",
729+ "web-xhr": "5.0.1",
730+ "webb-aff-list": "0.0.2",
731+ "webb-array": "0.0.2",
732+ "webb-channel": "0.0.3",
733+ "webb-commandline": "0.0.3",
734+ "webb-directory": "0.0.7",
735+ "webb-file": "0.0.1",
736+ "webb-map": "0.0.1",
737+ "webb-monad": "0.0.2",
738+ "webb-mutex": "0.0.7",
739+ "webb-parsing": "0.0.5",
740+ "webb-random": "0.0.1",
741+ "webb-refer": "0.0.3",
742+ "webb-set": "0.0.1",
743+ "webb-slot": "0.0.1",
744+ "webb-stateful": "0.0.3",
745+ "webb-string": "0.0.1",
746+ "webb-test": "0.0.1",
747+ "webb-thread": "0.0.2",
748+ "webb-writer": "0.0.3",
749+ "webextension-polyfill": "0.1.0",
750+ "webgpu": "0.0.1",
751+ "which": "2.0.0",
752+ "whine-core": "0.0.34",
753+ "xterm": "1.0.0",
754+ "yaml-next": "3.1.1",
755+ "yoga-acp-om": "0.1.1",
756+ "yoga-better-auth": "0.2.2",
757+ "yoga-bun-yoga": "0.2.1",
758+ "yoga-config": "0.2.1",
759+ "yoga-country": "3.0.0",
760+ "yoga-docker-compose": "0.1.1",
761+ "yoga-dynamodb": "0.1.1",
762+ "yoga-elasticsearch": "0.1.1",
763+ "yoga-fastify": "0.5.4",
764+ "yoga-fastify-om": "0.4.7",
765+ "yoga-fetch": "1.0.1",
766+ "yoga-fetch-om": "0.8.0",
767+ "yoga-format": "1.0.0",
768+ "yoga-heroui": "2.0.3",
769+ "yoga-http-api": "0.3.4",
770+ "yoga-jaeger": "0.1.1",
771+ "yoga-json": "5.2.1",
772+ "yoga-language": "1.0.0",
773+ "yoga-next-fastify": "0.2.0",
774+ "yoga-om": "2.2.1",
775+ "yoga-om-layer": "2.1.0",
776+ "yoga-om-strom": "0.4.3",
777+ "yoga-om-workerbees": "0.1.2",
778+ "yoga-opentelemetry": "0.2.0",
779+ "yoga-options": "0.1.1",
780+ "yoga-pino": "0.1.1",
781+ "yoga-postgres": "6.0.0",
782+ "yoga-react": "1.0.2",
783+ "yoga-react-dom": "2.0.1",
784+ "yoga-react-native": "0.2.1",
785+ "yoga-react-om": "0.2.0",
786+ "yoga-redis": "0.1.1",
787+ "yoga-scylladb": "0.1.1",
788+ "yoga-shadcn": "1.0.5",
789+ "yoga-sql-types": "0.2.0",
790+ "yoga-sqlite": "0.3.4",
791+ "yoga-sqlite-om": "0.3.0",
792+ "yoga-sse": "0.1.1",
793+ "yoga-subtlecrypto": "0.1.0",
794+ "yoga-test-docker": "0.1.2",
795+ "yoga-timezone": "1.0.0",
796+ "yoga-tree": "1.0.0",
797+ "yoga-tree-svg": "0.1.0",
798+ "yoga-tree-utils": "1.0.0",
799+ "z3": "0.0.2",
800+ "zipperarray": "2.0.0"
801+ }
802+ },
803+ "extra_packages": {}
804+ },
805+ "packages": {
806+ "arraybuffer": {
807+ "type": "registry",
808+ "version": "13.2.0",
809+ "integrity": "sha256-WPYcYUR+RCUx+Mnccz1Irg1ryvA7pE6OqpkBlqpCqk0=",
810+ "dependencies": [
811+ "arraybuffer-types",
812+ "arrays",
813+ "effect",
814+ "float32",
815+ "functions",
816+ "gen",
817+ "maybe",
818+ "nullable",
819+ "prelude",
820+ "tailrec",
821+ "uint",
822+ "unfoldable"
823+ ]
824+ },
825+ "arraybuffer-builder": {
826+ "type": "registry",
827+ "version": "3.1.0",
828+ "integrity": "sha256-qYW2k/Np6AN8o4tXE526R6QYSqY9JCWJCYo46DXCYLY=",
829+ "dependencies": [
830+ "arraybuffer",
831+ "arraybuffer-types",
832+ "effect",
833+ "float32",
834+ "identity",
835+ "lists",
836+ "maybe",
837+ "newtype",
838+ "prelude",
839+ "tailrec",
840+ "transformers",
841+ "uint"
842+ ]
843+ },
844+ "arraybuffer-types": {
845+ "type": "registry",
846+ "version": "3.0.2",
847+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
848+ "dependencies": []
849+ },
850+ "arrays": {
851+ "type": "registry",
852+ "version": "7.3.0",
853+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
854+ "dependencies": [
855+ "bifunctors",
856+ "control",
857+ "foldable-traversable",
858+ "functions",
859+ "maybe",
860+ "nonempty",
861+ "partial",
862+ "prelude",
863+ "safe-coerce",
864+ "st",
865+ "tailrec",
866+ "tuples",
867+ "unfoldable",
868+ "unsafe-coerce"
869+ ]
870+ },
871+ "bifunctors": {
872+ "type": "registry",
873+ "version": "6.1.0",
874+ "integrity": "sha256-CvZRb8uI75eKIqiYntR+k05Wk6tKlMS5w8sCA2AFna0=",
875+ "dependencies": [
876+ "const",
877+ "either",
878+ "newtype",
879+ "prelude",
880+ "tuples"
881+ ]
882+ },
883+ "const": {
884+ "type": "registry",
885+ "version": "6.0.0",
886+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
887+ "dependencies": [
888+ "invariant",
889+ "newtype",
890+ "prelude"
891+ ]
892+ },
893+ "contravariant": {
894+ "type": "registry",
895+ "version": "6.0.0",
896+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
897+ "dependencies": [
898+ "const",
899+ "either",
900+ "newtype",
901+ "prelude",
902+ "tuples"
903+ ]
904+ },
905+ "control": {
906+ "type": "registry",
907+ "version": "6.0.0",
908+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
909+ "dependencies": [
910+ "newtype",
911+ "prelude"
912+ ]
913+ },
914+ "distributive": {
915+ "type": "registry",
916+ "version": "6.0.0",
917+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
918+ "dependencies": [
919+ "identity",
920+ "newtype",
921+ "prelude",
922+ "tuples",
923+ "type-equality"
924+ ]
925+ },
926+ "effect": {
927+ "type": "registry",
928+ "version": "4.0.0",
929+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
930+ "dependencies": [
931+ "prelude"
932+ ]
933+ },
934+ "either": {
935+ "type": "registry",
936+ "version": "6.1.0",
937+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
938+ "dependencies": [
939+ "control",
940+ "invariant",
941+ "maybe",
942+ "prelude"
943+ ]
944+ },
945+ "enums": {
946+ "type": "registry",
947+ "version": "6.0.1",
948+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
949+ "dependencies": [
950+ "control",
951+ "either",
952+ "gen",
953+ "maybe",
954+ "newtype",
955+ "nonempty",
956+ "partial",
957+ "prelude",
958+ "tuples",
959+ "unfoldable"
960+ ]
961+ },
962+ "exceptions": {
963+ "type": "registry",
964+ "version": "6.1.0",
965+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
966+ "dependencies": [
967+ "effect",
968+ "either",
969+ "maybe",
970+ "prelude"
971+ ]
972+ },
973+ "exists": {
974+ "type": "registry",
975+ "version": "6.0.0",
976+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
977+ "dependencies": [
978+ "unsafe-coerce"
979+ ]
980+ },
981+ "float32": {
982+ "type": "registry",
983+ "version": "2.0.0",
984+ "integrity": "sha256-lO8pshPBj5ExM+/ZjZ8nXVltb37XGJdRP8vakl0LBTE=",
985+ "dependencies": [
986+ "gen",
987+ "maybe",
988+ "prelude"
989+ ]
990+ },
991+ "foldable-traversable": {
992+ "type": "registry",
993+ "version": "6.0.0",
994+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
995+ "dependencies": [
996+ "bifunctors",
997+ "const",
998+ "control",
999+ "either",
1000+ "functors",
1001+ "identity",
1002+ "maybe",
1003+ "newtype",
1004+ "orders",
1005+ "prelude",
1006+ "tuples"
1007+ ]
1008+ },
1009+ "foreign": {
1010+ "type": "registry",
1011+ "version": "7.0.0",
1012+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
1013+ "dependencies": [
1014+ "either",
1015+ "functions",
1016+ "identity",
1017+ "integers",
1018+ "lists",
1019+ "maybe",
1020+ "prelude",
1021+ "strings",
1022+ "transformers"
1023+ ]
1024+ },
1025+ "functions": {
1026+ "type": "registry",
1027+ "version": "6.0.0",
1028+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
1029+ "dependencies": [
1030+ "prelude"
1031+ ]
1032+ },
1033+ "functors": {
1034+ "type": "registry",
1035+ "version": "5.0.0",
1036+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
1037+ "dependencies": [
1038+ "bifunctors",
1039+ "const",
1040+ "contravariant",
1041+ "control",
1042+ "distributive",
1043+ "either",
1044+ "invariant",
1045+ "maybe",
1046+ "newtype",
1047+ "prelude",
1048+ "profunctor",
1049+ "tuples",
1050+ "unsafe-coerce"
1051+ ]
1052+ },
1053+ "gen": {
1054+ "type": "registry",
1055+ "version": "4.0.0",
1056+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
1057+ "dependencies": [
1058+ "either",
1059+ "foldable-traversable",
1060+ "identity",
1061+ "maybe",
1062+ "newtype",
1063+ "nonempty",
1064+ "prelude",
1065+ "tailrec",
1066+ "tuples",
1067+ "unfoldable"
1068+ ]
1069+ },
1070+ "identity": {
1071+ "type": "registry",
1072+ "version": "6.0.0",
1073+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
1074+ "dependencies": [
1075+ "control",
1076+ "invariant",
1077+ "newtype",
1078+ "prelude"
1079+ ]
1080+ },
1081+ "int64": {
1082+ "type": "registry",
1083+ "version": "3.0.0",
1084+ "integrity": "sha256-umLvKog9B9xKJHsoihXDFM/6jjy+xEfOERxLEsWmnqs=",
1085+ "dependencies": [
1086+ "effect",
1087+ "foreign",
1088+ "functions",
1089+ "gen",
1090+ "integers",
1091+ "maybe",
1092+ "nullable",
1093+ "prelude",
1094+ "unsafe-coerce"
1095+ ]
1096+ },
1097+ "integers": {
1098+ "type": "registry",
1099+ "version": "6.0.0",
1100+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
1101+ "dependencies": [
1102+ "maybe",
1103+ "numbers",
1104+ "prelude"
1105+ ]
1106+ },
1107+ "invariant": {
1108+ "type": "registry",
1109+ "version": "6.0.0",
1110+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
1111+ "dependencies": [
1112+ "control",
1113+ "prelude"
1114+ ]
1115+ },
1116+ "lazy": {
1117+ "type": "registry",
1118+ "version": "6.0.0",
1119+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
1120+ "dependencies": [
1121+ "control",
1122+ "foldable-traversable",
1123+ "invariant",
1124+ "prelude"
1125+ ]
1126+ },
1127+ "lists": {
1128+ "type": "registry",
1129+ "version": "7.0.0",
1130+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
1131+ "dependencies": [
1132+ "bifunctors",
1133+ "control",
1134+ "foldable-traversable",
1135+ "lazy",
1136+ "maybe",
1137+ "newtype",
1138+ "nonempty",
1139+ "partial",
1140+ "prelude",
1141+ "tailrec",
1142+ "tuples",
1143+ "unfoldable"
1144+ ]
1145+ },
1146+ "maybe": {
1147+ "type": "registry",
1148+ "version": "6.0.0",
1149+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
1150+ "dependencies": [
1151+ "control",
1152+ "invariant",
1153+ "newtype",
1154+ "prelude"
1155+ ]
1156+ },
1157+ "newtype": {
1158+ "type": "registry",
1159+ "version": "5.0.0",
1160+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
1161+ "dependencies": [
1162+ "prelude",
1163+ "safe-coerce"
1164+ ]
1165+ },
1166+ "nonempty": {
1167+ "type": "registry",
1168+ "version": "7.0.0",
1169+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
1170+ "dependencies": [
1171+ "control",
1172+ "foldable-traversable",
1173+ "maybe",
1174+ "prelude",
1175+ "tuples",
1176+ "unfoldable"
1177+ ]
1178+ },
1179+ "nullable": {
1180+ "type": "registry",
1181+ "version": "6.0.0",
1182+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
1183+ "dependencies": [
1184+ "effect",
1185+ "functions",
1186+ "maybe"
1187+ ]
1188+ },
1189+ "numbers": {
1190+ "type": "registry",
1191+ "version": "9.0.1",
1192+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
1193+ "dependencies": [
1194+ "functions",
1195+ "maybe"
1196+ ]
1197+ },
1198+ "orders": {
1199+ "type": "registry",
1200+ "version": "6.0.0",
1201+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
1202+ "dependencies": [
1203+ "newtype",
1204+ "prelude"
1205+ ]
1206+ },
1207+ "parsing": {
1208+ "type": "registry",
1209+ "version": "11.0.0",
1210+ "integrity": "sha256-N88gb/XbM29vw/Uop83shuMFT4wieQCz4wlQAct5eMs=",
1211+ "dependencies": [
1212+ "arrays",
1213+ "control",
1214+ "effect",
1215+ "either",
1216+ "enums",
1217+ "foldable-traversable",
1218+ "functions",
1219+ "identity",
1220+ "integers",
1221+ "lazy",
1222+ "lists",
1223+ "maybe",
1224+ "newtype",
1225+ "nullable",
1226+ "numbers",
1227+ "partial",
1228+ "prelude",
1229+ "st",
1230+ "strings",
1231+ "tailrec",
1232+ "transformers",
1233+ "tuples",
1234+ "unfoldable",
1235+ "unicode",
1236+ "unsafe-coerce"
1237+ ]
1238+ },
1239+ "parsing-dataview": {
1240+ "type": "registry",
1241+ "version": "3.2.4",
1242+ "integrity": "sha256-dq1SCl76/UrWhAbxW5Z3OsEpWi1+O0+1nQCo/g3dYaU=",
1243+ "dependencies": [
1244+ "arraybuffer",
1245+ "arraybuffer-types",
1246+ "effect",
1247+ "enums",
1248+ "float32",
1249+ "maybe",
1250+ "parsing",
1251+ "prelude",
1252+ "strings",
1253+ "tailrec",
1254+ "transformers",
1255+ "tuples",
1256+ "uint"
1257+ ]
1258+ },
1259+ "partial": {
1260+ "type": "registry",
1261+ "version": "4.0.0",
1262+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
1263+ "dependencies": []
1264+ },
1265+ "prelude": {
1266+ "type": "registry",
1267+ "version": "6.0.2",
1268+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1269+ "dependencies": []
1270+ },
1271+ "profunctor": {
1272+ "type": "registry",
1273+ "version": "6.0.1",
1274+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
1275+ "dependencies": [
1276+ "control",
1277+ "distributive",
1278+ "either",
1279+ "exists",
1280+ "invariant",
1281+ "newtype",
1282+ "prelude",
1283+ "tuples"
1284+ ]
1285+ },
1286+ "record": {
1287+ "type": "registry",
1288+ "version": "4.0.0",
1289+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
1290+ "dependencies": [
1291+ "functions",
1292+ "prelude",
1293+ "unsafe-coerce"
1294+ ]
1295+ },
1296+ "refs": {
1297+ "type": "registry",
1298+ "version": "6.0.0",
1299+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
1300+ "dependencies": [
1301+ "effect",
1302+ "prelude"
1303+ ]
1304+ },
1305+ "safe-coerce": {
1306+ "type": "registry",
1307+ "version": "2.0.0",
1308+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
1309+ "dependencies": [
1310+ "unsafe-coerce"
1311+ ]
1312+ },
1313+ "st": {
1314+ "type": "registry",
1315+ "version": "6.2.0",
1316+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
1317+ "dependencies": [
1318+ "partial",
1319+ "prelude",
1320+ "tailrec",
1321+ "unsafe-coerce"
1322+ ]
1323+ },
1324+ "strings": {
1325+ "type": "registry",
1326+ "version": "6.0.1",
1327+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
1328+ "dependencies": [
1329+ "arrays",
1330+ "control",
1331+ "either",
1332+ "enums",
1333+ "foldable-traversable",
1334+ "gen",
1335+ "integers",
1336+ "maybe",
1337+ "newtype",
1338+ "nonempty",
1339+ "partial",
1340+ "prelude",
1341+ "tailrec",
1342+ "tuples",
1343+ "unfoldable",
1344+ "unsafe-coerce"
1345+ ]
1346+ },
1347+ "tailrec": {
1348+ "type": "registry",
1349+ "version": "6.1.0",
1350+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
1351+ "dependencies": [
1352+ "bifunctors",
1353+ "effect",
1354+ "either",
1355+ "identity",
1356+ "maybe",
1357+ "partial",
1358+ "prelude",
1359+ "refs"
1360+ ]
1361+ },
1362+ "transformers": {
1363+ "type": "registry",
1364+ "version": "6.1.0",
1365+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1366+ "dependencies": [
1367+ "control",
1368+ "distributive",
1369+ "effect",
1370+ "either",
1371+ "exceptions",
1372+ "foldable-traversable",
1373+ "identity",
1374+ "lazy",
1375+ "maybe",
1376+ "newtype",
1377+ "prelude",
1378+ "st",
1379+ "tailrec",
1380+ "tuples",
1381+ "unfoldable"
1382+ ]
1383+ },
1384+ "tuples": {
1385+ "type": "registry",
1386+ "version": "7.0.0",
1387+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
1388+ "dependencies": [
1389+ "control",
1390+ "invariant",
1391+ "prelude"
1392+ ]
1393+ },
1394+ "type-equality": {
1395+ "type": "registry",
1396+ "version": "4.0.1",
1397+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
1398+ "dependencies": []
1399+ },
1400+ "uint": {
1401+ "type": "registry",
1402+ "version": "7.0.0",
1403+ "integrity": "sha256-MCTYyDPFLoNLweSY1oEjKKo0xhqCGrAbiBQNdva1B3w=",
1404+ "dependencies": [
1405+ "effect",
1406+ "enums",
1407+ "gen",
1408+ "maybe",
1409+ "numbers",
1410+ "prelude"
1411+ ]
1412+ },
1413+ "unfoldable": {
1414+ "type": "registry",
1415+ "version": "6.0.0",
1416+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
1417+ "dependencies": [
1418+ "foldable-traversable",
1419+ "maybe",
1420+ "partial",
1421+ "prelude",
1422+ "tuples"
1423+ ]
1424+ },
1425+ "unicode": {
1426+ "type": "registry",
1427+ "version": "6.0.0",
1428+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
1429+ "dependencies": [
1430+ "foldable-traversable",
1431+ "maybe",
1432+ "strings"
1433+ ]
1434+ },
1435+ "unsafe-coerce": {
1436+ "type": "registry",
1437+ "version": "6.0.0",
1438+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
1439+ "dependencies": []
1440+ },
1441+ "web-encoding": {
1442+ "type": "registry",
1443+ "version": "3.0.0",
1444+ "integrity": "sha256-h9oYV0tHTqWhP2J1MwPWR28qwHOwjeVxgq/0YNTJOZo=",
1445+ "dependencies": [
1446+ "arraybuffer-types",
1447+ "effect",
1448+ "newtype",
1449+ "prelude"
1450+ ]
1451+ }
1452+ }
1453+}
library/spago.yamlnew file+42
@@ -0,0 +1,42 @@
1+# https://github.com/purescript/spago#polyrepo-support
2+
3+package:
4+ name: protobuf
5+ publish:
6+ license: BSD-3-Clause
7+ version: 4.6.0
8+ location:
9+ githubOwner: rowtype-yoga
10+ githubRepo: purescript-protobuf
11+ subdir: library
12+ dependencies:
13+ - arraybuffer: ">=13.1.1 <14.0.0"
14+ - arraybuffer-builder: ">=3.1.0 <4.0.0"
15+ - arraybuffer-types: ">=3.0.2 <4.0.0"
16+ - arrays: ">=7.2.0 <8.0.0"
17+ - control: ">=6.0.0 <7.0.0"
18+ - effect: ">=4.0.0 <5.0.0"
19+ - either: ">=6.1.0 <7.0.0"
20+ - enums: ">=6.0.1 <7.0.0"
21+ - exceptions: ">=6.0.0 <7.0.0"
22+ - float32: ">=2.0.0 <3.0.0"
23+ - foldable-traversable: ">=6.0.0 <7.0.0"
24+ - functions: ">=6.0.0 <7.0.0"
25+ - int64: ">=3.0.0 <4.0.0"
26+ - lists: ">=7.0.0 <8.0.0"
27+ - maybe: ">=6.0.0 <7.0.0"
28+ - newtype: ">=5.0.0 <6.0.0"
29+ - parsing: ">=10.3.0 <12.0.0"
30+ - parsing-dataview: ">=3.2.4 <4.0.0"
31+ - prelude: ">=6.0.1 <7.0.0"
32+ - record: ">=4.0.0 <5.0.0"
33+ - strings: ">=6.0.1 <7.0.0"
34+ - tailrec: ">=6.1.0 <7.0.0"
35+ - transformers: ">=6.0.0 <7.0.0"
36+ - tuples: ">=7.0.0 <8.0.0"
37+ - uint: ">=7.0.0 <8.0.0"
38+ - web-encoding: ">=3.0.0 <4.0.0"
39+
40+workspace:
41+ packageSet:
42+ registry: 81.1.0
library/src/Protobuf/Internal/Common.pursnew file+189
@@ -0,0 +1,189 @@
1+-- | Common utility definitions.
2+module Protobuf.Internal.Common
3+ ( Bytes(..)
4+ , FieldNumber
5+ , WireType(..)
6+ , class Default
7+ , default
8+ , fromDefault
9+ , isDefault
10+ , label
11+ , toDefault
12+ )
13+ where
14+
15+import Prelude
16+
17+import Control.Monad.Error.Class (throwError, catchError)
18+import Data.ArrayBuffer.ArrayBuffer as AB
19+import Data.ArrayBuffer.Builder (DataBuff(..), toView)
20+import Data.ArrayBuffer.Cast (toUint8Array)
21+import Data.ArrayBuffer.DataView as DV
22+import Data.ArrayBuffer.Typed as TA
23+import Data.Enum (class BoundedEnum, class Enum, Cardinality(..), fromEnum)
24+import Data.Float32 (Float32)
25+import Data.Float32 as Float32
26+import Data.Generic.Rep (class Generic)
27+import Data.Int64 (Int64)
28+import Data.Maybe (Maybe(..))
29+import Data.Newtype (class Newtype)
30+import Data.Show.Generic (genericShow)
31+import Data.String as String
32+import Data.UInt (UInt)
33+import Data.UInt as UInt
34+import Data.UInt64 (UInt64)
35+import Effect.Unsafe (unsafePerformEffect)
36+import Parsing (ParserT, ParseError(..))
37+
38+type FieldNumber
39+ = UInt
40+
41+-- | https://protobuf.dev/programming-guides/encoding#structure
42+data WireType
43+ = VarInt
44+ | Bits64
45+ | LenDel
46+ | Bits32
47+
48+derive instance eqWireType :: Eq WireType
49+
50+derive instance genericWireType :: Generic WireType _
51+
52+instance ordWireType :: Ord WireType where
53+ compare l r = compare (fromEnum l) (fromEnum r)
54+
55+instance boundedWireType :: Bounded WireType where
56+ top = Bits32
57+ bottom = VarInt
58+
59+instance enumWireType :: Enum WireType where
60+ succ VarInt = Just Bits64
61+ succ Bits64 = Just LenDel
62+ succ LenDel = Just Bits32
63+ succ Bits32 = Nothing
64+ pred VarInt = Nothing
65+ pred Bits64 = Just VarInt
66+ pred LenDel = Just Bits64
67+ pred Bits32 = Just LenDel
68+
69+instance boundedEnumWireType :: BoundedEnum WireType where
70+ cardinality = Cardinality 4
71+ toEnum 0 = Just VarInt
72+ toEnum 1 = Just Bits64
73+ toEnum 2 = Just LenDel
74+ toEnum 5 = Just Bits32
75+ toEnum _ = Nothing
76+ fromEnum VarInt = 0
77+ fromEnum Bits64 = 1
78+ fromEnum LenDel = 2
79+ fromEnum Bits32 = 5
80+
81+instance showWireType :: Show WireType where
82+ show = genericShow
83+
84+-- | Representation of a __bytes__
85+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
86+-- | field.
87+-- |
88+-- | On a message which has been decoded,
89+-- | The wrapped `DataBuff` will usually be a `DataView`.
90+-- | In that case, the `DataView` is a view into the
91+-- | received message I/O buffer.
92+-- |
93+-- | For messages which you intend to encode,
94+-- | You may set the `DataBuff` to `DataView` or `ArrayBuffer`,
95+-- | whichever seems best.
96+-- |
97+-- | The `ArrayBuffer` and `DataView` are mutable, so be careful not to mutate
98+-- | them if anything might read them again. Here we trade off typechecker
99+-- | guarantees for implementation simplicity.
100+newtype Bytes = Bytes DataBuff
101+
102+instance showBytes :: Show Bytes where
103+ show (Bytes (Buff ab)) = "<ArrayBuffer length " <> show (AB.byteLength ab) <> ">"
104+ show (Bytes (View dv)) = "<DataView length " <> show (DV.byteLength dv) <> ">"
105+
106+instance eqBytes :: Eq Bytes where
107+ eq (Bytes l) (Bytes r) =
108+ unsafePerformEffect
109+ $ do
110+ l' <- toUint8Array $ toView l -- :: Effect Uint8Array
111+ r' <- toUint8Array $ toView r -- :: Effect Uint8Array
112+ TA.eq l' r'
113+
114+derive instance newtypeBytes :: Newtype Bytes _
115+
116+-- | In Protobuf, [zero values are “default values”](https://protobuf.dev/programming-guides/proto3#default)
117+-- | and have special semantics.
118+class Default a where
119+ default :: a
120+ isDefault :: a -> Boolean
121+
122+-- | `""`
123+instance Default String where
124+ default = ""
125+ isDefault = String.null
126+
127+-- | *0*
128+instance defaultInt :: Default Int where
129+ default = 0
130+ isDefault x = x == 0
131+
132+-- | *0*
133+instance defaultUInt :: Default UInt where
134+ default = UInt.fromInt 0
135+ isDefault x = x == default
136+
137+-- | *0*
138+instance defaultInt64 :: Default Int64 where
139+ default = zero
140+ isDefault x = x == default
141+
142+-- | *0*
143+instance defaultUInt64 :: Default UInt64 where
144+ default = zero
145+ isDefault x = x == default
146+
147+-- | *0.0*
148+instance defaultFloat32 :: Default Float32 where
149+ default = Float32.fromNumber' 0.0
150+ isDefault x = x == default
151+
152+-- | *0.0*
153+instance defaultNumber :: Default Number where
154+ default = 0.0
155+ isDefault x = x == 0.0
156+
157+-- | `false`
158+instance defaultBoolean :: Default Boolean where
159+ default = false
160+ isDefault x = not x
161+
162+-- | Zero-length
163+instance defaultBytes :: Default Bytes where
164+ default = Bytes $ Buff $ unsafePerformEffect $ AB.empty 0
165+ isDefault (Bytes buf) = DV.byteLength (toView buf) == 0
166+
167+-- | Turns a “default” (zero) value into `Nothing`.
168+fromDefault :: forall a. Default a => Eq a => a -> Maybe a
169+fromDefault x = if isDefault x then Nothing else Just x
170+
171+-- | Turns `Nothing` into a “default” (zero) value.
172+-- |
173+-- | The Protobuf spec requires that a *no presence* field set
174+-- | to its “default” (zero) value must not be serialized to the wire.
175+-- |
176+-- | When receiving messages we can use this function to interpret
177+-- | a missing *no presence* field as a “default” value.
178+toDefault :: forall a. Default a => Maybe a -> a
179+toDefault Nothing = default
180+toDefault (Just x) = x
181+
182+-- | If parsing fails inside this labelled context, then prepend the `String`
183+-- | to the error `String` in the `ParseError`. Use this to establish
184+-- | context for parsing failure error messages.
185+label :: forall m s a. Monad m => String -> ParserT s m a -> ParserT s m a
186+label messagePrefix p =
187+ catchError p
188+ $ \(ParseError message pos) ->
189+ throwError $ ParseError (messagePrefix <> message) pos
library/src/Protobuf/Internal/Decode.jsnew file+53
@@ -0,0 +1,53 @@
1+export const unsafeCopyFloat32le = function(dv) {
2+ return function (n) {
3+ let result = new Array(n);
4+ for (let i=0;i<n;i=i+1) {
5+ result[i] = dv.getFloat32(i*4, true);
6+ }
7+ return result;
8+ };
9+};
10+
11+export const unsafeCopyFloat64le = function(dv) {
12+ return function (n) {
13+ let result = new Array(n);
14+ for (let i=0;i<n;i=i+1) {
15+ result[i] = dv.getFloat64(i*8, true);
16+ }
17+ return result;
18+ };
19+};
20+
21+export const unsafeCopyInt32le = function(dv) {
22+ return function (n) {
23+ let result = new Array(n);
24+ for (let i=0;i<n;i=i+1) {
25+ result[i] = dv.getInt32(i*4, true);
26+ }
27+ return result;
28+ };
29+};
30+
31+export const unsafeCopyUInt32le = function(dv) {
32+ return function (n) {
33+ let result = new Array(n);
34+ for (let i=0;i<n;i=i+1) {
35+ result[i] = dv.getUint32(i*4, true);
36+ }
37+ return result;
38+ };
39+};
40+
41+export const unsafeCopyInt64le = function(lowHighConstructor) {
42+ return function(dv) {
43+ return function (n) {
44+ let result = new Array(n);
45+ for (let i=0;i<n;i=i+1) {
46+ let low = dv.getInt32(i*8, true);
47+ let high = dv.getInt32((i*8)+4, true);
48+ result[i] = lowHighConstructor(low, high);
49+ }
50+ return result;
51+ };
52+ };
53+};
library/src/Protobuf/Internal/Decode.pursnew file+421
@@ -0,0 +1,421 @@
1+-- | Primitive parsers for decoding Google Protocol Buffers.
2+module Protobuf.Internal.Decode
3+ ( decodeDouble
4+ , decodeDoubleArray
5+ , decodeFloat
6+ , decodeFloatArray
7+ , decodeInt32
8+ , decodeInt64
9+ , decodeUint32
10+ , decodeUint64
11+ , decodeSint32
12+ , decodeSint64
13+ , decodeFixed32
14+ , decodeFixed32Array
15+ , decodeFixed64
16+ , decodeFixed64Array
17+ , decodeSfixed32
18+ , decodeSfixed32Array
19+ , decodeSfixed64
20+ , decodeSfixed64Array
21+ , decodeBool
22+ , decodeString
23+ , decodeBytes
24+ , decodeZigzag32
25+ , decodeVarint32
26+ , decodeTag32
27+ , decodeZigzag64
28+ , decodeVarint64
29+ ) where
30+
31+import Prelude
32+
33+import Control.Alt ((<|>))
34+import Control.Lazy (defer)
35+import Control.Monad.Trans.Class (lift)
36+import Data.ArrayBuffer.Builder (DataBuff(..))
37+import Data.ArrayBuffer.Cast (toUint8Array)
38+import Data.ArrayBuffer.Types (ByteLength, DataView)
39+import Data.Either (Either(..))
40+import Data.Enum (toEnum)
41+import Data.Float32 (Float32)
42+import Data.Function.Uncurried (Fn2, mkFn2)
43+import Data.Int64 (Int64)
44+import Data.Int64 as Int64
45+import Data.Maybe (Maybe(..))
46+import Data.Tuple (Tuple(..))
47+import Data.UInt (UInt)
48+import Data.UInt as UInt
49+import Data.UInt64 (UInt64)
50+import Data.UInt64 as UInt64
51+import Effect.Class (class MonadEffect, liftEffect)
52+import Effect.Exception (catchException, message)
53+import Effect.Unsafe (unsafePerformEffect)
54+import Parsing (ParserT, fail)
55+import Parsing.DataView as Parse
56+import Protobuf.Internal.Common (Bytes(..), FieldNumber, WireType, label)
57+import Web.Encoding.TextDecoder as TextDecoder
58+import Web.Encoding.UtfLabel as UtfLabel
59+
60+-- | __double__
61+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
62+decodeDouble :: forall m. MonadEffect m => ParserT DataView m Number
63+decodeDouble = Parse.anyFloat64le
64+
65+-- | repeated packed __double__
66+-- |
67+-- | Equivalent to `manyLength decodeDouble`, but specialized so it’s faster.
68+decodeDoubleArray :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array Number)
69+decodeDoubleArray len = label "decodeDoubleArray / " do
70+ when ((len `mod` 8) /= 0) $ fail "Cannot consume a byteLength indivisible by 8."
71+ dv <- Parse.takeN len
72+ pure $ unsafeCopyFloat64le dv (len `div` 8)
73+
74+-- | Copy *N* little-endian `Number`s from the `DataView` into a new `Array`.
75+foreign import unsafeCopyFloat64le :: DataView -> Int -> Array Number
76+
77+-- | __float__
78+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
79+decodeFloat :: forall m. MonadEffect m => ParserT DataView m Float32
80+decodeFloat = Parse.anyFloat32le
81+
82+-- | repeated packed __float__
83+-- |
84+-- | Equivalent to `manyLength decodeFloat`, but specialized so it’s faster.
85+decodeFloatArray :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array Float32)
86+decodeFloatArray len = label "decodeFloatArray / " do
87+ when ((len `mod` 4) /= 0) $ fail "Cannot consume a byteLength indivisible by 4."
88+ dv <- Parse.takeN len
89+ pure $ unsafeCopyFloat32le dv (len `div` 4)
90+
91+-- | Copy *N* little-endian `Float32`s from the `DataView` into a new `Array`.
92+foreign import unsafeCopyFloat32le :: DataView -> Int -> Array Float32
93+
94+-- | __int32__
95+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
96+decodeInt32 :: forall m. MonadEffect m => ParserT DataView m Int
97+decodeInt32 = do
98+ n <- decodeVarint64
99+ -- But this is a problem with the Protobuf spec?
100+ -- “If you use int32 or int64 as the type for a negative number, the resulting
101+ -- varint is always ten bytes long”
102+ -- https://protobuf.dev/programming-guides/encoding#signed_integers
103+ -- So what are we supposed to do if the field type is int32 but the
104+ -- decoded varint is too big? There is no guarantee that either negative
105+ -- or positive numbers encoded as varints will be in range.
106+ -- I suppose we could check that the high bits are all 0
107+ -- for positive or all 1 for negative.
108+ -- The conformance tests seem to like it if we just throw away
109+ -- the hight bits. So that's what we'll do.
110+ --
111+ -- conformance checker hates this:
112+ -- case Int64.toInt n of
113+ -- Nothing -> fail "int32 value out of range."
114+ -- Just x -> pure x
115+ pure $ UInt64.lowBits n
116+
117+-- | __int64__
118+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
119+decodeInt64 :: forall m. MonadEffect m => ParserT DataView m Int64
120+decodeInt64 = Int64.toSigned <$> decodeVarint64
121+
122+-- | __uint32__
123+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
124+decodeUint32 :: forall m. MonadEffect m => ParserT DataView m UInt
125+decodeUint32 = do
126+ n <- decodeVarint64
127+ pure $ UInt.fromInt $ UInt64.lowBits n
128+
129+-- | __uint64__
130+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
131+decodeUint64 :: forall m. MonadEffect m => ParserT DataView m UInt64
132+decodeUint64 = decodeVarint64
133+
134+-- | __sint32__
135+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
136+decodeSint32 :: forall m. MonadEffect m => ParserT DataView m Int
137+decodeSint32 = do
138+ n <- decodeZigzag32 <$> decodeVarint32
139+ pure n
140+
141+-- | __sint64__
142+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
143+decodeSint64 :: forall m. MonadEffect m => ParserT DataView m Int64
144+decodeSint64 = decodeZigzag64 <$> decodeVarint64
145+
146+-- | __fixed32__
147+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
148+decodeFixed32 :: forall m. MonadEffect m => ParserT DataView m UInt
149+decodeFixed32 = Parse.anyUint32le
150+
151+-- | repeated packed __fixed32__
152+-- |
153+-- | Equivalent to `manyLength decodeFixed32`, but specialized so it’s faster.
154+decodeFixed32Array :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array UInt)
155+-- | repeated packed __float__
156+decodeFixed32Array len = label "decodeFixed32Array / " do
157+ when ((len `mod` 4) /= 0) $ fail "Cannot consume a byteLength indivisible by 4."
158+ dv <- Parse.takeN len
159+ pure $ unsafeCopyUInt32le dv (len `div` 4)
160+
161+-- | Copy *N* little-endian `UInt`s from the `DataView` into a new `Array`.
162+foreign import unsafeCopyUInt32le :: DataView -> Int -> Array UInt
163+
164+-- | __fixed64__
165+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
166+decodeFixed64 :: forall m. MonadEffect m => ParserT DataView m UInt64
167+decodeFixed64 = UInt64.fromLowHighBits <$> Parse.anyInt32le <*> Parse.anyInt32le
168+
169+-- | repeated packed __fixed64__
170+-- |
171+-- | Equivalent to `manyLength decodeFixed64`, but specialized so it’s faster.
172+decodeFixed64Array :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array UInt64)
173+-- | repeated packed __float__
174+decodeFixed64Array len = label "decodeFixed64Array / " do
175+ when ((len `mod` 8) /= 0) $ fail "Cannot consume a byteLength indivisible by 8."
176+ dv <- Parse.takeN len
177+ pure $ unsafeCopyInt64le (mkFn2 UInt64.fromLowHighBits) dv (len `div` 8)
178+
179+-- | Copy *N* little-endian `Int64`s or `UInt64`s from the `DataView` into a new `Array`.
180+-- | Takes a `fromLowHighBits` constructor.
181+foreign import unsafeCopyInt64le :: forall a. (Fn2 Int Int a) -> DataView -> Int -> Array a
182+
183+-- | __sfixed32__
184+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
185+decodeSfixed32 :: forall m. MonadEffect m => ParserT DataView m Int
186+decodeSfixed32 = Parse.anyInt32le
187+
188+-- | repeated packed __sfixed32__
189+-- |
190+-- | Equivalent to `manyLength decodeSfixed32`, but specialized so it’s faster.
191+decodeSfixed32Array :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array Int)
192+-- | repeated packed __float__
193+decodeSfixed32Array len = label "decodeSfixed32Array / " do
194+ when ((len `mod` 4) /= 0) $ fail "Cannot consume a byteLength indivisible by 4."
195+ dv <- Parse.takeN len
196+ pure $ unsafeCopyInt32le dv (len `div` 4)
197+
198+-- | Copy *N* little-endian `Int`s from the `DataView` into a new `Array`.
199+foreign import unsafeCopyInt32le :: DataView -> Int -> Array Int
200+
201+-- | __sfixed64__
202+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
203+decodeSfixed64 :: forall m. MonadEffect m => ParserT DataView m Int64
204+decodeSfixed64 = Int64.fromLowHighBits <$> Parse.anyInt32le <*> Parse.anyInt32le
205+
206+-- | repeated packed __sfixed64__
207+-- |
208+-- | Equivalent to `manyLength decodeSfixed64`, but specialized so it’s faster.
209+decodeSfixed64Array :: forall m. MonadEffect m => ByteLength -> ParserT DataView m (Array Int64)
210+-- | repeated packed __float__
211+decodeSfixed64Array len = label "decodeSfixed64Array / " do
212+ when ((len `mod` 8) /= 0) $ fail "Cannot consume a byteLength indivisible by 8."
213+ dv <- Parse.takeN len
214+ pure $ unsafeCopyInt64le (mkFn2 Int64.fromLowHighBits) dv (len `div` 8)
215+
216+-- | __bool__
217+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
218+decodeBool :: forall m. MonadEffect m => ParserT DataView m Boolean
219+decodeBool = do
220+ x <- decodeVarint64
221+ if UInt64.lowBits x == 0 && UInt64.highBits x == 0 then
222+ pure false
223+ else
224+ pure true
225+
226+-- | __string__
227+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
228+decodeString :: forall m. MonadEffect m => ParserT DataView m String
229+decodeString = do
230+ stringlen <- decodeVarint32
231+ stringview <-
232+ (Parse.takeN $ UInt.toInt stringlen)
233+ <|>
234+ (defer \_ -> fail $ "decodeString expected string of length " <> show stringlen)
235+ stringarray <- lift $ liftEffect $ toUint8Array stringview
236+ result <- lift $ liftEffect $ catchException
237+ (\error -> pure $ Left $ message error)
238+ (Right <$> TextDecoder.decode stringarray textDecoder)
239+ case result of
240+ Left msg -> defer \_ -> fail $ "decodeString decode failed " <> msg
241+ Right x -> pure x
242+
243+textDecoder :: TextDecoder.TextDecoder
244+textDecoder = unsafePerformEffect $ TextDecoder.new UtfLabel.utf8
245+
246+-- | __bytes__
247+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
248+decodeBytes :: forall m. MonadEffect m => ParserT DataView m Bytes
249+decodeBytes = do
250+ len <- UInt.toInt <$> decodeVarint32
251+ dv <- Parse.takeN len
252+ pure $ Bytes $ View dv
253+
254+-- | https://stackoverflow.com/questions/2210923/zig-zag-decoding
255+decodeZigzag32 :: UInt -> Int
256+decodeZigzag32 n = UInt.toInt $ (n `UInt.zshr` (UInt.fromInt 1)) `UInt.xor` (unegate (n `UInt.and` (UInt.fromInt 1)))
257+ where
258+ unegate :: UInt -> UInt
259+ unegate = UInt.fromInt <<< negate <<< UInt.toInt
260+
261+-- | Parse the field number and wire type of the next field.
262+-- | https://protobuf.dev/programming-guides/encoding#structure
263+decodeTag32 :: forall m. MonadEffect m => ParserT DataView m (Tuple FieldNumber WireType)
264+decodeTag32 = do
265+ n <- decodeVarint32
266+ let
267+ wireTypeInt = UInt.toInt $ n `UInt.and` (UInt.fromInt 7)
268+ case toEnum wireTypeInt of
269+ Just wireType -> pure $ Tuple (n `UInt.shr` (UInt.fromInt 3)) wireType
270+ Nothing -> fail $ "Unknown WireType " <> show wireTypeInt
271+
272+-- | There is no `varint32` in the Protbuf spec, this is
273+-- | just a performance-improving assumption we make
274+-- | in cases where we would be surprised to see a number
275+-- | larger than 32 bits, such as in field numbers.
276+-- | We think this is worth the risk because `UInt` is
277+-- | represented as a native Javascript Number whereas
278+-- | `UInt64` is a composite library type, so we expect the
279+-- | performance difference to be significant.
280+-- |
281+-- | https://protobuf.dev/programming-guides/encoding#varints
282+decodeVarint32 :: forall m. MonadEffect m => ParserT DataView m UInt
283+decodeVarint32 = do
284+ n_0 <- Parse.anyUint8
285+ if n_0 < u0x80 then
286+ pure n_0
287+ else do
288+ let
289+ acc_0 = n_0 `UInt.and` u0x7F
290+ n_1 <- Parse.anyUint8
291+ if n_1 < u0x80 then
292+ pure $ acc_0 `UInt.or` (n_1 `UInt.shl` u7)
293+ else do
294+ let
295+ acc_1 = ((n_1 `UInt.and` u0x7F) `UInt.shl` u7) `UInt.or` acc_0
296+ n_2 <- Parse.anyUint8
297+ if n_2 < u0x80 then
298+ pure $ acc_1 `UInt.or` (n_2 `UInt.shl` u14)
299+ else do
300+ let
301+ acc_2 = ((n_2 `UInt.and` u0x7F) `UInt.shl` u14) `UInt.or` acc_1
302+ n_3 <- Parse.anyUint8
303+ if n_3 < u0x80 then
304+ pure $ acc_2 `UInt.or` (n_3 `UInt.shl` u21)
305+ else do
306+ let
307+ acc_3 = ((n_3 `UInt.and` u0x7F) `UInt.shl` u21) `UInt.or` acc_2
308+ n_4 <- Parse.anyUint8
309+ -- if n_4 < u0x10 -- This is the correct logic, but doesn't pass conformance?
310+ if n_4 < u0x80 then
311+ pure $ acc_3 `UInt.or` (n_4 `UInt.shl` u28)
312+ else
313+ fail "varint32 overflow. This varint was expected to fit in 32 bits."
314+ where
315+ u7 = UInt.fromInt 7
316+
317+ u14 = UInt.fromInt 14
318+
319+ u21 = UInt.fromInt 21
320+
321+ u28 = UInt.fromInt 28
322+
323+ u0x7F = UInt.fromInt 0x7F
324+
325+ u0x80 = UInt.fromInt 0x80
326+
327+-- | https://stackoverflow.com/questions/2210923/zig-zag-decoding
328+decodeZigzag64 :: UInt64 -> Int64
329+decodeZigzag64 n = let n' = Int64.toSigned n in (n' `Int64.zshr` one) `Int64.xor` (lnegate (n' `Int64.and` one))
330+ where
331+ lnegate x = Int64.complement x + one
332+
333+-- | https://protobuf.dev/programming-guides/encoding#varints
334+decodeVarint64 :: forall m. MonadEffect m => ParserT DataView m UInt64
335+decodeVarint64 = do
336+ n_0 <- fromInt <$> Parse.anyUint8
337+ if n_0 < u0x80 then
338+ pure n_0
339+ else do
340+ let
341+ acc_0 = n_0 `UInt64.and` u0x7F
342+ n_1 <- fromInt <$> Parse.anyUint8
343+ if n_1 < u0x80 then
344+ pure $ acc_0 `UInt64.or` (n_1 `UInt64.shl` u7)
345+ else do
346+ let
347+ acc_1 = ((n_1 `UInt64.and` u0x7F) `UInt64.shl` u7) `UInt64.or` acc_0
348+ n_2 <- fromInt <$> Parse.anyUint8
349+ if n_2 < u0x80 then
350+ pure $ acc_1 `UInt64.or` (n_2 `UInt64.shl` u14)
351+ else do
352+ let
353+ acc_2 = ((n_2 `UInt64.and` u0x7F) `UInt64.shl` u14) `UInt64.or` acc_1
354+ n_3 <- fromInt <$> Parse.anyUint8
355+ if n_3 < u0x80 then
356+ pure $ acc_2 `UInt64.or` (n_3 `UInt64.shl` u21)
357+ else do
358+ let
359+ acc_3 = ((n_3 `UInt64.and` u0x7F) `UInt64.shl` u21) `UInt64.or` acc_2
360+ n_4 <- fromInt <$> Parse.anyUint8
361+ if n_4 < u0x80 then
362+ pure $ acc_3 `UInt64.or` (n_4 `UInt64.shl` u28)
363+ else do
364+ let
365+ acc_4 = ((n_4 `UInt64.and` u0x7F) `UInt64.shl` u28) `UInt64.or` acc_3
366+ n_5 <- fromInt <$> Parse.anyUint8
367+ if n_5 < u0x80 then
368+ pure $ acc_4 `UInt64.or` (n_5 `UInt64.shl` u35)
369+ else do
370+ let
371+ acc_5 = ((n_5 `UInt64.and` u0x7F) `UInt64.shl` u35) `UInt64.or` acc_4
372+ n_6 <- fromInt <$> Parse.anyUint8
373+ if n_6 < u0x80 then
374+ pure $ acc_5 `UInt64.or` (n_6 `UInt64.shl` u42)
375+ else do
376+ let
377+ acc_6 = ((n_6 `UInt64.and` u0x7F) `UInt64.shl` u42) `UInt64.or` acc_5
378+ n_7 <- fromInt <$> Parse.anyUint8
379+ if n_7 < u0x80 then
380+ pure $ acc_6 `UInt64.or` (n_7 `UInt64.shl` u49)
381+ else do
382+ let
383+ acc_7 = ((n_7 `UInt64.and` u0x7F) `UInt64.shl` u49) `UInt64.or` acc_6
384+ n_8 <- fromInt <$> Parse.anyUint8
385+ if n_8 < u0x80 then
386+ pure $ acc_7 `UInt64.or` (n_8 `UInt64.shl` u56)
387+ else do
388+ let
389+ acc_8 = ((n_8 `UInt64.and` u0x7F) `UInt64.shl` u56) `UInt64.or` acc_7
390+ n_9 <- fromInt <$> Parse.anyUint8
391+ if n_9 < u0x02 then
392+ pure $ acc_8 `UInt64.or` (n_9 `UInt64.shl` u63)
393+ else
394+ fail "varint64 overflow. Possibly there is an encoding error in the input stream."
395+ where
396+ fromInt :: UInt -> UInt64
397+ fromInt = Int64.toUnsigned <<< Int64.fromInt <<< UInt.toInt
398+
399+ u7 = UInt64.unsafeFromInt 7 :: UInt64
400+
401+ u14 = UInt64.unsafeFromInt 14 :: UInt64
402+
403+ u21 = UInt64.unsafeFromInt 21 :: UInt64
404+
405+ u28 = UInt64.unsafeFromInt 28 :: UInt64
406+
407+ u35 = UInt64.unsafeFromInt 35 :: UInt64
408+
409+ u42 = UInt64.unsafeFromInt 42 :: UInt64
410+
411+ u49 = UInt64.unsafeFromInt 49 :: UInt64
412+
413+ u56 = UInt64.unsafeFromInt 56 :: UInt64
414+
415+ u63 = UInt64.unsafeFromInt 63 :: UInt64
416+
417+ u0x02 = UInt64.unsafeFromInt 2 :: UInt64
418+
419+ u0x7F = UInt64.unsafeFromInt 0x7F :: UInt64
420+
421+ u0x80 = UInt64.unsafeFromInt 0x80 :: UInt64
library/src/Protobuf/Internal/Encode.pursnew file+406
@@ -0,0 +1,406 @@
1+-- | Primitive builders for encoding Google Protocol Buffers.
2+module Protobuf.Internal.Encode
3+ ( encodeDoubleField
4+ , encodeDouble
5+ , encodeFloatField
6+ , encodeFloat
7+ , encodeInt32Field
8+ , encodeInt32
9+ , encodeInt64Field
10+ , encodeInt64
11+ , encodeUint32Field
12+ , encodeUint32
13+ , encodeUint64Field
14+ , encodeUint64
15+ , encodeSint32Field
16+ , encodeSint32
17+ , encodeSint64Field
18+ , encodeSint64
19+ , encodeFixed32Field
20+ , encodeFixed32
21+ , encodeFixed64Field
22+ , encodeFixed64
23+ , encodeSfixed32Field
24+ , encodeSfixed32
25+ , encodeSfixed64Field
26+ , encodeSfixed64
27+ , encodeBoolField
28+ , encodeBool
29+ , encodeStringField
30+ , encodeBytesField
31+ , encodeBuilder
32+ , encodeVarint32
33+ , encodeZigzag32
34+ , encodeTag32
35+ , encodeVarint64
36+ , encodeZigzag64
37+ ) where
38+
39+import Prelude
40+
41+import Control.Monad.Writer.Trans (tell)
42+import Data.ArrayBuffer.ArrayBuffer as AB
43+import Data.ArrayBuffer.Builder (toView)
44+import Data.ArrayBuffer.Builder as Builder
45+import Data.ArrayBuffer.DataView as DV
46+import Data.ArrayBuffer.Typed as AT
47+import Data.Enum (fromEnum)
48+import Data.Float32 (Float32)
49+import Data.Int64 (Int64)
50+import Data.Int64 as Int64
51+import Data.UInt64 (UInt64)
52+import Data.UInt64 as UInt64
53+import Web.Encoding.TextEncoder as TextEncoder
54+import Data.UInt (UInt)
55+import Data.UInt as UInt
56+import Effect.Class (class MonadEffect)
57+import Effect.Unsafe (unsafePerformEffect)
58+import Protobuf.Internal.Common (FieldNumber, WireType(..), Bytes(..))
59+
60+encodeDoubleField :: forall m. MonadEffect m => FieldNumber -> Number -> Builder.PutM m Unit
61+-- https://protobuf.dev/programming-guides/encoding#non-varint_numbers
62+encodeDoubleField fieldNumber n = do
63+ encodeTag32 fieldNumber Bits64
64+ encodeDouble n
65+
66+-- | __double__
67+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
68+encodeDouble :: forall m. MonadEffect m => Number -> Builder.PutM m Unit
69+-- https://protobuf.dev/programming-guides/encoding#non-varint_numbers
70+encodeDouble n = do
71+ Builder.putFloat64le n
72+
73+encodeFloatField :: forall m. MonadEffect m => FieldNumber -> Float32 -> Builder.PutM m Unit
74+encodeFloatField fieldNumber n = do
75+ encodeTag32 fieldNumber Bits32
76+ encodeFloat n
77+
78+-- | __float__
79+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
80+encodeFloat :: forall m. MonadEffect m => Float32 -> Builder.PutM m Unit
81+encodeFloat n = do
82+ Builder.putFloat32le n
83+
84+encodeInt32Field :: forall m. MonadEffect m => FieldNumber -> Int -> Builder.PutM m Unit
85+-- “If you use int32 or int64 as the type for a negative number, the resulting
86+-- varint is always ten bytes long”
87+-- https://protobuf.dev/programming-guides/encoding#signed_integers
88+encodeInt32Field fieldNumber n = do
89+ encodeTag32 fieldNumber VarInt
90+ encodeInt32 n
91+
92+-- | __int32__
93+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
94+encodeInt32 :: forall m. MonadEffect m => Int -> Builder.PutM m Unit
95+-- “If you use int32 or int64 as the type for a negative number, the resulting
96+-- varint is always ten bytes long”
97+-- https://protobuf.dev/programming-guides/encoding#signed_integers
98+encodeInt32 n = do
99+ encodeVarint64 $ Int64.toUnsigned $ Int64.fromInt n
100+
101+encodeInt64Field :: forall m. MonadEffect m => FieldNumber -> Int64 -> Builder.PutM m Unit
102+-- “If you use int32 or int64 as the type for a negative number, the resulting
103+-- varint is always ten bytes long”
104+-- https://protobuf.dev/programming-guides/encoding#signed_integers
105+encodeInt64Field fieldNumber n = do
106+ encodeTag32 fieldNumber VarInt
107+ encodeInt64 n
108+
109+-- | __int64__
110+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
111+encodeInt64 :: forall m. MonadEffect m => Int64 -> Builder.PutM m Unit
112+-- “If you use int32 or int64 as the type for a negative number, the resulting
113+-- varint is always ten bytes long”
114+-- https://protobuf.dev/programming-guides/encoding#signed_integers
115+encodeInt64 n = do
116+ encodeVarint64 $ Int64.toUnsigned n
117+
118+encodeUint32Field :: forall m. MonadEffect m => FieldNumber -> UInt -> Builder.PutM m Unit
119+encodeUint32Field fieldNumber n = do
120+ encodeTag32 fieldNumber VarInt
121+ encodeUint32 n
122+
123+-- | __uint32__
124+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
125+encodeUint32 :: forall m. MonadEffect m => UInt -> Builder.PutM m Unit
126+encodeUint32 n = do
127+ encodeVarint32 n
128+
129+encodeUint64Field :: forall m. MonadEffect m => FieldNumber -> UInt64 -> Builder.PutM m Unit
130+encodeUint64Field fieldNumber n = do
131+ encodeTag32 fieldNumber VarInt
132+ encodeUint64 n
133+
134+-- | __uint64__
135+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
136+encodeUint64 :: forall m. MonadEffect m => UInt64 -> Builder.PutM m Unit
137+encodeUint64 n = do
138+ encodeVarint64 n
139+
140+encodeSint32Field :: forall m. MonadEffect m => FieldNumber -> Int -> Builder.PutM m Unit
141+encodeSint32Field fieldNumber n = do
142+ encodeTag32 fieldNumber VarInt
143+ encodeSint32 n
144+
145+-- | __sint32__
146+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
147+encodeSint32 :: forall m. MonadEffect m => Int -> Builder.PutM m Unit
148+encodeSint32 n = do
149+ encodeVarint32 $ encodeZigzag32 n
150+
151+encodeSint64Field :: forall m. MonadEffect m => FieldNumber -> Int64 -> Builder.PutM m Unit
152+encodeSint64Field fieldNumber n = do
153+ encodeTag32 fieldNumber VarInt
154+ encodeSint64 n
155+
156+-- | __sint64__
157+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
158+encodeSint64 :: forall m. MonadEffect m => Int64 -> Builder.PutM m Unit
159+encodeSint64 n = do
160+ encodeVarint64 $ encodeZigzag64 n
161+
162+encodeFixed32Field :: forall m. MonadEffect m => FieldNumber -> UInt -> Builder.PutM m Unit
163+-- https://protobuf.dev/programming-guides/encoding#non-varint_numbers
164+encodeFixed32Field fieldNumber n = do
165+ encodeTag32 fieldNumber Bits32
166+ encodeFixed32 n
167+
168+-- | __fixed32__
169+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
170+encodeFixed32 :: forall m. MonadEffect m => UInt -> Builder.PutM m Unit
171+-- https://protobuf.dev/programming-guides/encoding#non-varint_numbers
172+encodeFixed32 n = do
173+ Builder.putUint32le n
174+
175+encodeFixed64Field :: forall m. MonadEffect m => FieldNumber -> UInt64 -> Builder.PutM m Unit
176+encodeFixed64Field fieldNumber n = do
177+ encodeTag32 fieldNumber Bits64
178+ encodeFixed64 n
179+
180+-- | __fixed64__
181+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
182+encodeFixed64 :: forall m. MonadEffect m => UInt64 -> Builder.PutM m Unit
183+encodeFixed64 n = do
184+ Builder.putInt32le $ UInt64.lowBits n
185+ Builder.putInt32le $ UInt64.highBits n
186+
187+encodeSfixed32Field :: forall m. MonadEffect m => FieldNumber -> Int -> Builder.PutM m Unit
188+encodeSfixed32Field fieldNumber n = do
189+ encodeTag32 fieldNumber Bits32
190+ encodeSfixed32 n
191+
192+-- | __sfixed32__
193+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
194+encodeSfixed32 :: forall m. MonadEffect m => Int -> Builder.PutM m Unit
195+encodeSfixed32 n = do
196+ Builder.putInt32le n
197+
198+encodeSfixed64Field :: forall m. MonadEffect m => FieldNumber -> Int64 -> Builder.PutM m Unit
199+encodeSfixed64Field fieldNumber n = do
200+ encodeTag32 fieldNumber Bits64
201+ encodeSfixed64 n
202+
203+-- | __sfixed64__
204+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
205+encodeSfixed64 :: forall m. MonadEffect m => Int64 -> Builder.PutM m Unit
206+encodeSfixed64 n = do
207+ Builder.putInt32le $ Int64.lowBits n
208+ Builder.putInt32le $ Int64.highBits n
209+
210+encodeBoolField :: forall m. MonadEffect m => FieldNumber -> Boolean -> Builder.PutM m Unit
211+encodeBoolField fieldNumber n = do
212+ encodeTag32 fieldNumber VarInt
213+ encodeBool n
214+
215+-- | __bool__
216+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
217+encodeBool :: forall m. MonadEffect m => Boolean -> Builder.PutM m Unit
218+encodeBool n = do
219+ if n then Builder.putInt8 1 else Builder.putInt8 0
220+
221+-- | __string__
222+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
223+encodeStringField :: forall m. MonadEffect m => FieldNumber -> String -> Builder.PutM m Unit
224+-- https://protobuf.dev/programming-guides/encoding#strings
225+encodeStringField fieldNumber s = do
226+ encodeTag32 fieldNumber LenDel
227+ let
228+ stringbuf = AT.buffer $ TextEncoder.encode s textEncoder
229+ encodeVarint32 $ UInt.fromInt $ AB.byteLength stringbuf
230+ Builder.putArrayBuffer stringbuf
231+
232+textEncoder :: TextEncoder.TextEncoder
233+textEncoder = unsafePerformEffect TextEncoder.new
234+
235+-- | __bytes__
236+-- | [Scalar Value Type](https://protobuf.dev/programming-guides/proto3#scalar)
237+encodeBytesField :: forall m. MonadEffect m => FieldNumber -> Bytes -> Builder.PutM m Unit
238+encodeBytesField fieldNumber (Bytes buf) = do
239+ encodeTag32 fieldNumber LenDel
240+ encodeVarint32 $ UInt.fromInt $ DV.byteLength $ toView buf
241+ Builder.putDataBuff buf
242+
243+-- | `tell` with a tag and a length delimit.
244+encodeBuilder :: forall m. MonadEffect m => FieldNumber -> Builder.Builder -> Builder.PutM m Unit
245+encodeBuilder fieldNumber s = do
246+ encodeTag32 fieldNumber LenDel
247+ encodeVarint32 $ UInt.fromInt $ Builder.length s
248+ tell s
249+
250+-- | https://protobuf.dev/programming-guides/encoding/#signed-ints
251+encodeZigzag32 :: Int -> UInt
252+encodeZigzag32 n = let n' = UInt.fromInt n in (n' `UInt.shl` (UInt.fromInt 1)) `UInt.xor` (n' `UInt.shr` (UInt.fromInt 31))
253+
254+-- | https://protobuf.dev/programming-guides/encoding#structure
255+encodeTag32 :: forall m. MonadEffect m => FieldNumber -> WireType -> Builder.PutM m Unit
256+encodeTag32 fieldNumber wireType = encodeVarint32 $ (fieldNumber `UInt.shl` (UInt.fromInt 3)) `UInt.or` (UInt.fromInt $ fromEnum wireType)
257+
258+-- | There is no `varint32` in the Protbuf spec, this is
259+-- | just a performance-improving assumption we make
260+-- | in cases where we would be surprised to see a number
261+-- | larger than 32 bits, such as in field numbers.
262+-- | We think this is worth the risk because `UInt` is
263+-- | represented as a native Javascript Number whereas
264+-- | `UInt64` is a composite library type, so we expect the
265+-- | performance difference to be significant.
266+-- |
267+-- | https://protobuf.dev/programming-guides/encoding#varints
268+encodeVarint32 :: forall m. MonadEffect m => UInt -> Builder.PutM m Unit
269+encodeVarint32 n_0 = do
270+ let
271+ group_0 = n_0 `UInt.and` u0x7F
272+
273+ n_1 = n_0 `UInt.zshr` u7
274+ if n_1 == u0 then
275+ Builder.putUint8 group_0
276+ else do
277+ Builder.putUint8 $ u0x80 `UInt.or` group_0
278+ let
279+ group_1 = n_1 `UInt.and` u0x7F
280+
281+ n_2 = n_1 `UInt.zshr` u7
282+ if n_2 == u0 then
283+ Builder.putUint8 group_1
284+ else do
285+ Builder.putUint8 $ u0x80 `UInt.or` group_1
286+ let
287+ group_2 = n_2 `UInt.and` u0x7F
288+
289+ n_3 = n_2 `UInt.zshr` u7
290+ if n_3 == u0 then
291+ Builder.putUint8 group_2
292+ else do
293+ Builder.putUint8 $ u0x80 `UInt.or` group_2
294+ let
295+ group_3 = n_3 `UInt.and` u0x7F
296+
297+ n_4 = n_3 `UInt.zshr` u7
298+ if n_4 == u0 then
299+ Builder.putUint8 group_3
300+ else do
301+ Builder.putUint8 $ u0x80 `UInt.or` group_3
302+ Builder.putUint8 n_4
303+ where
304+ u0 = UInt.fromInt 0
305+
306+ u7 = UInt.fromInt 7
307+
308+ u0x7F = UInt.fromInt 0x7F
309+
310+ u0x80 = UInt.fromInt 0x80
311+
312+-- | https://protobuf.dev/programming-guides/encoding/#signed-ints
313+encodeZigzag64 :: Int64 -> UInt64
314+encodeZigzag64 n = Int64.toUnsigned $ (n `Int64.shl` (Int64.fromInt 1)) `Int64.xor` (n `Int64.shr` (Int64.fromInt 63))
315+
316+encodeVarint64 :: forall m. MonadEffect m => UInt64 -> Builder.PutM m Unit
317+encodeVarint64 n_0 = do
318+ let
319+ group_0 = takeGroup n_0
320+
321+ n_1 = n_0 `UInt64.zshr` u7
322+ if n_1 == u0 then
323+ Builder.putUint8 group_0
324+ else do
325+ Builder.putUint8 $ contGroup group_0
326+ let
327+ group_1 = takeGroup n_1
328+
329+ n_2 = n_1 `UInt64.zshr` u7
330+ if n_2 == u0 then
331+ Builder.putUint8 group_1
332+ else do
333+ Builder.putUint8 $ contGroup group_1
334+ let
335+ group_2 = takeGroup n_2
336+
337+ n_3 = n_2 `UInt64.zshr` u7
338+ if n_3 == u0 then
339+ Builder.putUint8 group_2
340+ else do
341+ Builder.putUint8 $ contGroup group_2
342+ let
343+ group_3 = takeGroup n_3
344+
345+ n_4 = n_3 `UInt64.zshr` u7
346+ if n_4 == u0 then
347+ Builder.putUint8 group_3
348+ else do
349+ Builder.putUint8 $ contGroup group_3
350+ let
351+ group_4 = takeGroup n_4
352+
353+ n_5 = n_4 `UInt64.zshr` u7
354+ if n_5 == u0 then
355+ Builder.putUint8 group_4
356+ else do
357+ Builder.putUint8 $ contGroup group_4
358+ let
359+ group_5 = takeGroup n_5
360+
361+ n_6 = n_5 `UInt64.zshr` u7
362+ if n_6 == u0 then
363+ Builder.putUint8 group_5
364+ else do
365+ Builder.putUint8 $ contGroup group_5
366+ let
367+ group_6 = takeGroup n_6
368+
369+ n_7 = n_6 `UInt64.zshr` u7
370+ if n_7 == u0 then
371+ Builder.putUint8 group_6
372+ else do
373+ Builder.putUint8 $ contGroup group_6
374+ let
375+ group_7 = takeGroup n_7
376+
377+ n_8 = n_7 `UInt64.zshr` u7
378+ if n_8 == u0 then
379+ Builder.putUint8 group_7
380+ else do
381+ Builder.putUint8 $ contGroup group_7
382+ let
383+ group_8 = takeGroup n_8
384+
385+ n_9 = n_8 `UInt64.zshr` u7
386+ if n_9 == u0 then
387+ Builder.putUint8 group_8
388+ else do
389+ Builder.putUint8 $ contGroup group_8
390+ Builder.putUint8 $ takeGroup n_9
391+ where
392+ -- copy the low seven bits group from a UInt64
393+ takeGroup :: UInt64 -> UInt
394+ takeGroup n = (UInt.fromInt $ UInt64.lowBits n) `UInt.and` u0x7F
395+
396+ -- Set the high eigth continuation bit of a group
397+ contGroup :: UInt -> UInt
398+ contGroup n = u0x80 `UInt.or` n
399+
400+ u0 = UInt64.unsafeFromInt 0 :: UInt64
401+
402+ u7 = UInt64.unsafeFromInt 7 :: UInt64
403+
404+ u0x7F = UInt.fromInt 0x7F
405+
406+ u0x80 = UInt.fromInt 0x80
library/src/Protobuf/Internal/Prelude.pursnew file+76
@@ -0,0 +1,76 @@
1+-- | The prelude for generated code.
2+module Protobuf.Internal.Prelude
3+ ( module Prelude
4+ , module Control.Alt
5+ , module Record.Builder
6+ , module Data.Array
7+ , module Data.Bounded
8+ , module Data.Enum
9+ , module Data.Eq
10+ , module Data.Function
11+ , module Data.Float32
12+ , module Data.Show
13+ , module Data.Ord
14+ , module Data.Maybe
15+ , module Data.Newtype
16+ , module Data.Generic.Rep
17+ , module Data.Show.Generic
18+ , module Data.Bounded.Generic
19+ , module Data.Enum.Generic
20+ , module Data.Ord.Generic
21+ , module Data.Semigroup
22+ , module Data.String
23+ , module Type.Proxy
24+ , module Record
25+ , module Data.Tuple
26+ , module Data.UInt
27+ , module Prim.Row
28+ , module Data.UInt64
29+ , module Data.Int64
30+ , module Parsing
31+ , module Data.ArrayBuffer.Builder
32+ , module Data.ArrayBuffer.Types
33+ , module Protobuf.Internal.Common
34+ , module Protobuf.Internal.Decode
35+ , module Protobuf.Internal.Encode
36+ , module Protobuf.Internal.Runtime
37+ , module Effect.Class
38+ , module MonadRec.Class
39+ ) where
40+
41+import Type.Proxy (Proxy(..))
42+import Control.Alt (alt)
43+import Control.Monad.Rec.Class (class MonadRec) as MonadRec.Class
44+import Data.Array (snoc, foldRecM)
45+import Data.ArrayBuffer.Builder (PutM)
46+import Data.ArrayBuffer.Types (DataView, ByteLength)
47+import Data.Bounded (class Bounded)
48+import Data.Enum (class BoundedEnum, class Enum)
49+import Data.Eq (class Eq, eq)
50+import Data.Float32 (Float32)
51+import Data.Function (flip)
52+import Data.Generic.Rep (class Generic)
53+import Data.Bounded.Generic (genericBottom, genericTop)
54+import Data.Enum.Generic (genericCardinality, genericPred, genericSucc)
55+import Data.Ord.Generic (genericCompare)
56+import Data.Show.Generic (genericShow)
57+import Data.Int64 (Int64)
58+import Data.UInt64 (UInt64)
59+import Data.Maybe (Maybe(..), maybe)
60+import Data.Newtype (class Newtype)
61+import Data.Ord (class Ord)
62+import Data.Semigroup ((<>))
63+import Data.Show (class Show)
64+import Data.String (joinWith)
65+import Data.Tuple (Tuple(..))
66+import Data.UInt (toInt, fromInt, UInt)
67+import Effect.Class (class MonadEffect) as Effect.Class
68+import Prelude ((>>>), ($), bind, (>>=), pure, discard, append, (<<<), Unit, unit, map, negate)
69+import Prim.Row (class Union, class Nub)
70+import Protobuf.Internal.Common (class Default, Bytes(..), FieldNumber, WireType(..), label, default, fromDefault, isDefault, toDefault)
71+import Protobuf.Internal.Decode (decodeBool, decodeBytes, decodeDouble, decodeDoubleArray, decodeFixed32, decodeFixed32Array, decodeFixed64, decodeFixed64Array, decodeFloat, decodeFloatArray, decodeInt32, decodeInt64, decodeSfixed32, decodeSfixed32Array, decodeSfixed64, decodeSfixed64Array, decodeSint32, decodeSint64, decodeString, decodeTag32, decodeUint32, decodeUint64, decodeVarint32, decodeVarint64, decodeZigzag32, decodeZigzag64)
72+import Protobuf.Internal.Encode (encodeBool, encodeBoolField, encodeBuilder, encodeBytesField, encodeDouble, encodeDoubleField, encodeFixed32, encodeFixed32Field, encodeFixed64, encodeFixed64Field, encodeFloat, encodeFloatField, encodeInt32, encodeInt32Field, encodeInt64, encodeInt64Field, encodeSfixed32, encodeSfixed32Field, encodeSfixed64, encodeSfixed64Field, encodeSint32, encodeSint32Field, encodeSint64, encodeSint64Field, encodeStringField, encodeTag32, encodeUint32, encodeUint32Field, encodeUint64, encodeUint64Field, encodeVarint32, encodeVarint64, encodeZigzag32, encodeZigzag64)
73+import Protobuf.Internal.Runtime (FieldNumberInt, UnknownField(..), manyLength, mergeWith, parseEnum, parseFieldUnknown, parseLenDel, parseMessage, putEnum, putEnumField, putFieldUnknown, putLenDel, putOptional, putPacked, putRepeated)
74+import Record (merge)
75+import Record.Builder (modify, Builder)
76+import Parsing (ParserT)
library/src/Protobuf/Internal/Runtime.pursnew file+284
@@ -0,0 +1,284 @@
1+-- | This module is for import by the generated .purs message modules.
2+module Protobuf.Internal.Runtime
3+ ( parseMessage
4+ , UnknownField(..)
5+ , parseFieldUnknown
6+ , putFieldUnknown
7+ , parseLenDel
8+ , FieldNumberInt
9+ , manyLength
10+ , putLenDel
11+ , putOptional
12+ , putRepeated
13+ , putPacked
14+ , putEnumField
15+ , putEnum
16+ , parseEnum
17+ , mergeWith
18+ ) where
19+
20+import Prelude
21+
22+import Control.Monad.Rec.Class (class MonadRec, tailRecM, Step(..))
23+import Control.Monad.Trans.Class (lift)
24+import Data.Array (snoc, foldRecM)
25+import Data.Array as Array
26+import Data.ArrayBuffer.Builder (DataBuff(..), PutM, subBuilder)
27+import Data.ArrayBuffer.DataView (byteLength)
28+import Data.ArrayBuffer.Types (DataView, ByteLength)
29+import Data.Enum (class BoundedEnum, fromEnum, toEnum)
30+import Data.Foldable (foldl)
31+import Data.Generic.Rep (class Generic)
32+import Data.Int64 as Int64
33+import Data.List (List, (:))
34+import Data.List as List
35+import Data.Maybe (Maybe(..))
36+import Data.Show.Generic (genericShow)
37+import Data.Tuple (Tuple(..))
38+import Data.UInt as UInt
39+import Data.UInt64 (UInt64)
40+import Data.UInt64 as UInt64
41+import Effect.Class (class MonadEffect)
42+import Parsing (ParserT, Position(..), fail, position)
43+import Parsing.Combinators (lookAhead)
44+import Parsing.DataView (takeN, takeRest)
45+import Protobuf.Internal.Common (Bytes(..), FieldNumber, WireType(..), label)
46+import Protobuf.Internal.Decode as Decode
47+import Protobuf.Internal.Encode as Encode
48+import Record.Builder (build, modify)
49+import Record.Builder as RecordB
50+import Type.Proxy (Proxy(..))
51+
52+-- | The parseField argument is a parser which returns a Record builder which,
53+-- | when applied to a Record, will modify the Record to add the parsed field.
54+parseMessage ::
55+ forall m a r.
56+ MonadEffect m =>
57+ MonadRec m =>
58+ (Record r -> a) ->
59+ (Record r) ->
60+ (FieldNumberInt -> WireType -> ParserT DataView m (RecordB.Builder (Record r) (Record r))) ->
61+ ByteLength ->
62+ ParserT DataView m a
63+parseMessage construct default parseField length = do
64+ builders <- manyLength applyParser length
65+ pure $ construct $ build (foldl (>>>) identity builders) default
66+ where
67+ applyParser = do
68+ Tuple fieldNumber wireType <- Decode.decodeTag32
69+ if fieldNumber == UInt.fromInt 0 then
70+ fail "Field number 0 not allowed." -- Conformance tests require this
71+ else
72+ parseField (UInt.toInt fieldNumber) wireType
73+
74+-- | We want an Int FieldNumber to pass to parseField so that we can pattern
75+-- | match on Int literals. UInt doesn't export any constructors, so we can’t
76+-- | pattern match on it.
77+type FieldNumberInt
78+ = Int
79+
80+-- | Call a parser repeatedly until exactly *N* bytes have been consumed.
81+-- | Will fail if not enough bytes remain in the DataView.
82+-- | Will fail if too many bytes are consumed.
83+manyLength ::
84+ forall m a.
85+ MonadEffect m =>
86+ MonadRec m =>
87+ ParserT DataView m a ->
88+ ByteLength ->
89+ ParserT DataView m (Array a)
90+manyLength p len = do
91+ remaining_bytes :: Int <- byteLength <$> lookAhead takeRest
92+ if remaining_bytes < len
93+ then do
94+ fail $ "manyLength " <> show len <> " not enough bytes of input " <> show remaining_bytes <> " remaining"
95+ else do
96+ Position { index: posBegin } <- position
97+ let
98+ go :: List a -> ParserT DataView m (Step (List a) (List a))
99+ go accum = do
100+ Position { index: pos } <- position
101+ case compare (pos - posBegin) len of
102+ GT -> fail $ "manyLength " <> show len <> " consumed too many bytes " <> (show $ pos - posBegin)
103+ EQ -> lift $ pure (Done accum)
104+ LT -> do
105+ x <- p
106+ pure (Loop (x : accum))
107+ -- https://github.com/purescript-contrib/purescript-parsing/pull/199#issuecomment-1145956271
108+ Array.reverse <$> Array.fromFoldable <$> tailRecM go List.Nil
109+
110+-- | A message field value from an unknown `.proto` definition.
111+-- |
112+-- | See [Message Structure](https://protobuf.dev/programming-guides/encoding#structure)
113+-- | for an explanation.
114+-- |
115+-- | - __`UnknownVarInt`__ Use `Protobuf.Internal.Decode.decodeZigzag64`
116+-- | to interpret this as a signed integer.
117+-- | - __`UnknownLenDel`__ holds a variable-length `Bytes`.
118+-- | - __`UnknownBits64`__ must hold `Bytes` of length 8.
119+-- | - __`UnknownBits32`__ must hold `Bytes` of length 4.
120+-- |
121+-- | See the modules __Protobuf.Internal.Encode__
122+-- | and __Protobuf.Internal.Decode__ for ways to operate on the `Bytes`.
123+data UnknownField
124+ = UnknownVarInt FieldNumber UInt64
125+ | UnknownBits64 FieldNumber Bytes
126+ | UnknownLenDel FieldNumber Bytes
127+ | UnknownBits32 FieldNumber Bytes
128+
129+derive instance eqUnknownField :: Eq UnknownField
130+
131+derive instance genericUnknownField :: Generic UnknownField _
132+
133+instance showUnknownField :: Show UnknownField where
134+ show = genericShow
135+
136+-- | Parse and preserve an unknown field.
137+parseFieldUnknown ::
138+ forall m r.
139+ MonadEffect m =>
140+ Int ->
141+ WireType ->
142+ ParserT DataView m (RecordB.Builder (Record ( "__unknown_fields" :: Array UnknownField | r )) (Record ( "__unknown_fields" :: Array UnknownField | r )))
143+parseFieldUnknown fieldNumberInt wireType =
144+ label ("Unknown " <> show wireType <> " " <> show fieldNumber <> " / ")
145+ $ case wireType of
146+ VarInt -> do
147+ x <- Decode.decodeUint64
148+ pure $ modify (Proxy :: Proxy "__unknown_fields")
149+ $ flip snoc
150+ $ UnknownVarInt fieldNumber x
151+ Bits64 -> do
152+ x <- takeN 8
153+ pure $ modify (Proxy :: Proxy "__unknown_fields")
154+ $ flip snoc
155+ $ UnknownBits64 fieldNumber $ Bytes $ View x
156+ LenDel -> do
157+ len <- UInt64.toInt <$> Decode.decodeVarint64
158+ case len of
159+ Nothing -> fail $ "Length-delimited value of unknown field " <> show fieldNumber <> " was too long."
160+ Just l -> do
161+ dv <- takeN l
162+ pure $ modify (Proxy :: Proxy "__unknown_fields")
163+ $ flip snoc $ UnknownLenDel fieldNumber $ Bytes $ View dv
164+ Bits32 -> do
165+ x <- takeN 4
166+ pure $ modify (Proxy :: Proxy "__unknown_fields")
167+ $ flip snoc
168+ $ UnknownBits32 fieldNumber $ Bytes $ View x
169+ where
170+ fieldNumber = UInt.fromInt fieldNumberInt
171+
172+putFieldUnknown ::
173+ forall m.
174+ MonadEffect m =>
175+ UnknownField ->
176+ PutM m Unit
177+putFieldUnknown (UnknownBits64 fieldNumber x) = Encode.encodeBytesField fieldNumber x
178+
179+putFieldUnknown (UnknownVarInt fieldNumber x) = Encode.encodeUint64Field fieldNumber x
180+
181+putFieldUnknown (UnknownLenDel fieldNumber x) = Encode.encodeBytesField fieldNumber x
182+
183+putFieldUnknown (UnknownBits32 fieldNumber x) = Encode.encodeBytesField fieldNumber x
184+
185+-- | Parse a bytelength, then call a parser which takes one bytelength as its argument.
186+parseLenDel ::
187+ forall m a.
188+ MonadEffect m =>
189+ (Int -> ParserT DataView m a) ->
190+ ParserT DataView m a
191+parseLenDel p = do
192+ len <- UInt.toInt <$> Decode.decodeVarint32
193+ remaining_bytes :: Int <- byteLength <$> lookAhead takeRest
194+ if remaining_bytes < len
195+ then do
196+ fail $ "parseLenDel " <> show len <> " not enough bytes of input " <> show remaining_bytes <> " remaining"
197+ else do
198+ p len
199+
200+putLenDel ::
201+ forall m a.
202+ MonadEffect m =>
203+ (a -> PutM m Unit) ->
204+ FieldNumber -> a -> PutM m Unit
205+putLenDel p fieldNumber x = do
206+ b <- subBuilder $ p x
207+ Encode.encodeBuilder fieldNumber b
208+
209+putOptional ::
210+ forall m a.
211+ MonadEffect m =>
212+ FieldNumberInt ->
213+ Maybe a ->
214+ (a -> Boolean) -> -- isDefault predicate. Put nothing if this is true.
215+ (FieldNumber -> a -> PutM m Unit) ->
216+ PutM m Unit
217+putOptional _ Nothing _ _ = pure unit
218+
219+putOptional fieldNumber (Just x) isDefault encoder = do
220+ when (not $ isDefault x) $ encoder (UInt.fromInt fieldNumber) x
221+
222+putRepeated ::
223+ forall m a.
224+ MonadEffect m =>
225+ MonadRec m =>
226+ FieldNumberInt ->
227+ Array a ->
228+ (FieldNumber -> a -> PutM m Unit) ->
229+ PutM m Unit
230+putRepeated fieldNumber xs encoder = foldRecM (\_ x -> encoder fn x) unit xs
231+ where
232+ fn = UInt.fromInt fieldNumber
233+
234+putPacked ::
235+ forall m a.
236+ MonadEffect m =>
237+ MonadRec m =>
238+ FieldNumberInt ->
239+ Array a ->
240+ (a -> PutM m Unit) ->
241+ PutM m Unit
242+putPacked _ [] _ = pure unit
243+
244+putPacked fieldNumber xs encoder = do
245+ b <- subBuilder $ foldRecM (\_ x -> encoder x) unit xs
246+ Encode.encodeBuilder (UInt.fromInt fieldNumber) b
247+
248+putEnumField ::
249+ forall m a.
250+ MonadEffect m =>
251+ BoundedEnum a =>
252+ FieldNumber -> a -> PutM m Unit
253+putEnumField fieldNumber x = do
254+ Encode.encodeTag32 fieldNumber VarInt
255+ putEnum x
256+
257+putEnum :: forall m a. MonadEffect m => BoundedEnum a => a -> PutM m Unit
258+putEnum x = Encode.encodeVarint64 (UInt64.fromLowHighBits x_low x_high :: UInt64)
259+ where
260+ x_int = fromEnum x
261+
262+ x_slong = Int64.fromInt x_int
263+
264+ x_high = Int64.highBits x_slong
265+
266+ x_low = Int64.lowBits x_slong
267+
268+parseEnum :: forall m a. MonadEffect m => BoundedEnum a => ParserT DataView m a
269+parseEnum = do
270+ -- “Enumerator constants must be in the range of a 32-bit integer.”
271+ -- Protobuf Enums can be negative.
272+ -- https://protobuf.dev/programming-guides/proto3#enum
273+ x <- Decode.decodeVarint64
274+ case toEnum (UInt64.lowBits x) of
275+ Nothing -> fail $ "Enum " <> show x <> " out of bounds."
276+ Just e -> pure e
277+
278+-- | Merge the new left with the old right.
279+mergeWith :: forall a. (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a
280+mergeWith f (Just l) (Just r) = Just (f l r)
281+
282+mergeWith _ l Nothing = l
283+
284+mergeWith _ Nothing r = r
library/src/Protobuf/Library.pursnew file+54
@@ -0,0 +1,54 @@
1+-- | Module for types to be imported by a progam which uses __protobuf__.
2+module Protobuf.Library
3+ ( parseAnyMessage
4+ , parseAnyField
5+ , module ReCommon
6+ , module ReRuntime
7+ , module ReParsing
8+ )
9+ where
10+
11+import Prelude
12+
13+import Data.ArrayBuffer.Builder (DataBuff(..))
14+import Data.ArrayBuffer.Types (DataView)
15+import Data.Maybe (Maybe(..))
16+import Data.Tuple (Tuple(..))
17+import Data.UInt64 as UInt64
18+import Effect (Effect)
19+import Parsing (ParserT, fail)
20+import Parsing (liftMaybe, liftEither, liftExceptT) as ReParsing
21+import Parsing.Combinators.Array as Array
22+import Parsing.DataView (takeN)
23+import Protobuf.Internal.Common (Bytes(..), WireType(..))
24+import Protobuf.Internal.Common (class Default, Bytes(..), FieldNumber, label, toDefault) as ReCommon
25+import Protobuf.Internal.Decode as Decode
26+import Protobuf.Internal.Runtime (UnknownField(..))
27+import Protobuf.Internal.Runtime (UnknownField(..)) as ReRuntime
28+
29+-- | Parse one Protobuf field without the `.proto` definition.
30+parseAnyField :: ParserT DataView Effect UnknownField
31+parseAnyField = do
32+ Tuple fieldNumber wireType <- Decode.decodeTag32
33+ case wireType of
34+ VarInt -> UnknownVarInt fieldNumber <$> Decode.decodeUint64
35+ Bits64 -> UnknownBits64 fieldNumber <$> Bytes <$> View <$> takeN 8
36+ LenDel -> do
37+ len <- UInt64.toInt <$> Decode.decodeVarint64
38+ case len of
39+ Nothing -> fail "Length-delimited value of unknown field was too long."
40+ Just l -> UnknownLenDel fieldNumber <$> Bytes <$> View <$> takeN l
41+ Bits32 -> UnknownBits32 fieldNumber <$> Bytes <$> View <$> takeN 4
42+
43+-- | Parse one Protobuf message without the `.proto` definition.
44+-- |
45+-- | If you have a `DataView` which you know contains one Protobuf message
46+-- | but you don’t have the compile-time `.proto` definition for the message,
47+-- | you can use this function to parse the message.
48+-- |
49+-- | If one of the `UnknownField`s is a `LenDel` field, and you know
50+-- | from the `FieldNumber` that
51+-- | the field should be a nested message field, then you can
52+-- | try to recursively `parseAnyMessage` on the `LenDel` field value.
53+parseAnyMessage :: ParserT DataView Effect (Array UnknownField)
54+parseAnyMessage = Array.many $ parseAnyField
nix/conformance.nixdeleted−22
@@ -1,22 +0,0 @@
1−{ pkgs ? import ./pkgs.nix { } }:
2−let
3− protobuf = import ./protobuf.nix { inherit pkgs; };
4−in
5−pkgs.mkShell {
6− nativeBuildInputs = [
7− pkgs.easy-ps.purs-0_13_8
8− pkgs.easy-ps.spago
9− pkgs.nodejs-13_x
10− protobuf
11− ];
12− shellHook = ''
13− export PATH="./bin:$PATH" # PATH to protoc-gen-purescript
14− set -e
15− spago build
16− protoc --purescript_out=./conformance/generated --proto_path=${protobuf}/src --proto_path=${protobuf}/conformance ${protobuf}/conformance/conformance.proto
17− protoc --purescript_out=./conformance/generated --proto_path=${protobuf}/src --proto_path=${protobuf}/conformance ${protobuf}/src/google/protobuf/test_messages_proto3.proto
18− spago -x conformance.dhall build
19− conformance-test-runner --enforce_recommended bin/conformance-purescript
20− '';
21− LC_ALL = "C.UTF-8"; # https://github.com/purescript/spago/issues/507
22−}
nix/pkgs.nixdeleted−21
@@ -1,21 +0,0 @@
1−# https://nixos.org/guides/towards-reproducibility-pinning-nixpkgs.html
2−# { pkgs ? import <nixpkgs> { } }:
3−{ nixpkgs ? import (builtins.fetchTarball {
4− url = "https://github.com/NixOS/nixpkgs/archive/20.03.tar.gz";
5− sha256 = "0182ys095dfx02vl2a20j1hz92dx3mfgz2a6fhn31bqlp1wa8hlq";
6− }) {}
7−}:
8−
9−let
10− easy-ps = import
11− (nixpkgs.fetchFromGitHub {
12− owner = "justinwoo";
13− repo = "easy-purescript-nix";
14− rev = "1ec689df0adf8e8ada7fcfcb513876307ea34226";
15− sha256 = "12hk2zbjkrq2i5fs6xb3x254lnhm9fzkcxph0a7ngxyzfykvf4hi";
16− }) {
17− pkgs = nixpkgs;
18− };
19−
20−# in { inherit nixpkgs; inherit easy-ps; }
21−in nixpkgs // { inherit easy-ps; }
nix/protobuf.nix+182−27
@@ -1,27 +1,101 @@
1−{ pkgs ? import <nixpkgs> { } }:
1+{ stdenv, lib, fetchFromGitHub, autogen, automake, autoconf, libtool, rsync, cmake, ... }:
2+# pkgs ? import <nixpkgs> { } }:
23
4+# The protobuf derivation in nixpkgs does not include the conformance test
5+# runners.
6+# This protobuf derivation includes the conformance test runners.
7+#
8+# References
9+#
10+# https://github.com/protocolbuffers/protobuf/tags
11+#
12+# https://github.com/protocolbuffers/protobuf/blob/master/CHANGES.txt
13+#
14+# https://github.com/NixOS/nixpkgs/tree/master/pkgs/development/libraries/protobuf
15+#
316# https://nixos.wiki/wiki/Packaging/Quirks_and_Caveats
4−# https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/protobuf/generic-v3.nix
517
618let
7− # version = "v3.13.0";
8− # sha256 = "1nqsvi2yfr93kiwlinz8z7c68ilg1j75b2vcpzxzvripxx5h6xhd";
9− version = "v3.9.2";
10− sha256 = "080zxa9w1pxp5y05aiwc0c8mlqkkh98wmid4l7m99cliphsd4qnn";
1119
12− protobufRepo = pkgs.fetchFromGitHub {
13− owner = "protocolbuffers";
14− repo = "protobuf";
15− rev = version;
16− inherit sha256;
20+ protobuf_repo_v3_9_2 = rec {
21+ ref = "v3.9.2";
22+ src = builtins.fetchGit {
23+ url = "https://github.com/protocolbuffers/protobuf";
24+ rev = "52b2447247f535663ac1c292e088b4b27d2910ef";
25+ ref = "refs/tags/${ref}";
26+ };
27+ };
28+ protobuf_repo_v3_14_0 = rec {
29+ ref = "v3.14.0";
30+ src = builtins.fetchGit {
31+ url = "https://github.com/protocolbuffers/protobuf";
32+ rev = "2514f0bd7da7e2af1bed4c5d1b84f031c4d12c10";
33+ ref = "refs/tags/${ref}";
34+ };
35+ };
36+ protobuf_repo_v3_15_8 = rec {
37+ ref = "v3.15.8";
38+ src = builtins.fetchGit {
39+ url = "https://github.com/protocolbuffers/protobuf";
40+ rev = "436bd7880e458532901c58f4d9d1ea23fa7edd52";
41+ ref = "refs/tags/${ref}";
42+ };
43+ };
44+ protobuf_repo_v3_20_1 = rec {
45+ ref = "v3.20.1";
46+ src = builtins.fetchGit {
47+ url = "https://github.com/protocolbuffers/protobuf";
48+ rev = "21027a27c4c2ec1000859ccbcfff46d83b16e1ed";
49+ ref = "refs/tags/${ref}";
50+ };
51+ };
52+ protobuf_repo_v3_21_0 = rec {
53+ ref = "v3.21.0";
54+ src = builtins.fetchGit {
55+ url = "https://github.com/protocolbuffers/protobuf";
56+ rev = "7062d0a2d0075d5e7d5c294fd3984df67a976da3";
57+ ref = "refs/tags/${ref}";
58+ };
59+ };
60+ protobuf_repo_v21_10 = rec {
61+ ref = "v21.10";
62+ src = builtins.fetchGit {
63+ url = "https://github.com/protocolbuffers/protobuf";
64+ rev = "11bc195441adfbc87ff0349f1c4be7a239d1daad";
65+ ref = "refs/tags/${ref}";
66+ };
67+ };
68+ protobuf_repo_v23_2 = rec {
69+ ref = "v23.2";
70+ src = fetchFromGitHub {
71+ owner = "protocolbuffers";
72+ repo = "protobuf";
73+ rev = "v23.2";
74+ hash = "sha256-kYiT7MIhKH28YwZqaIj0ri/fJ5sOaUA4z9jM64o2iqg=";
75+ fetchSubmodules = true;
76+ };
77+ };
78+ protobuf_repo_v24_4 = rec {
79+ ref = "v24.4";
80+ src = fetchFromGitHub {
81+ owner = "protocolbuffers";
82+ repo = "protobuf";
83+ rev = "v24.4";
84+ hash = "sha256-7T6RfSJcKYPaUgmU9SWN99d4sdZDzRUg49cy7H6NWFI=";
85+ fetchSubmodules = true;
86+ };
87+ };
88+ protobuf_repo_v28_2= rec {
89+ ref = "v28.2";
90+ src = fetchFromGitHub {
91+ owner = "protocolbuffers";
92+ repo = "protobuf";
93+ rev = "v28.2";
94+ hash = "sha256-oRomRjmxsil2XcAQ8jbeQ2f34/Uuxe6DIaAswKgbVWQ=";
95+ fetchSubmodules = true;
96+ };
1797 };
1898
19− # # This is pretty much what's in nixpkgs as "protobuf", just `protoc`.
20− # protoc = pkgs.stdenv.mkDerivation {
21− # name = "protoc-${version}";
22− # buildInputs = [ pkgs.autoreconfHook ];
23− # src = protobufRepo;
24− # };
2599
26100 # Builds `protoc`, plus the conformance test runners, and also copies
27101 # in the .proto files for the conformance test protocol,
@@ -31,22 +105,21 @@ let
31105 #
32106 # See the Travis test runner script
33107 # https://github.com/protocolbuffers/protobuf/blob/master/tests.sh
34− #
35− # https://laptrinhx.com/an-elixir-library-for-protocol-buffers-2920413944/#conformance
36− protobuf = pkgs.stdenv.mkDerivation {
37− name = "conformance-${version}";
38− nativeBuildInputs = with pkgs; [ autogen automake autoconf libtool rsync ];
39− src = protobufRepo;
108+ mkProtobuf = repo: stdenv.mkDerivation {
109+ name = "protobuf-${repo.ref}";
110+ nativeBuildInputs = [ autogen automake autoconf libtool rsync ];
111+ src = repo.src;
112+ # https://github.com/protocolbuffers/protobuf/blob/main/src/README.md#c-installation---unix
40113 configurePhase = ''
41114 ./autogen.sh
42115 ./configure --prefix=$out
43− '';
116+ '';
44117 buildPhase = ''
45118 make --jobs=$NIX_BUILD_CORES
46119 cd conformance
47120 make
48121 cd ..
49− '';
122+ '';
50123 installPhase = ''
51124 mkdir -p $out
52125 make install
@@ -57,8 +130,90 @@ let
57130 rsync -am --include='*.proto' --include='*/' --exclude='*' src $out/
58131 mkdir -p $out/conformance
59132 cp ./conformance/conformance.proto $out/conformance/
60− '';
133+ '';
61134 LC_ALL = "C.UTF-8";
135+ meta = {
136+ description = "purescript-protobuf build for Google’s Protobuf";
137+ longDescription = ''
138+ This Protobuf build includes the protoc compiler and the “well-known”
139+ .proto definitions, as well as all of the conformance test runners
140+ and conformance .proto definitions.
141+ '';
142+ homepage = "https://github.com/xc-jp/purescript-protobuf";
143+ license = lib.licenses.bsd3;
144+ mainProgram = "protoc";
145+ };
146+ };
147+
148+ cmakeProtobuf = repo: stdenv.mkDerivation {
149+ name = "protobuf-${repo.ref}";
150+ nativeBuildInputs = [ cmake rsync ];
151+ src = repo.src;
152+ # https://github.com/protocolbuffers/protobuf/blob/main/src/README.md#c-installation---unix
153+ cmakeFlags = [ "-Dprotobuf_BUILD_CONFORMANCE=ON" ];
154+ postInstall =
155+ let
156+ conformance_rpath = lib.makeLibraryPath [
157+ stdenv.cc.cc.lib
158+ ];
159+ in
160+ ''
161+ # Recursive copy all the .proto files
162+ rsync -am --include='*.proto' --include='*/' --exclude='*' $src/src $out/
163+ mkdir -p $out/conformance
164+ cp $src/conformance/conformance.proto $out/conformance/
165+
166+ # Conformance test runner
167+ cp ./conformance_test_runner $out/bin/conformance_test_runner
168+ # https://nixos.wiki/wiki/Packaging/Binaries#Creating_the_Derivation_for_upstream_Packaging
169+ patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" --set-rpath "$out/lib:${conformance_rpath}" $out/bin/conformance_test_runner
170+
171+ # Distribute the cpp conformance program as a test case
172+ cp ./conformance_cpp $out/bin/conformance_cpp
173+ patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" --set-rpath "$out/lib:${conformance_rpath}" $out/bin/conformance_cpp
174+ '';
175+ meta = {
176+ description = "Google’s Protobuf built for purescript-protobuf";
177+ longDescription = ''
178+ This Protobuf build includes the protoc compiler and the “well-known”
179+ .proto definitions, as well as all of the conformance test runners
180+ and conformance .proto definitions.
181+ '';
182+ homepage = "https://github.com/xc-jp/purescript-protobuf";
183+ license = lib.licenses.bsd3;
184+ mainProgram = "protoc";
185+ };
62186 };
63187
64−in protobuf
188+ protobuf_v3_9_2 = mkProtobuf protobuf_repo_v3_9_2;
189+ protobuf_v3_14_0 = mkProtobuf protobuf_repo_v3_14_0;
190+ protobuf_v3_15_8 = mkProtobuf protobuf_repo_v3_15_8;
191+ protobuf_v3_20_1 = mkProtobuf protobuf_repo_v3_20_1;
192+ protobuf_v3_21_0 = mkProtobuf protobuf_repo_v3_21_0;
193+ protobuf_v21_10 = mkProtobuf protobuf_repo_v21_10;
194+ protobuf_v23_2 = cmakeProtobuf protobuf_repo_v23_2;
195+ protobuf_v24_4 = cmakeProtobuf protobuf_repo_v24_4;
196+ protobuf_v28_2 = cmakeProtobuf protobuf_repo_v28_2;
197+in
198+{
199+ inherit protobuf_v3_9_2;
200+ inherit protobuf_v3_14_0;
201+ inherit protobuf_v3_15_8;
202+ inherit protobuf_v3_20_1;
203+ inherit protobuf_v3_21_0;
204+ inherit protobuf_v21_10;
205+ inherit protobuf_v23_2;
206+ inherit protobuf_v24_4;
207+ inherit protobuf_v28_2;
208+ # We export protobuf_local, our own local build of protobuf which includes
209+ # a build of the conformance test runner.
210+ protobuf_local = protobuf_v28_2;
211+}
212+
213+
214+# # This derivation is pretty much what's in nixpkgs as "protobuf", just `protoc`.
215+# protoc = pkgs.stdenv.mkDerivation {
216+# name = "protoc-${version}";
217+# buildInputs = [ pkgs.autoreconfHook ];
218+# src = protobufRepo;
219+# };
package-lock.jsondeleted−13
@@ -1,13 +0,0 @@
1−{
2− "name": "purescript-protobuf",
3− "version": "0.1.0",
4− "lockfileVersion": 1,
5− "requires": true,
6− "dependencies": {
7− "long": {
8− "version": "4.0.0",
9− "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
10− "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
11− }
12− }
13−}
package.jsondeleted−10
@@ -1,10 +0,0 @@
1−{
2− "name": "purescript-protobuf",
3− "version": "0.1.0",
4− "description": "Google Protocol Buffers for Purescript",
5− "author": "Cross Compass, LLC., jamesbrock@gmail.com",
6− "license": "BSD-3-Clause",
7− "dependencies": {
8− "long": "^4.0.0"
9− }
10−}
packages.dhalldeleted−125
@@ -1,125 +0,0 @@
1−{-
2−Welcome to your new Dhall package-set!
3−
4−Below are instructions for how to edit this file for most use
5−cases, so that you don't need to know Dhall to use it.
6−
7−## Warning: Don't Move This Top-Level Comment!
8−
9−Due to how `dhall format` currently works, this comment's
10−instructions cannot appear near corresponding sections below
11−because `dhall format` will delete the comment. However,
12−it will not delete a top-level comment like this one.
13−
14−## Use Cases
15−
16−Most will want to do one or both of these options:
17−1. Override/Patch a package's dependency
18−2. Add a package not already in the default package set
19−
20−This file will continue to work whether you use one or both options.
21−Instructions for each option are explained below.
22−
23−### Overriding/Patching a package
24−
25−Purpose:
26−- Change a package's dependency to a newer/older release than the
27− default package set's release
28−- Use your own modified version of some dependency that may
29− include new API, changed API, removed API by
30− using your custom git repo of the library rather than
31− the package set's repo
32−
33−Syntax:
34−where `entityName` is one of the following:
35−- dependencies
36−- repo
37−- version
38−-------------------------------
39−let upstream = --
40−in upstream
41− with packageName.entityName = "new value"
42−-------------------------------
43−
44−Example:
45−-------------------------------
46−let upstream = --
47−in upstream
48− with halogen.version = "master"
49− with halogen.repo = "https://example.com/path/to/git/repo.git"
50−
51− with halogen-vdom.version = "v4.0.0"
52−-------------------------------
53−
54−### Additions
55−
56−Purpose:
57−- Add packages that aren't already included in the default package set
58−
59−Syntax:
60−where `<version>` is:
61−- a tag (i.e. "v4.0.0")
62−- a branch (i.e. "master")
63−- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977")
64−-------------------------------
65−let upstream = --
66−in upstream
67− with new-package-name =
68− { dependencies =
69− [ "dependency1"
70− , "dependency2"
71− ]
72− , repo =
73− "https://example.com/path/to/git/repo.git"
74− , version =
75− "<version>"
76− }
77−-------------------------------
78−
79−Example:
80−-------------------------------
81−let upstream = --
82−in upstream
83− with benchotron =
84− { dependencies =
85− [ "arrays"
86− , "exists"
87− , "profunctor"
88− , "strings"
89− , "quickcheck"
90− , "lcg"
91− , "transformers"
92− , "foldable-traversable"
93− , "exceptions"
94− , "node-fs"
95− , "node-buffer"
96− , "node-readline"
97− , "datetime"
98− , "now"
99− ]
100− , repo =
101− "https://github.com/hdgarrood/purescript-benchotron.git"
102− , version =
103− "v7.0.0"
104− }
105−-------------------------------
106−-}
107−
108−let upstream =
109− https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20200831/packages.dhall sha256:cdb3529cac2cd8dd780f07c80fd907d5faceae7decfcaa11a12037df68812c83
110−in upstream
111− with longs =
112− { dependencies =
113− [ "effect"
114− , "console"
115− , "prelude"
116− , "strings"
117− , "foreign"
118− , "nullable"
119− , "functions"
120− ]
121− , repo = "https://github.com/zapph/purescript-longs.git"
122− , version = "v0.1.1"
123− }
124− with arraybuffer-builder.version = "v1.1.0"
125−
packages.jsondeleted−4578
@@ -1,4578 +0,0 @@
1−{
2− "abides": {
3− "dependencies": [
4− "enums",
5− "foldable-traversable"
6− ],
7− "repo": "https://github.com/athanclark/purescript-abides.git",
8− "version": "v0.0.1"
9− },
10− "ace": {
11− "dependencies": [
12− "effect",
13− "web-html",
14− "web-uievents",
15− "arrays",
16− "foreign",
17− "nullable",
18− "prelude"
19− ],
20− "repo": "https://github.com/purescript-contrib/purescript-ace.git",
21− "version": "v7.0.0"
22− },
23− "aff": {
24− "dependencies": [
25− "datetime",
26− "effect",
27− "exceptions",
28− "functions",
29− "parallel",
30− "transformers",
31− "unsafe-coerce"
32− ],
33− "repo": "https://github.com/slamdata/purescript-aff.git",
34− "version": "v5.1.2"
35− },
36− "aff-bus": {
37− "dependencies": [
38− "avar",
39− "prelude"
40− ],
41− "repo": "https://github.com/slamdata/purescript-aff-bus.git",
42− "version": "v4.0.0"
43− },
44− "aff-coroutines": {
45− "dependencies": [
46− "aff",
47− "avar",
48− "console",
49− "coroutines"
50− ],
51− "repo": "https://github.com/purescript-contrib/purescript-aff-coroutines.git",
52− "version": "v7.0.0"
53− },
54− "aff-promise": {
55− "dependencies": [
56− "aff",
57− "foreign"
58− ],
59− "repo": "https://github.com/nwolverson/purescript-aff-promise.git",
60− "version": "v2.1.0"
61− },
62− "aff-retry": {
63− "dependencies": [
64− "psci-support",
65− "console",
66− "aff",
67− "datetime",
68− "prelude",
69− "random",
70− "transformers",
71− "exceptions",
72− "test-unit"
73− ],
74− "repo": "https://github.com/Unisay/purescript-aff-retry.git",
75− "version": "v1.2.1"
76− },
77− "affjax": {
78− "dependencies": [
79− "aff",
80− "argonaut-core",
81− "arraybuffer-types",
82− "foreign",
83− "form-urlencoded",
84− "http-methods",
85− "integers",
86− "math",
87− "media-types",
88− "nullable",
89− "refs",
90− "unsafe-coerce",
91− "web-xhr"
92− ],
93− "repo": "https://github.com/slamdata/purescript-affjax.git",
94− "version": "v10.1.0"
95− },
96− "ansi": {
97− "dependencies": [
98− "foldable-traversable",
99− "lists",
100− "strings"
101− ],
102− "repo": "https://github.com/hdgarrood/purescript-ansi.git",
103− "version": "v5.0.0"
104− },
105− "argonaut": {
106− "dependencies": [
107− "argonaut-codecs",
108− "argonaut-core",
109− "argonaut-traversals"
110− ],
111− "repo": "https://github.com/purescript-contrib/purescript-argonaut.git",
112− "version": "v7.0.0"
113− },
114− "argonaut-codecs": {
115− "dependencies": [
116− "argonaut-core",
117− "arrays",
118− "effect",
119− "foreign-object",
120− "generics-rep",
121− "identity",
122− "integers",
123− "maybe",
124− "nonempty",
125− "ordered-collections",
126− "record"
127− ],
128− "repo": "https://github.com/purescript-contrib/purescript-argonaut-codecs.git",
129− "version": "v7.0.0"
130− },
131− "argonaut-core": {
132− "dependencies": [
133− "arrays",
134− "control",
135− "either",
136− "foreign-object",
137− "functions",
138− "gen",
139− "maybe",
140− "nonempty",
141− "prelude",
142− "strings",
143− "tailrec"
144− ],
145− "repo": "https://github.com/purescript-contrib/purescript-argonaut-core.git",
146− "version": "v5.0.2"
147− },
148− "argonaut-generic": {
149− "dependencies": [
150− "argonaut-codecs",
151− "argonaut-core",
152− "generics-rep",
153− "record"
154− ],
155− "repo": "https://github.com/purescript-contrib/purescript-argonaut-generic.git",
156− "version": "v6.0.0"
157− },
158− "argonaut-traversals": {
159− "dependencies": [
160− "argonaut-codecs",
161− "argonaut-core",
162− "profunctor-lenses"
163− ],
164− "repo": "https://github.com/purescript-contrib/purescript-argonaut-traversals.git",
165− "version": "v8.0.0"
166− },
167− "array-views": {
168− "dependencies": [
169− "arrays",
170− "control",
171− "foldable-traversable",
172− "generics-rep",
173− "maybe",
174− "nonempty",
175− "prelude",
176− "profunctor",
177− "tuples",
178− "unfoldable"
179− ],
180− "repo": "https://github.com/klntsky/purescript-array-views.git",
181− "version": "v0.0.2"
182− },
183− "arraybuffer": {
184− "dependencies": [
185− "arraybuffer-types",
186− "effect",
187− "float32",
188− "functions",
189− "maybe",
190− "nullable",
191− "partial",
192− "sized-vectors",
193− "typelevel",
194− "uint"
195− ],
196− "repo": "https://github.com/jacereda/purescript-arraybuffer.git",
197− "version": "v10.0.2"
198− },
199− "arraybuffer-builder": {
200− "dependencies": [
201− "arraybuffer-types",
202− "arraybuffer"
203− ],
204− "repo": "https://github.com/jamesdbrock/purescript-arraybuffer-builder.git",
205− "version": "v1.1.0"
206− },
207− "arraybuffer-class": {
208− "dependencies": [
209− "arraybuffer",
210− "exceptions",
211− "foreign-object",
212− "ordered-collections",
213− "sized-vectors",
214− "strings",
215− "unordered-collections"
216− ],
217− "repo": "https://github.com/athanclark/purescript-arraybuffer-class.git",
218− "version": "v0.2.5"
219− },
220− "arraybuffer-types": {
221− "dependencies": [],
222− "repo": "https://github.com/purescript-contrib/purescript-arraybuffer-types.git",
223− "version": "v2.0.0"
224− },
225− "arrays": {
226− "dependencies": [
227− "bifunctors",
228− "control",
229− "foldable-traversable",
230− "maybe",
231− "nonempty",
232− "partial",
233− "prelude",
234− "st",
235− "tailrec",
236− "tuples",
237− "unfoldable",
238− "unsafe-coerce"
239− ],
240− "repo": "https://github.com/purescript/purescript-arrays.git",
241− "version": "v5.3.1"
242− },
243− "arrays-zipper": {
244− "dependencies": [
245− "arrays"
246− ],
247− "repo": "https://github.com/JordanMartinez/purescript-arrays-zipper.git",
248− "version": "v1.0.0"
249− },
250− "assert": {
251− "dependencies": [
252− "console",
253− "effect",
254− "prelude"
255− ],
256− "repo": "https://github.com/purescript/purescript-assert.git",
257− "version": "v4.1.0"
258− },
259− "avar": {
260− "dependencies": [
261− "aff",
262− "effect",
263− "either",
264− "exceptions",
265− "functions",
266− "maybe"
267− ],
268− "repo": "https://github.com/slamdata/purescript-avar.git",
269− "version": "v3.0.0"
270− },
271− "axios": {
272− "dependencies": [
273− "effect",
274− "console",
275− "foreign-generic",
276− "aff",
277− "prelude"
278− ],
279− "repo": "https://github.com/iarthstar/purescript-axios.git",
280− "version": "v1.1.2"
281− },
282− "b64": {
283− "dependencies": [
284− "arraybuffer-types",
285− "either",
286− "encoding",
287− "enums",
288− "exceptions",
289− "functions",
290− "partial",
291− "prelude",
292− "strings"
293− ],
294− "repo": "https://github.com/menelaos/purescript-b64.git",
295− "version": "v0.0.6"
296− },
297− "basic-auth": {
298− "dependencies": [
299− "crypto",
300− "node-http"
301− ],
302− "repo": "https://github.com/oreshinya/purescript-basic-auth.git",
303− "version": "v1.0.3"
304− },
305− "behaviors": {
306− "dependencies": [
307− "effect",
308− "event",
309− "filterable",
310− "nullable",
311− "ordered-collections",
312− "prelude",
313− "web-events",
314− "web-html",
315− "web-uievents"
316− ],
317− "repo": "https://github.com/paf31/purescript-behaviors.git",
318− "version": "v8.0.0"
319− },
320− "bifunctors": {
321− "dependencies": [
322− "newtype",
323− "prelude"
324− ],
325− "repo": "https://github.com/purescript/purescript-bifunctors.git",
326− "version": "v4.0.0"
327− },
328− "bigints": {
329− "dependencies": [
330− "integers",
331− "maybe",
332− "strings"
333− ],
334− "repo": "https://github.com/sharkdp/purescript-bigints.git",
335− "version": "v4.0.0"
336− },
337− "bip39": {
338− "dependencies": [
339− "arraybuffer-types",
340− "nullable"
341− ],
342− "repo": "https://github.com/athanclark/purescript-bip39.git",
343− "version": "v1.0.1"
344− },
345− "biscotti-cookie": {
346− "dependencies": [
347− "datetime",
348− "effect",
349− "either",
350− "foldable-traversable",
351− "formatters",
352− "gen",
353− "newtype",
354− "now",
355− "prelude",
356− "profunctor-lenses",
357− "psci-support",
358− "quickcheck",
359− "record",
360− "string-parsers",
361− "strings",
362− "test-unit"
363− ],
364− "repo": "https://github.com/drewolson/purescript-biscotti-cookie.git",
365− "version": "v0.2.0"
366− },
367− "biscotti-session": {
368− "dependencies": [
369− "aff",
370− "argonaut",
371− "biscotti-cookie",
372− "effect",
373− "newtype",
374− "ordered-collections",
375− "prelude",
376− "profunctor-lenses",
377− "psci-support",
378− "refs",
379− "test-unit",
380− "uuid"
381− ],
382− "repo": "https://github.com/drewolson/purescript-biscotti-session.git",
383− "version": "v0.1.2"
384− },
385− "bower-json": {
386− "dependencies": [
387− "prelude",
388− "generics-rep",
389− "maybe",
390− "arrays",
391− "either",
392− "newtype",
393− "tuples",
394− "foldable-traversable",
395− "argonaut-codecs",
396− "foreign-object"
397− ],
398− "repo": "https://github.com/klntsky/purescript-bower-json.git",
399− "version": "v2.0.0"
400− },
401− "bucketchain": {
402− "dependencies": [
403− "aff",
404− "console",
405− "node-http",
406− "node-streams",
407− "transformers"
408− ],
409− "repo": "https://github.com/Bucketchain/purescript-bucketchain.git",
410− "version": "v0.3.0"
411− },
412− "bucketchain-basic-auth": {
413− "dependencies": [
414− "basic-auth",
415− "bucketchain"
416− ],
417− "repo": "https://github.com/Bucketchain/purescript-bucketchain-basic-auth.git",
418− "version": "v0.2.0"
419− },
420− "bucketchain-conditional": {
421− "dependencies": [
422− "bucketchain",
423− "js-date"
424− ],
425− "repo": "https://github.com/Bucketchain/purescript-bucketchain-conditional.git",
426− "version": "v0.2.0"
427− },
428− "bucketchain-cors": {
429− "dependencies": [
430− "bucketchain",
431− "bucketchain-header-utils",
432− "http-methods"
433− ],
434− "repo": "https://github.com/Bucketchain/purescript-bucketchain-cors.git",
435− "version": "v0.3.0"
436− },
437− "bucketchain-csrf": {
438− "dependencies": [
439− "bucketchain"
440− ],
441− "repo": "https://github.com/Bucketchain/purescript-bucketchain-csrf.git",
442− "version": "v0.1.0"
443− },
444− "bucketchain-header-utils": {
445− "dependencies": [
446− "bucketchain"
447− ],
448− "repo": "https://github.com/Bucketchain/purescript-bucketchain-header-utils.git",
449− "version": "v0.3.0"
450− },
451− "bucketchain-health": {
452− "dependencies": [
453− "bucketchain"
454− ],
455− "repo": "https://github.com/Bucketchain/purescript-bucketchain-health.git",
456− "version": "v0.2.0"
457− },
458− "bucketchain-history-api-fallback": {
459− "dependencies": [
460− "bucketchain"
461− ],
462− "repo": "https://github.com/Bucketchain/purescript-bucketchain-history-api-fallback.git",
463− "version": "v0.3.0"
464− },
465− "bucketchain-logger": {
466− "dependencies": [
467− "bucketchain",
468− "js-date",
469− "node-process"
470− ],
471− "repo": "https://github.com/Bucketchain/purescript-bucketchain-logger.git",
472− "version": "v0.3.0"
473− },
474− "bucketchain-secure": {
475− "dependencies": [
476− "bucketchain"
477− ],
478− "repo": "https://github.com/Bucketchain/purescript-bucketchain-secure.git",
479− "version": "v0.1.0"
480− },
481− "bucketchain-simple-api": {
482− "dependencies": [
483− "bucketchain",
484− "media-types",
485− "simple-json",
486− "freet"
487− ],
488− "repo": "https://github.com/Bucketchain/purescript-bucketchain-simple-api.git",
489− "version": "v3.0.0"
490− },
491− "bucketchain-sslify": {
492− "dependencies": [
493− "bucketchain"
494− ],
495− "repo": "https://github.com/Bucketchain/purescript-bucketchain-sslify.git",
496− "version": "v0.2.0"
497− },
498− "bucketchain-static": {
499− "dependencies": [
500− "bucketchain",
501− "node-fs-aff"
502− ],
503− "repo": "https://github.com/Bucketchain/purescript-bucketchain-static.git",
504− "version": "v0.3.0"
505− },
506− "byte-codec": {
507− "dependencies": [
508− "generics-rep",
509− "integers",
510− "sized-vectors"
511− ],
512− "repo": "https://github.com/athanclark/purescript-byte-codec.git",
513− "version": "v0.0.1"
514− },
515− "bytestrings": {
516− "dependencies": [
517− "arrays",
518− "effect",
519− "exceptions",
520− "foldable-traversable",
521− "integers",
522− "leibniz",
523− "maybe",
524− "newtype",
525− "node-buffer",
526− "prelude",
527− "quickcheck",
528− "quotient",
529− "unsafe-coerce"
530− ],
531− "repo": "https://github.com/rightfold/purescript-bytestrings.git",
532− "version": "v8.0.0"
533− },
534− "call-by-name": {
535− "dependencies": [
536− "unsafe-coerce",
537− "lazy",
538− "maybe",
539− "either",
540− "control"
541− ],
542− "repo": "https://github.com/natefaubion/purescript-call-by-name.git",
543− "version": "v2.0.0"
544− },
545− "canvas": {
546− "dependencies": [
547− "arraybuffer-types",
548− "effect",
549− "exceptions",
550− "functions",
551− "maybe"
552− ],
553− "repo": "https://github.com/purescript-web/purescript-canvas.git",
554− "version": "v4.0.0"
555− },
556− "canvas-action": {
557− "dependencies": [
558− "aff",
559− "canvas",
560− "colors",
561− "console",
562− "effect",
563− "exceptions",
564− "foldable-traversable",
565− "free",
566− "lists",
567− "math",
568− "maybe",
569− "newtype",
570− "partial",
571− "polymorphic-vectors",
572− "prelude",
573− "psci-support",
574− "run",
575− "transformers",
576− "tuples",
577− "typelevel-prelude",
578− "web-html"
579− ],
580− "repo": "https://github.com/3ddyy/purescript-canvas-action.git",
581− "version": "v5.0.1"
582− },
583− "cartesian": {
584− "dependencies": [
585− "console",
586− "effect",
587− "integers",
588− "psci-support"
589− ],
590− "repo": "https://github.com/Ebmtranceboy/purescript-cartesian.git",
591− "version": "v1.0.4"
592− },
593− "catenable-lists": {
594− "dependencies": [
595− "control",
596− "foldable-traversable",
597− "lists",
598− "maybe",
599− "prelude",
600− "tuples",
601− "unfoldable"
602− ],
603− "repo": "https://github.com/purescript/purescript-catenable-lists.git",
604− "version": "v5.0.1"
605− },
606− "checked-exceptions": {
607− "dependencies": [
608− "prelude",
609− "transformers",
610− "variant"
611− ],
612− "repo": "https://github.com/natefaubion/purescript-checked-exceptions.git",
613− "version": "v3.1.0"
614− },
615− "cheerio": {
616− "dependencies": [
617− "console",
618− "effect",
619− "functions",
620− "prelude",
621− "test-unit"
622− ],
623− "repo": "https://github.com/icyrockcom/purescript-cheerio.git",
624− "version": "v0.2.3"
625− },
626− "chirashi": {
627− "dependencies": [
628− "exceptions",
629− "prelude",
630− "typelevel-prelude",
631− "variant"
632− ],
633− "repo": "https://github.com/justinwoo/purescript-chirashi.git",
634− "version": "v1.0.0"
635− },
636− "choco-pie": {
637− "dependencies": [
638− "event",
639− "prelude",
640− "record",
641− "typelevel-prelude"
642− ],
643− "repo": "https://github.com/justinwoo/purescript-chocopie.git",
644− "version": "v5.0.0"
645− },
646− "clipboardy": {
647− "dependencies": [
648− "aff",
649− "aff-promise",
650− "effect"
651− ],
652− "repo": "https://github.com/hrajchert/purescript-clipboardy.git",
653− "version": "v1.0.3"
654− },
655− "codec": {
656− "dependencies": [
657− "transformers",
658− "profunctor"
659− ],
660− "repo": "https://github.com/garyb/purescript-codec.git",
661− "version": "v3.0.0"
662− },
663− "codec-argonaut": {
664− "dependencies": [
665− "argonaut-core",
666− "codec",
667− "generics-rep",
668− "ordered-collections",
669− "type-equality",
670− "variant"
671− ],
672− "repo": "https://github.com/garyb/purescript-codec-argonaut.git",
673− "version": "v7.1.0"
674− },
675− "colors": {
676− "dependencies": [
677− "arrays",
678− "integers",
679− "lists",
680− "partial",
681− "strings"
682− ],
683− "repo": "https://github.com/sharkdp/purescript-colors.git",
684− "version": "v5.0.0"
685− },
686− "concur-core": {
687− "dependencies": [
688− "aff",
689− "arrays",
690− "avar",
691− "console",
692− "foldable-traversable",
693− "free",
694− "nonempty",
695− "profunctor-lenses",
696− "tailrec"
697− ],
698− "repo": "https://github.com/purescript-concur/purescript-concur-core.git",
699− "version": "v0.4.2"
700− },
701− "concur-react": {
702− "dependencies": [
703− "aff",
704− "arrays",
705− "avar",
706− "concur-core",
707− "console",
708− "foldable-traversable",
709− "free",
710− "nonempty",
711− "react",
712− "react-dom",
713− "tailrec",
714− "web-dom",
715− "web-html"
716− ],
717− "repo": "https://github.com/purescript-concur/purescript-concur-react.git",
718− "version": "v0.4.2"
719− },
720− "console": {
721− "dependencies": [
722− "effect",
723− "prelude"
724− ],
725− "repo": "https://github.com/purescript/purescript-console.git",
726− "version": "v4.4.0"
727− },
728− "const": {
729− "dependencies": [
730− "contravariant",
731− "foldable-traversable",
732− "invariant",
733− "newtype",
734− "prelude"
735− ],
736− "repo": "https://github.com/purescript/purescript-const.git",
737− "version": "v4.1.0"
738− },
739− "contravariant": {
740− "dependencies": [
741− "either",
742− "newtype",
743− "prelude",
744− "tuples"
745− ],
746− "repo": "https://github.com/purescript/purescript-contravariant.git",
747− "version": "v4.0.1"
748− },
749− "control": {
750− "dependencies": [
751− "prelude",
752− "newtype"
753− ],
754− "repo": "https://github.com/purescript/purescript-control.git",
755− "version": "v4.2.0"
756− },
757− "coroutines": {
758− "dependencies": [
759− "freet",
760− "parallel",
761− "profunctor"
762− ],
763− "repo": "https://github.com/purescript-contrib/purescript-coroutines.git",
764− "version": "v5.0.1"
765− },
766− "crypto": {
767− "dependencies": [
768− "node-buffer"
769− ],
770− "repo": "https://github.com/oreshinya/purescript-crypto.git",
771− "version": "v2.0.1"
772− },
773− "css": {
774− "dependencies": [
775− "colors",
776− "console",
777− "generics-rep",
778− "nonempty",
779− "profunctor",
780− "strings",
781− "these",
782− "transformers"
783− ],
784− "repo": "https://github.com/slamdata/purescript-css.git",
785− "version": "v4.0.0"
786− },
787− "cssom": {
788− "dependencies": [
789− "effect"
790− ],
791− "repo": "https://github.com/danieljharvey/purescript-cssom.git",
792− "version": "v0.0.2"
793− },
794− "data-algebrae": {
795− "dependencies": [
796− "arrays",
797− "foreign-object",
798− "generics-rep",
799− "maybe",
800− "ordered-collections",
801− "prelude",
802− "spec",
803− "spec-quickcheck"
804− ],
805− "repo": "https://github.com/i-am-tom/purescript-data-algebrae.git",
806− "version": "v4.0.0"
807− },
808− "data-default": {
809− "dependencies": [
810− "maybe",
811− "record",
812− "lists"
813− ],
814− "repo": "https://github.com/thought2/purescript-data-default.git",
815− "version": "v0.3.2"
816− },
817− "datetime": {
818− "dependencies": [
819− "bifunctors",
820− "control",
821− "either",
822− "enums",
823− "foldable-traversable",
824− "functions",
825− "gen",
826− "integers",
827− "lists",
828− "math",
829− "maybe",
830− "newtype",
831− "ordered-collections",
832− "partial",
833− "prelude",
834− "tuples"
835− ],
836− "repo": "https://github.com/purescript/purescript-datetime.git",
837− "version": "v4.1.1"
838− },
839− "debug": {
840− "dependencies": [
841− "prelude"
842− ],
843− "repo": "https://github.com/garyb/purescript-debug.git",
844− "version": "v4.0.0"
845− },
846− "decimals": {
847− "dependencies": [
848− "maybe"
849− ],
850− "repo": "https://github.com/sharkdp/purescript-decimals.git",
851− "version": "v5.0.0"
852− },
853− "distributive": {
854− "dependencies": [
855− "identity",
856− "newtype",
857− "prelude"
858− ],
859− "repo": "https://github.com/purescript/purescript-distributive.git",
860− "version": "v4.0.0"
861− },
862− "dom-filereader": {
863− "dependencies": [
864− "aff",
865− "arraybuffer-types",
866− "web-file",
867− "web-html"
868− ],
869− "repo": "https://github.com/nwolverson/purescript-dom-filereader.git",
870− "version": "v5.0.0"
871− },
872− "dom-indexed": {
873− "dependencies": [
874− "media-types",
875− "prelude",
876− "web-clipboard",
877− "web-touchevents"
878− ],
879− "repo": "https://github.com/slamdata/purescript-dom-indexed.git",
880− "version": "v7.0.0"
881− },
882− "dotenv": {
883− "dependencies": [
884− "console",
885− "node-fs-aff",
886− "node-process",
887− "parsing",
888− "prelude",
889− "psci-support",
890− "run",
891− "spec",
892− "sunde"
893− ],
894− "repo": "https://github.com/nsaunders/purescript-dotenv.git",
895− "version": "v1.1.0"
896− },
897− "drawing": {
898− "dependencies": [
899− "canvas",
900− "colors",
901− "integers",
902− "lists",
903− "math",
904− "prelude"
905− ],
906− "repo": "https://github.com/paf31/purescript-drawing.git",
907− "version": "v4.0.0"
908− },
909− "effect": {
910− "dependencies": [
911− "prelude"
912− ],
913− "repo": "https://github.com/purescript/purescript-effect.git",
914− "version": "v2.0.1"
915− },
916− "either": {
917− "dependencies": [
918− "bifunctors",
919− "control",
920− "foldable-traversable",
921− "invariant",
922− "maybe",
923− "prelude"
924− ],
925− "repo": "https://github.com/purescript/purescript-either.git",
926− "version": "v4.1.1"
927− },
928− "email-validate": {
929− "dependencies": [
930− "aff",
931− "generics-rep",
932− "string-parsers",
933− "transformers"
934− ],
935− "repo": "https://github.com/cdepillabout/purescript-email-validate.git",
936− "version": "v5.0.0"
937− },
938− "encoding": {
939− "dependencies": [
940− "arraybuffer-types",
941− "either",
942− "exceptions",
943− "functions",
944− "prelude"
945− ],
946− "repo": "https://github.com/menelaos/purescript-encoding.git",
947− "version": "v0.0.6"
948− },
949− "enums": {
950− "dependencies": [
951− "control",
952− "either",
953− "gen",
954− "maybe",
955− "newtype",
956− "nonempty",
957− "partial",
958− "prelude",
959− "tuples",
960− "unfoldable"
961− ],
962− "repo": "https://github.com/purescript/purescript-enums.git",
963− "version": "v4.0.1"
964− },
965− "errors": {
966− "dependencies": [
967− "control",
968− "effect",
969− "either",
970− "maybe",
971− "transformers"
972− ],
973− "repo": "https://github.com/passy/purescript-errors.git",
974− "version": "v4.1.0"
975− },
976− "event": {
977− "dependencies": [
978− "console",
979− "effect",
980− "filterable",
981− "js-timers",
982− "now",
983− "nullable",
984− "prelude",
985− "unsafe-reference"
986− ],
987− "repo": "https://github.com/paf31/purescript-event.git",
988− "version": "v1.3.0"
989− },
990− "exceptions": {
991− "dependencies": [
992− "effect",
993− "either",
994− "maybe",
995− "prelude"
996− ],
997− "repo": "https://github.com/purescript/purescript-exceptions.git",
998− "version": "v4.0.0"
999− },
1000− "exists": {
1001− "dependencies": [
1002− "unsafe-coerce"
1003− ],
1004− "repo": "https://github.com/purescript/purescript-exists.git",
1005− "version": "v4.0.0"
1006− },
1007− "exitcodes": {
1008− "dependencies": [
1009− "enums"
1010− ],
1011− "repo": "https://github.com/Risto-Stevcev/purescript-exitcodes.git",
1012− "version": "v4.0.0"
1013− },
1014− "expect-inferred": {
1015− "dependencies": [
1016− "prelude",
1017− "typelevel-prelude"
1018− ],
1019− "repo": "https://github.com/justinwoo/purescript-expect-inferred.git",
1020− "version": "v2.0.0"
1021− },
1022− "express": {
1023− "dependencies": [
1024− "aff",
1025− "foreign",
1026− "foreign-generic",
1027− "node-http",
1028− "test-unit"
1029− ],
1030− "repo": "https://github.com/nkly/purescript-express.git",
1031− "version": "v0.8.0"
1032− },
1033− "filterable": {
1034− "dependencies": [
1035− "arrays",
1036− "either",
1037− "foldable-traversable",
1038− "identity",
1039− "lists",
1040− "ordered-collections"
1041− ],
1042− "repo": "https://github.com/LiamGoodacre/purescript-filterable.git",
1043− "version": "v3.0.2"
1044− },
1045− "fixed-points": {
1046− "dependencies": [
1047− "exists",
1048− "newtype",
1049− "prelude",
1050− "transformers"
1051− ],
1052− "repo": "https://github.com/slamdata/purescript-fixed-points.git",
1053− "version": "v5.1.0"
1054− },
1055− "fixed-precision": {
1056− "dependencies": [
1057− "integers",
1058− "maybe",
1059− "bigints",
1060− "strings",
1061− "math"
1062− ],
1063− "repo": "https://github.com/lumihq/purescript-fixed-precision.git",
1064− "version": "v4.3.1"
1065− },
1066− "flare": {
1067− "dependencies": [
1068− "canvas",
1069− "datetime",
1070− "drawing",
1071− "foldable-traversable",
1072− "nonempty",
1073− "prelude",
1074− "signal",
1075− "smolder",
1076− "tuples",
1077− "web-dom"
1078− ],
1079− "repo": "https://github.com/sharkdp/purescript-flare.git",
1080− "version": "v6.0.0"
1081− },
1082− "float32": {
1083− "dependencies": [
1084− "generics-rep",
1085− "prelude"
1086− ],
1087− "repo": "https://github.com/athanclark/purescript-float32.git",
1088− "version": "v0.2.0"
1089− },
1090− "flow-id": {
1091− "dependencies": [
1092− "prelude",
1093− "simple-json"
1094− ],
1095− "repo": "https://github.com/i-am-the-slime/purescript-flow-id.git",
1096− "version": "v1.0.0"
1097− },
1098− "foldable-traversable": {
1099− "dependencies": [
1100− "bifunctors",
1101− "control",
1102− "maybe",
1103− "newtype",
1104− "orders",
1105− "prelude"
1106− ],
1107− "repo": "https://github.com/purescript/purescript-foldable-traversable.git",
1108− "version": "v4.1.1"
1109− },
1110− "folds": {
1111− "dependencies": [
1112− "control",
1113− "ordered-collections",
1114− "profunctor"
1115− ],
1116− "repo": "https://github.com/paf31/purescript-folds.git",
1117− "version": "v5.2.0"
1118− },
1119− "foreign": {
1120− "dependencies": [
1121− "either",
1122− "functions",
1123− "identity",
1124− "integers",
1125− "lists",
1126− "maybe",
1127− "prelude",
1128− "strings",
1129− "transformers"
1130− ],
1131− "repo": "https://github.com/purescript/purescript-foreign.git",
1132− "version": "v5.0.0"
1133− },
1134− "foreign-generic": {
1135− "dependencies": [
1136− "effect",
1137− "exceptions",
1138− "foreign",
1139− "foreign-object",
1140− "generics-rep",
1141− "identity",
1142− "ordered-collections",
1143− "proxy",
1144− "record"
1145− ],
1146− "repo": "https://github.com/paf31/purescript-foreign-generic.git",
1147− "version": "v10.0.0"
1148− },
1149− "foreign-object": {
1150− "dependencies": [
1151− "arrays",
1152− "foldable-traversable",
1153− "functions",
1154− "gen",
1155− "lists",
1156− "maybe",
1157− "prelude",
1158− "st",
1159− "tailrec",
1160− "tuples",
1161− "typelevel-prelude",
1162− "unfoldable"
1163− ],
1164− "repo": "https://github.com/purescript/purescript-foreign-object.git",
1165− "version": "v2.0.3"
1166− },
1167− "fork": {
1168− "dependencies": [
1169− "aff"
1170− ],
1171− "repo": "https://github.com/slamdata/purescript-fork.git",
1172− "version": "v4.0.0"
1173− },
1174− "form-urlencoded": {
1175− "dependencies": [
1176− "globals",
1177− "maybe",
1178− "newtype",
1179− "prelude",
1180− "strings",
1181− "tuples"
1182− ],
1183− "repo": "https://github.com/purescript-contrib/purescript-form-urlencoded.git",
1184− "version": "v5.0.0"
1185− },
1186− "format": {
1187− "dependencies": [
1188− "arrays",
1189− "effect",
1190− "integers",
1191− "math",
1192− "prelude",
1193− "strings",
1194− "unfoldable"
1195− ],
1196− "repo": "https://github.com/sharkdp/purescript-format.git",
1197− "version": "v4.0.0"
1198− },
1199− "format-nix": {
1200− "dependencies": [
1201− "generics-rep",
1202− "motsunabe",
1203− "prelude"
1204− ],
1205− "repo": "https://github.com/justinwoo/format-nix.git",
1206− "version": "v0.3.0"
1207− },
1208− "formatters": {
1209− "dependencies": [
1210− "datetime",
1211− "fixed-points",
1212− "generics-rep",
1213− "lists",
1214− "parsing",
1215− "prelude",
1216− "transformers"
1217− ],
1218− "repo": "https://github.com/slamdata/purescript-formatters.git",
1219− "version": "v4.0.1"
1220− },
1221− "free": {
1222− "dependencies": [
1223− "catenable-lists",
1224− "control",
1225− "distributive",
1226− "either",
1227− "exists",
1228− "foldable-traversable",
1229− "invariant",
1230− "lazy",
1231− "maybe",
1232− "prelude",
1233− "tailrec",
1234− "transformers",
1235− "tuples",
1236− "unsafe-coerce"
1237− ],
1238− "repo": "https://github.com/purescript/purescript-free.git",
1239− "version": "v5.2.0"
1240− },
1241− "freeap": {
1242− "dependencies": [
1243− "const",
1244− "exists",
1245− "gen",
1246− "lists"
1247− ],
1248− "repo": "https://github.com/ethul/purescript-freeap.git",
1249− "version": "v5.0.1"
1250− },
1251− "freedom": {
1252− "dependencies": [
1253− "console",
1254− "foreign-object",
1255− "safely",
1256− "simple-emitter",
1257− "web-html"
1258− ],
1259− "repo": "https://github.com/purescript-freedom/purescript-freedom.git",
1260− "version": "v2.2.0"
1261− },
1262− "freedom-now": {
1263− "dependencies": [
1264− "freedom",
1265− "js-timers"
1266− ],
1267− "repo": "https://github.com/purescript-freedom/purescript-freedom-now.git",
1268− "version": "v3.0.0"
1269− },
1270− "freedom-portal": {
1271− "dependencies": [
1272− "freedom"
1273− ],
1274− "repo": "https://github.com/purescript-freedom/purescript-freedom-portal.git",
1275− "version": "v2.0.0"
1276− },
1277− "freedom-router": {
1278− "dependencies": [
1279− "freedom",
1280− "profunctor"
1281− ],
1282− "repo": "https://github.com/purescript-freedom/purescript-freedom-router.git",
1283− "version": "v2.0.0"
1284− },
1285− "freedom-transition": {
1286− "dependencies": [
1287− "freedom",
1288− "js-timers"
1289− ],
1290− "repo": "https://github.com/purescript-freedom/purescript-freedom-transition.git",
1291− "version": "v2.0.0"
1292− },
1293− "freedom-virtualized": {
1294− "dependencies": [
1295− "freedom"
1296− ],
1297− "repo": "https://github.com/purescript-freedom/purescript-freedom-virtualized.git",
1298− "version": "v3.0.1"
1299− },
1300− "freedom-window-resize": {
1301− "dependencies": [
1302− "freedom"
1303− ],
1304− "repo": "https://github.com/purescript-freedom/purescript-freedom-window-resize.git",
1305− "version": "v2.0.0"
1306− },
1307− "freet": {
1308− "dependencies": [
1309− "bifunctors",
1310− "effect",
1311− "either",
1312− "exists",
1313− "prelude",
1314− "tailrec",
1315− "transformers",
1316− "aff"
1317− ],
1318− "repo": "https://github.com/purescript-contrib/purescript-freet.git",
1319− "version": "v5.0.0"
1320− },
1321− "functions": {
1322− "dependencies": [
1323− "prelude"
1324− ],
1325− "repo": "https://github.com/purescript/purescript-functions.git",
1326− "version": "v4.0.0"
1327− },
1328− "functors": {
1329− "dependencies": [
1330− "bifunctors",
1331− "const",
1332− "control",
1333− "either",
1334− "foldable-traversable",
1335− "maybe",
1336− "newtype",
1337− "prelude",
1338− "tuples",
1339− "unsafe-coerce"
1340− ],
1341− "repo": "https://github.com/purescript/purescript-functors.git",
1342− "version": "v3.1.1"
1343− },
1344− "fuzzy": {
1345− "dependencies": [
1346− "foldable-traversable",
1347− "foreign-object",
1348− "generics-rep",
1349− "newtype",
1350− "ordered-collections",
1351− "prelude",
1352− "rationals",
1353− "strings",
1354− "tuples"
1355− ],
1356− "repo": "https://github.com/citizennet/purescript-fuzzy.git",
1357− "version": "v0.3.0"
1358− },
1359− "game": {
1360− "dependencies": [
1361− "aff",
1362− "canvas-action",
1363− "console",
1364− "control",
1365− "datetime",
1366− "effect",
1367− "filterable",
1368− "foldable-traversable",
1369− "fork",
1370− "free",
1371− "functors",
1372− "identity",
1373− "js-timers",
1374− "monad-loops",
1375− "newtype",
1376− "now",
1377− "parallel",
1378− "partial",
1379− "polymorphic-vectors",
1380− "prelude",
1381− "psci-support",
1382− "record",
1383− "record-extra",
1384− "refs",
1385− "run",
1386− "tailrec",
1387− "typelevel-prelude",
1388− "undefined",
1389− "variant",
1390− "web-html",
1391− "web-uievents"
1392− ],
1393− "repo": "https://github.com/3ddyy/purescript-game.git",
1394− "version": "v2.0.0"
1395− },
1396− "gen": {
1397− "dependencies": [
1398− "either",
1399− "foldable-traversable",
1400− "identity",
1401− "maybe",
1402− "newtype",
1403− "nonempty",
1404− "prelude",
1405− "tailrec",
1406− "tuples",
1407− "unfoldable"
1408− ],
1409− "repo": "https://github.com/purescript/purescript-gen.git",
1410− "version": "v2.1.1"
1411− },
1412− "generics-rep": {
1413− "dependencies": [
1414− "enums",
1415− "foldable-traversable",
1416− "maybe",
1417− "newtype",
1418− "prelude"
1419− ],
1420− "repo": "https://github.com/purescript/purescript-generics-rep.git",
1421− "version": "v6.1.1"
1422− },
1423− "gl-matrix": {
1424− "dependencies": [
1425− "arrays",
1426− "effect",
1427− "foldable-traversable",
1428− "functions",
1429− "math",
1430− "partial",
1431− "prelude",
1432− "psci-support"
1433− ],
1434− "repo": "https://github.com/dirkz/purescript-gl-matrix",
1435− "version": "v2.0.1"
1436− },
1437− "globals": {
1438− "dependencies": [
1439− "functions",
1440− "maybe"
1441− ],
1442− "repo": "https://github.com/purescript/purescript-globals.git",
1443− "version": "v4.1.0"
1444− },
1445− "gomtang-basic": {
1446− "dependencies": [
1447− "console",
1448− "effect",
1449− "prelude",
1450− "record",
1451− "web-html"
1452− ],
1453− "repo": "https://github.com/justinwoo/purescript-gomtang-basic.git",
1454− "version": "v0.2.0"
1455− },
1456− "grain": {
1457− "dependencies": [
1458− "web-html"
1459− ],
1460− "repo": "https://github.com/purescript-grain/purescript-grain.git",
1461− "version": "v0.7.0"
1462− },
1463− "grain-router": {
1464− "dependencies": [
1465− "grain",
1466− "profunctor"
1467− ],
1468− "repo": "https://github.com/purescript-grain/purescript-grain-router.git",
1469− "version": "v0.7.0"
1470− },
1471− "grain-virtualized": {
1472− "dependencies": [
1473− "grain"
1474− ],
1475− "repo": "https://github.com/purescript-grain/purescript-grain-virtualized.git",
1476− "version": "v0.7.0"
1477− },
1478− "group": {
1479− "dependencies": [
1480− "lists"
1481− ],
1482− "repo": "https://github.com/morganthomas/purescript-group.git",
1483− "version": "v4.1.1"
1484− },
1485− "halogen": {
1486− "dependencies": [
1487− "aff",
1488− "avar",
1489− "console",
1490− "const",
1491− "coroutines",
1492− "dom-indexed",
1493− "foreign",
1494− "fork",
1495− "free",
1496− "freeap",
1497− "halogen-vdom",
1498− "media-types",
1499− "nullable",
1500− "ordered-collections",
1501− "parallel",
1502− "profunctor",
1503− "transformers",
1504− "unsafe-coerce",
1505− "unsafe-reference",
1506− "web-uievents"
1507− ],
1508− "repo": "https://github.com/slamdata/purescript-halogen.git",
1509− "version": "v5.0.1"
1510− },
1511− "halogen-bootstrap": {
1512− "dependencies": [
1513− "halogen"
1514− ],
1515− "repo": "https://github.com/slamdata/purescript-halogen-bootstrap.git",
1516− "version": "v8.0.0"
1517− },
1518− "halogen-bootstrap4": {
1519− "dependencies": [
1520− "halogen"
1521− ],
1522− "repo": "https://github.com/mschristiansen/purescript-halogen-bootstrap4.git",
1523− "version": "v0.1.4"
1524− },
1525− "halogen-css": {
1526− "dependencies": [
1527− "css",
1528− "halogen"
1529− ],
1530− "repo": "https://github.com/slamdata/purescript-halogen-css.git",
1531− "version": "v8.0.0"
1532− },
1533− "halogen-formless": {
1534− "dependencies": [
1535− "halogen",
1536− "variant",
1537− "heterogeneous",
1538− "generics-rep",
1539− "profunctor-lenses"
1540− ],
1541− "repo": "https://github.com/thomashoneyman/purescript-halogen-formless.git",
1542− "version": "v1.0.0-rc.2"
1543− },
1544− "halogen-hooks": {
1545− "dependencies": [
1546− "halogen",
1547− "indexed-monad"
1548− ],
1549− "repo": "https://github.com/thomashoneyman/purescript-halogen-hooks.git",
1550− "version": "v0.4.2"
1551− },
1552− "halogen-hooks-extra": {
1553− "dependencies": [
1554− "halogen-hooks"
1555− ],
1556− "repo": "https://github.com/jordanmartinez/purescript-halogen-hooks-extra.git",
1557− "version": "v0.7.1"
1558− },
1559− "halogen-select": {
1560− "dependencies": [
1561− "halogen",
1562− "record"
1563− ],
1564− "repo": "https://github.com/citizennet/purescript-halogen-select.git",
1565− "version": "v5.0.0"
1566− },
1567− "halogen-storybook": {
1568− "dependencies": [
1569− "halogen",
1570− "prelude",
1571− "routing",
1572− "foreign-object"
1573− ],
1574− "repo": "https://github.com/rnons/purescript-halogen-storybook.git",
1575− "version": "v1.0.0-rc.1"
1576− },
1577− "halogen-svg-elems": {
1578− "dependencies": [
1579− "effect",
1580− "halogen",
1581− "prelude",
1582− "strings",
1583− "web-uievents"
1584− ],
1585− "repo": "https://github.com/JordanMartinez/purescript-halogen-svg-elems.git",
1586− "version": "v2.0.1"
1587− },
1588− "halogen-vdom": {
1589− "dependencies": [
1590− "bifunctors",
1591− "effect",
1592− "foreign",
1593− "foreign-object",
1594− "maybe",
1595− "prelude",
1596− "refs",
1597− "tuples",
1598− "unsafe-coerce",
1599− "web-html"
1600− ],
1601− "repo": "https://github.com/slamdata/purescript-halogen-vdom.git",
1602− "version": "v6.1.3"
1603− },
1604− "heterogeneous": {
1605− "dependencies": [
1606− "either",
1607− "functors",
1608− "prelude",
1609− "record",
1610− "tuples",
1611− "variant"
1612− ],
1613− "repo": "https://github.com/natefaubion/purescript-heterogeneous.git",
1614− "version": "v0.4.1"
1615− },
1616− "higher-order": {
1617− "dependencies": [
1618− "catenable-lists",
1619− "const",
1620− "effect",
1621− "errors",
1622− "generics-rep",
1623− "lists",
1624− "ordered-collections",
1625− "orders",
1626− "profunctor"
1627− ],
1628− "repo": "https://github.com/matthew-hilty/purescript-higher-order.git",
1629− "version": "v0.2.0"
1630− },
1631− "html-parser-halogen": {
1632− "dependencies": [
1633− "generics-rep",
1634− "halogen",
1635− "prelude",
1636− "string-parsers"
1637− ],
1638− "repo": "https://github.com/rnons/purescript-html-parser-halogen.git",
1639− "version": "v1.0.0-rc.2"
1640− },
1641− "http-methods": {
1642− "dependencies": [
1643− "either",
1644− "prelude",
1645− "strings"
1646− ],
1647− "repo": "https://github.com/purescript-contrib/purescript-http-methods.git",
1648− "version": "v4.0.2"
1649− },
1650− "httpure": {
1651− "dependencies": [
1652− "aff",
1653− "arrays",
1654− "bifunctors",
1655− "console",
1656− "control",
1657− "effect",
1658− "either",
1659− "exceptions",
1660− "foldable-traversable",
1661− "foreign",
1662− "lists",
1663− "maybe",
1664− "newtype",
1665− "node-buffer",
1666− "node-child-process",
1667− "node-fs",
1668− "node-fs-aff",
1669− "node-http",
1670− "node-streams",
1671− "nullable",
1672− "options",
1673− "ordered-collections",
1674− "prelude",
1675− "psci-support",
1676− "refs",
1677− "spec",
1678− "strings",
1679− "tuples",
1680− "type-equality",
1681− "unsafe-coerce"
1682− ],
1683− "repo": "https://github.com/cprussin/purescript-httpure.git",
1684− "version": "v0.10.0"
1685− },
1686− "httpure-contrib-biscotti": {
1687− "dependencies": [
1688− "aff",
1689− "argonaut",
1690− "biscotti-cookie",
1691− "biscotti-session",
1692− "effect",
1693− "either",
1694− "generics-rep",
1695− "httpure",
1696− "maybe",
1697− "profunctor-lenses",
1698− "psci-support",
1699− "test-unit",
1700− "tuples",
1701− "type-equality"
1702− ],
1703− "repo": "https://github.com/drewolson/purescript-httpure-contrib-biscotti.git",
1704− "version": "v0.1.2"
1705− },
1706− "hyper": {
1707− "dependencies": [
1708− "aff",
1709− "avar",
1710− "argonaut",
1711− "arrays",
1712− "console",
1713− "control",
1714− "effect",
1715− "foldable-traversable",
1716− "generics-rep",
1717− "http-methods",
1718− "indexed-monad",
1719− "media-types",
1720− "node-fs-aff",
1721− "node-http",
1722− "ordered-collections",
1723− "proxy",
1724− "random",
1725− "smolder",
1726− "strings",
1727− "transformers",
1728− "record-extra",
1729− "typelevel-prelude"
1730− ],
1731− "repo": "https://github.com/purescript-hyper/hyper.git",
1732− "version": "v0.11.0"
1733− },
1734− "hypertrout": {
1735− "dependencies": [
1736− "argonaut-generic",
1737− "console",
1738− "hyper",
1739− "prelude",
1740− "trout"
1741− ],
1742− "repo": "https://github.com/purescript-hyper/purescript-hypertrout.git",
1743− "version": "v0.11.1"
1744− },
1745− "identity": {
1746− "dependencies": [
1747− "control",
1748− "foldable-traversable",
1749− "invariant",
1750− "newtype",
1751− "prelude"
1752− ],
1753− "repo": "https://github.com/purescript/purescript-identity.git",
1754− "version": "v4.1.0"
1755− },
1756− "identy": {
1757− "dependencies": [
1758− "simple-json"
1759− ],
1760− "repo": "https://github.com/oreshinya/purescript-identy.git",
1761− "version": "v2.1.0"
1762− },
1763− "indexed-monad": {
1764− "dependencies": [
1765− "control",
1766− "newtype"
1767− ],
1768− "repo": "https://github.com/garyb/purescript-indexed-monad.git",
1769− "version": "v1.2.0"
1770− },
1771− "inflection": {
1772− "dependencies": [
1773− "functions"
1774− ],
1775− "repo": "https://github.com/athanclark/purescript-inflection.git",
1776− "version": "v1.0.1"
1777− },
1778− "int-53": {
1779− "dependencies": [
1780− "integers",
1781− "math",
1782− "strings"
1783− ],
1784− "repo": "https://github.com/rgrempel/purescript-int-53.git",
1785− "version": "v4.0.0"
1786− },
1787− "integers": {
1788− "dependencies": [
1789− "globals",
1790− "math",
1791− "maybe",
1792− "prelude"
1793− ],
1794− "repo": "https://github.com/purescript/purescript-integers.git",
1795− "version": "v4.0.0"
1796− },
1797− "interpolate": {
1798− "dependencies": [
1799− "prelude"
1800− ],
1801− "repo": "https://github.com/jordanmartinez/purescript-interpolate.git",
1802− "version": "v2.0.1"
1803− },
1804− "intmap": {
1805− "dependencies": [
1806− "arraybuffer-class",
1807− "parseint"
1808− ],
1809− "repo": "https://github.com/openchronology/purescript-intmap.git",
1810− "version": "v0.0.0"
1811− },
1812− "invariant": {
1813− "dependencies": [
1814− "prelude"
1815− ],
1816− "repo": "https://github.com/purescript/purescript-invariant.git",
1817− "version": "v4.1.0"
1818− },
1819− "jajanmen": {
1820− "dependencies": [
1821− "node-sqlite3",
1822− "prelude",
1823− "typelevel-prelude"
1824− ],
1825− "repo": "https://github.com/justinwoo/purescript-jajanmen.git",
1826− "version": "v1.0.0"
1827− },
1828− "jquery": {
1829− "dependencies": [
1830− "console",
1831− "effect",
1832− "foreign",
1833− "web-dom"
1834− ],
1835− "repo": "https://github.com/purescript-contrib/purescript-jquery.git",
1836− "version": "v5.0.0"
1837− },
1838− "js-date": {
1839− "dependencies": [
1840− "datetime",
1841− "exceptions",
1842− "foreign",
1843− "integers",
1844− "now"
1845− ],
1846− "repo": "https://github.com/purescript-contrib/purescript-js-date.git",
1847− "version": "v6.0.0"
1848− },
1849− "js-timers": {
1850− "dependencies": [
1851− "effect"
1852− ],
1853− "repo": "https://github.com/purescript-contrib/purescript-js-timers.git",
1854− "version": "v4.0.1"
1855− },
1856− "json-pointer": {
1857− "dependencies": [
1858− "console",
1859− "effect",
1860− "foreign",
1861− "generics-rep",
1862− "prelude",
1863− "psci-support",
1864− "spec-quickcheck",
1865− "strings"
1866− ],
1867− "repo": "https://github.com/reactormonk/purescript-json-pointer.git",
1868− "version": "v1.1.0"
1869− },
1870− "json-schema": {
1871− "dependencies": [
1872− "generics-rep",
1873− "prelude",
1874− "simple-json"
1875− ],
1876− "repo": "https://github.com/felixmulder/purescript-json-schema.git",
1877− "version": "v0.0.1"
1878− },
1879− "jwt": {
1880− "dependencies": [
1881− "argonaut-core",
1882− "arrays",
1883− "b64",
1884− "either",
1885− "errors",
1886− "exceptions",
1887− "prelude",
1888− "profunctor-lenses",
1889− "strings"
1890− ],
1891− "repo": "https://github.com/menelaos/purescript-jwt.git",
1892− "version": "v0.0.7"
1893− },
1894− "kancho": {
1895− "dependencies": [
1896− "foreign",
1897− "newtype",
1898− "strings",
1899− "typelevel-prelude"
1900− ],
1901− "repo": "https://github.com/justinwoo/purescript-kancho.git",
1902− "version": "v2.0.0"
1903− },
1904− "kishimen": {
1905− "dependencies": [
1906− "generics-rep",
1907− "prelude",
1908− "typelevel-prelude",
1909− "variant"
1910− ],
1911− "repo": "https://github.com/justinwoo/purescript-kishimen.git",
1912− "version": "v1.0.1"
1913− },
1914− "lazy": {
1915− "dependencies": [
1916− "control",
1917− "foldable-traversable",
1918− "invariant",
1919− "prelude"
1920− ],
1921− "repo": "https://github.com/purescript/purescript-lazy.git",
1922− "version": "v4.0.0"
1923− },
1924− "lcg": {
1925− "dependencies": [
1926− "effect",
1927− "integers",
1928− "math",
1929− "maybe",
1930− "partial",
1931− "prelude",
1932− "random"
1933− ],
1934− "repo": "https://github.com/purescript/purescript-lcg.git",
1935− "version": "v2.0.0"
1936− },
1937− "leibniz": {
1938− "dependencies": [
1939− "prelude",
1940− "unsafe-coerce"
1941− ],
1942− "repo": "https://github.com/paf31/purescript-leibniz.git",
1943− "version": "v5.0.0"
1944− },
1945− "lenient-html-parser": {
1946− "dependencies": [
1947− "console",
1948− "generics-rep",
1949− "prelude",
1950− "string-parsers"
1951− ],
1952− "repo": "https://github.com/justinwoo/purescript-lenient-html-parser.git",
1953− "version": "v4.0.0"
1954− },
1955− "lists": {
1956− "dependencies": [
1957− "bifunctors",
1958− "control",
1959− "foldable-traversable",
1960− "lazy",
1961− "maybe",
1962− "newtype",
1963− "nonempty",
1964− "partial",
1965− "prelude",
1966− "tailrec",
1967− "tuples",
1968− "unfoldable"
1969− ],
1970− "repo": "https://github.com/purescript/purescript-lists.git",
1971− "version": "v5.4.1"
1972− },
1973− "literals": {
1974− "dependencies": [
1975− "assert",
1976− "effect",
1977− "console",
1978− "integers",
1979− "numbers",
1980− "partial",
1981− "psci-support",
1982− "unsafe-coerce",
1983− "typelevel-prelude"
1984− ],
1985− "repo": "https://github.com/jvliwanag/purescript-literals.git",
1986− "version": "v0.1.1"
1987− },
1988− "logging": {
1989− "dependencies": [
1990− "prelude",
1991− "contravariant",
1992− "console",
1993− "effect",
1994− "transformers",
1995− "tuples",
1996− "either"
1997− ],
1998− "repo": "https://github.com/rightfold/purescript-logging.git",
1999− "version": "v3.0.0"
2000− },
2001− "logging-journald": {
2002− "dependencies": [
2003− "generics-rep",
2004− "logging",
2005− "systemd-journald"
2006− ],
2007− "repo": "https://github.com/paluh/purescript-logging-journald.git",
2008− "version": "v0.3.2"
2009− },
2010− "longs": {
2011− "dependencies": [
2012− "effect",
2013− "console",
2014− "prelude",
2015− "strings",
2016− "foreign",
2017− "nullable",
2018− "functions"
2019− ],
2020− "repo": "https://github.com/zapph/purescript-longs.git",
2021− "version": "v0.1.1"
2022− },
2023− "machines": {
2024− "dependencies": [
2025− "arrays",
2026− "control",
2027− "effect",
2028− "lists",
2029− "maybe",
2030− "prelude",
2031− "profunctor",
2032− "tuples",
2033− "unfoldable"
2034− ],
2035− "repo": "https://github.com/purescript-contrib/purescript-machines.git",
2036− "version": "v5.1.0"
2037− },
2038− "makkori": {
2039− "dependencies": [
2040− "functions",
2041− "node-http",
2042− "prelude",
2043− "record"
2044− ],
2045− "repo": "https://github.com/justinwoo/purescript-makkori.git",
2046− "version": "v1.0.0"
2047− },
2048− "math": {
2049− "dependencies": [],
2050− "repo": "https://github.com/purescript/purescript-math.git",
2051− "version": "v2.1.1"
2052− },
2053− "matrices": {
2054− "dependencies": [
2055− "arrays",
2056− "strings"
2057− ],
2058− "repo": "https://github.com/kritzcreek/purescript-matrices.git",
2059− "version": "v5.0.1"
2060− },
2061− "maybe": {
2062− "dependencies": [
2063− "control",
2064− "invariant",
2065− "newtype",
2066− "prelude"
2067− ],
2068− "repo": "https://github.com/purescript/purescript-maybe.git",
2069− "version": "v4.0.1"
2070− },
2071− "media-types": {
2072− "dependencies": [
2073− "newtype",
2074− "prelude"
2075− ],
2076− "repo": "https://github.com/purescript-contrib/purescript-media-types.git",
2077− "version": "v4.0.1"
2078− },
2079− "memoize": {
2080− "dependencies": [
2081− "either",
2082− "generics-rep",
2083− "integers",
2084− "lazy",
2085− "lists",
2086− "maybe",
2087− "strings",
2088− "tuples"
2089− ],
2090− "repo": "https://github.com/paf31/purescript-memoize.git",
2091− "version": "v5.0.0"
2092− },
2093− "metadata": {
2094− "dependencies": [],
2095− "repo": "https://github.com/spacchetti/purescript-metadata.git",
2096− "version": "v0.13.8"
2097− },
2098− "milkis": {
2099− "dependencies": [
2100− "aff-promise",
2101− "arraybuffer-types",
2102− "foreign-object",
2103− "prelude",
2104− "typelevel-prelude"
2105− ],
2106− "repo": "https://github.com/justinwoo/purescript-milkis.git",
2107− "version": "v7.4.0"
2108− },
2109− "minibench": {
2110− "dependencies": [
2111− "console",
2112− "effect",
2113− "globals",
2114− "integers",
2115− "math",
2116− "partial",
2117− "prelude",
2118− "refs"
2119− ],
2120− "repo": "https://github.com/purescript/purescript-minibench.git",
2121− "version": "v2.0.0"
2122− },
2123− "mmorph": {
2124− "dependencies": [
2125− "free",
2126− "functors",
2127− "transformers"
2128− ],
2129− "repo": "https://github.com/thimoteus/purescript-mmorph.git",
2130− "version": "v5.1.0"
2131− },
2132− "mol-draw": {
2133− "dependencies": [
2134− "arrays",
2135− "console",
2136− "effect",
2137− "either",
2138− "integers",
2139− "math",
2140− "numbers",
2141− "ordered-collections",
2142− "strings",
2143− "stringutils",
2144− "validated-molecule"
2145− ],
2146− "repo": "https://github.com/lukasturcani/mol-draw.git",
2147− "version": "v1.0.16"
2148− },
2149− "monad-control": {
2150− "dependencies": [
2151− "aff",
2152− "freet",
2153− "identity",
2154− "lists"
2155− ],
2156− "repo": "https://github.com/athanclark/purescript-monad-control.git",
2157− "version": "v5.0.0"
2158− },
2159− "monad-logger": {
2160− "dependencies": [
2161− "aff",
2162− "ansi",
2163− "argonaut",
2164− "arrays",
2165− "console",
2166− "control",
2167− "effect",
2168− "foldable-traversable",
2169− "foreign-object",
2170− "integers",
2171− "js-date",
2172− "maybe",
2173− "newtype",
2174− "ordered-collections",
2175− "prelude",
2176− "strings",
2177− "transformers",
2178− "tuples"
2179− ],
2180− "repo": "https://github.com/cprussin/purescript-monad-logger.git",
2181− "version": "v1.3.1"
2182− },
2183− "monad-loops": {
2184− "dependencies": [
2185− "maybe",
2186− "tailrec",
2187− "prelude",
2188− "tuples",
2189− "lists"
2190− ],
2191− "repo": "https://github.com/mlang/purescript-monad-loops.git",
2192− "version": "v0.5.0"
2193− },
2194− "monad-unlift": {
2195− "dependencies": [
2196− "monad-control"
2197− ],
2198− "repo": "https://github.com/athanclark/purescript-monad-unlift.git",
2199− "version": "v1.0.1"
2200− },
2201− "money": {
2202− "dependencies": [
2203− "foldable-traversable",
2204− "globals",
2205− "integers",
2206− "lists",
2207− "math",
2208− "prelude",
2209− "ring-modules",
2210− "newtype",
2211− "rationals"
2212− ],
2213− "repo": "https://github.com/i-am-tom/purescript-money.git",
2214− "version": "v8.0.0"
2215− },
2216− "motsunabe": {
2217− "dependencies": [
2218− "lists",
2219− "strings"
2220− ],
2221− "repo": "https://github.com/justinwoo/purescript-motsunabe.git",
2222− "version": "v2.0.0"
2223− },
2224− "mysql": {
2225− "dependencies": [
2226− "aff",
2227− "js-date",
2228− "simple-json"
2229− ],
2230− "repo": "https://github.com/oreshinya/purescript-mysql.git",
2231− "version": "v4.1.1"
2232− },
2233− "naporitan": {
2234− "dependencies": [
2235− "record",
2236− "typelevel-prelude"
2237− ],
2238− "repo": "https://github.com/justinwoo/purescript-naporitan.git",
2239− "version": "v1.0.0"
2240− },
2241− "naturals": {
2242− "dependencies": [
2243− "maybe",
2244− "prelude",
2245− "enums"
2246− ],
2247− "repo": "https://github.com/LiamGoodacre/purescript-naturals.git",
2248− "version": "v3.0.0"
2249− },
2250− "newtype": {
2251− "dependencies": [
2252− "prelude"
2253− ],
2254− "repo": "https://github.com/purescript/purescript-newtype.git",
2255− "version": "v3.0.0"
2256− },
2257− "node-buffer": {
2258− "dependencies": [
2259− "arraybuffer-types",
2260− "effect",
2261− "maybe",
2262− "st",
2263− "unsafe-coerce"
2264− ],
2265− "repo": "https://github.com/purescript-node/purescript-node-buffer.git",
2266− "version": "v6.0.0"
2267− },
2268− "node-child-process": {
2269− "dependencies": [
2270− "exceptions",
2271− "foreign",
2272− "foreign-object",
2273− "functions",
2274− "node-fs",
2275− "node-streams",
2276− "nullable",
2277− "posix-types",
2278− "unsafe-coerce"
2279− ],
2280− "repo": "https://github.com/purescript-node/purescript-node-child-process.git",
2281− "version": "v6.0.0"
2282− },
2283− "node-electron": {
2284− "dependencies": [
2285− "effect",
2286− "foreign",
2287− "halogen",
2288− "maybe",
2289− "options",
2290− "prelude",
2291− "transformers",
2292− "unsafe-coerce",
2293− "web-dom",
2294− "web-events",
2295− "web-html"
2296− ],
2297− "repo": "https://github.com/cprussin/purescript-node-electron.git",
2298− "version": "v0.0.2"
2299− },
2300− "node-fs": {
2301− "dependencies": [
2302− "datetime",
2303− "effect",
2304− "either",
2305− "enums",
2306− "exceptions",
2307− "functions",
2308− "globals",
2309− "integers",
2310− "js-date",
2311− "maybe",
2312− "node-buffer",
2313− "node-path",
2314− "node-streams",
2315− "nullable",
2316− "partial",
2317− "prelude",
2318− "strings",
2319− "unsafe-coerce"
2320− ],
2321− "repo": "https://github.com/purescript-node/purescript-node-fs.git",
2322− "version": "v5.0.1"
2323− },
2324− "node-fs-aff": {
2325− "dependencies": [
2326− "aff",
2327− "either",
2328− "node-fs",
2329− "node-path"
2330− ],
2331− "repo": "https://github.com/purescript-node/purescript-node-fs-aff.git",
2332− "version": "v6.0.0"
2333− },
2334− "node-he": {
2335− "dependencies": [],
2336− "repo": "https://github.com/justinwoo/purescript-node-he.git",
2337− "version": "v0.2.0"
2338− },
2339− "node-http": {
2340− "dependencies": [
2341− "arraybuffer-types",
2342− "contravariant",
2343− "effect",
2344− "foreign",
2345− "foreign-object",
2346− "maybe",
2347− "node-buffer",
2348− "node-streams",
2349− "node-url",
2350− "nullable",
2351− "options",
2352− "prelude",
2353− "unsafe-coerce"
2354− ],
2355− "repo": "https://github.com/purescript-node/purescript-node-http.git",
2356− "version": "v5.0.2"
2357− },
2358− "node-net": {
2359− "dependencies": [
2360− "effect",
2361− "either",
2362− "exceptions",
2363− "foreign",
2364− "maybe",
2365− "node-buffer",
2366− "node-fs",
2367− "nullable",
2368− "options",
2369− "prelude",
2370− "transformers"
2371− ],
2372− "repo": "https://github.com/purescript-node/purescript-node-net.git",
2373− "version": "v1.0.0"
2374− },
2375− "node-path": {
2376− "dependencies": [
2377− "effect"
2378− ],
2379− "repo": "https://github.com/purescript-node/purescript-node-path.git",
2380− "version": "v3.0.0"
2381− },
2382− "node-postgres": {
2383− "dependencies": [
2384− "aff",
2385− "arrays",
2386− "datetime",
2387− "either",
2388− "foldable-traversable",
2389− "foreign",
2390− "integers",
2391− "nullable",
2392− "prelude",
2393− "transformers",
2394− "unsafe-coerce"
2395− ],
2396− "repo": "https://github.com/epost/purescript-node-postgres.git",
2397− "version": "v5.0.0"
2398− },
2399− "node-process": {
2400− "dependencies": [
2401− "effect",
2402− "foreign-object",
2403− "maybe",
2404− "node-streams",
2405− "posix-types",
2406− "prelude",
2407− "unsafe-coerce"
2408− ],
2409− "repo": "https://github.com/purescript-node/purescript-node-process.git",
2410− "version": "v7.0.0"
2411− },
2412− "node-readline": {
2413− "dependencies": [
2414− "effect",
2415− "foreign",
2416− "node-process",
2417− "node-streams",
2418− "options",
2419− "prelude"
2420− ],
2421− "repo": "https://github.com/purescript-node/purescript-node-readline.git",
2422− "version": "v4.0.1"
2423− },
2424− "node-sqlite3": {
2425− "dependencies": [
2426− "aff",
2427− "foreign"
2428− ],
2429− "repo": "https://github.com/justinwoo/purescript-node-sqlite3.git",
2430− "version": "v6.0.0"
2431− },
2432− "node-streams": {
2433− "dependencies": [
2434− "effect",
2435− "either",
2436− "exceptions",
2437− "node-buffer",
2438− "prelude"
2439− ],
2440− "repo": "https://github.com/purescript-node/purescript-node-streams.git",
2441− "version": "v4.0.1"
2442− },
2443− "node-telegram-bot-api": {
2444− "dependencies": [
2445− "aff",
2446− "foreign",
2447− "simple-json",
2448− "strings"
2449− ],
2450− "repo": "https://github.com/justinwoo/purescript-node-telegram-bot-api.git",
2451− "version": "v4.0.0"
2452− },
2453− "node-url": {
2454− "dependencies": [
2455− "nullable"
2456− ],
2457− "repo": "https://github.com/purescript-node/purescript-node-url.git",
2458− "version": "v4.0.0"
2459− },
2460− "nodemailer": {
2461− "dependencies": [
2462− "aff",
2463− "node-streams",
2464− "simple-json"
2465− ],
2466− "repo": "https://github.com/oreshinya/purescript-nodemailer.git",
2467− "version": "v2.0.2"
2468− },
2469− "nodetrout": {
2470− "dependencies": [
2471− "effect",
2472− "form-urlencoded",
2473− "http-methods",
2474− "node-http",
2475− "trout"
2476− ],
2477− "repo": "https://github.com/nsaunders/purescript-nodetrout.git",
2478− "version": "v0.0.1"
2479− },
2480− "nonempty": {
2481− "dependencies": [
2482− "control",
2483− "foldable-traversable",
2484− "maybe",
2485− "prelude",
2486− "tuples",
2487− "unfoldable"
2488− ],
2489− "repo": "https://github.com/purescript/purescript-nonempty.git",
2490− "version": "v5.0.0"
2491− },
2492− "now": {
2493− "dependencies": [
2494− "datetime",
2495− "effect"
2496− ],
2497− "repo": "https://github.com/purescript-contrib/purescript-now.git",
2498− "version": "v4.0.0"
2499− },
2500− "nullable": {
2501− "dependencies": [
2502− "functions",
2503− "maybe"
2504− ],
2505− "repo": "https://github.com/purescript-contrib/purescript-nullable.git",
2506− "version": "v4.1.1"
2507− },
2508− "numbers": {
2509− "dependencies": [
2510− "globals",
2511− "math",
2512− "maybe"
2513− ],
2514− "repo": "https://github.com/sharkdp/purescript-numbers.git",
2515− "version": "v7.0.0"
2516− },
2517− "options": {
2518− "dependencies": [
2519− "contravariant",
2520− "foreign",
2521− "foreign-object",
2522− "maybe",
2523− "tuples"
2524− ],
2525− "repo": "https://github.com/purescript-contrib/purescript-options.git",
2526− "version": "v5.0.0"
2527− },
2528− "optlicative": {
2529− "dependencies": [
2530− "console",
2531− "foreign",
2532− "node-process",
2533− "record",
2534− "validation"
2535− ],
2536− "repo": "https://github.com/thimoteus/purescript-optlicative.git",
2537− "version": "v6.0.1"
2538− },
2539− "optparse": {
2540− "dependencies": [
2541− "arrays",
2542− "console",
2543− "effect",
2544− "exists",
2545− "exitcodes",
2546− "free",
2547− "memoize",
2548− "node-process",
2549− "ordered-collections",
2550− "prelude",
2551− "strings",
2552− "transformers"
2553− ],
2554− "repo": "https://github.com/f-o-a-m/purescript-optparse.git",
2555− "version": "v3.0.1"
2556− },
2557− "ordered-collections": {
2558− "dependencies": [
2559− "arrays",
2560− "foldable-traversable",
2561− "gen",
2562− "lists",
2563− "maybe",
2564− "partial",
2565− "prelude",
2566− "st",
2567− "tailrec",
2568− "tuples",
2569− "unfoldable",
2570− "unsafe-coerce"
2571− ],
2572− "repo": "https://github.com/purescript/purescript-ordered-collections.git",
2573− "version": "v1.6.1"
2574− },
2575− "ordered-set": {
2576− "dependencies": [
2577− "argonaut-codecs",
2578− "arrays",
2579− "partial",
2580− "prelude",
2581− "unfoldable"
2582− ],
2583− "repo": "https://github.com/flip111/purescript-ordered-set.git",
2584− "version": "v0.4.0"
2585− },
2586− "orders": {
2587− "dependencies": [
2588− "newtype",
2589− "prelude"
2590− ],
2591− "repo": "https://github.com/purescript/purescript-orders.git",
2592− "version": "v4.0.0"
2593− },
2594− "pairing": {
2595− "dependencies": [
2596− "free",
2597− "functors",
2598− "transformers"
2599− ],
2600− "repo": "https://github.com/paf31/purescript-pairing.git",
2601− "version": "v5.1.0"
2602− },
2603− "pairs": {
2604− "dependencies": [
2605− "console",
2606− "distributive",
2607− "foldable-traversable",
2608− "quickcheck"
2609− ],
2610− "repo": "https://github.com/sharkdp/purescript-pairs.git",
2611− "version": "v7.0.0"
2612− },
2613− "parallel": {
2614− "dependencies": [
2615− "control",
2616− "effect",
2617− "either",
2618− "foldable-traversable",
2619− "functors",
2620− "maybe",
2621− "newtype",
2622− "prelude",
2623− "refs",
2624− "transformers"
2625− ],
2626− "repo": "https://github.com/purescript/purescript-parallel.git",
2627− "version": "v4.0.0"
2628− },
2629− "parseint": {
2630− "dependencies": [
2631− "functions",
2632− "globals",
2633− "integers"
2634− ],
2635− "repo": "https://github.com/athanclark/purescript-parseint.git",
2636− "version": "v1.1.1"
2637− },
2638− "parsing": {
2639− "dependencies": [
2640− "arrays",
2641− "either",
2642− "foldable-traversable",
2643− "identity",
2644− "integers",
2645− "lists",
2646− "maybe",
2647− "strings",
2648− "transformers",
2649− "unicode"
2650− ],
2651− "repo": "https://github.com/purescript-contrib/purescript-parsing.git",
2652− "version": "v5.0.3"
2653− },
2654− "parsing-dataview": {
2655− "dependencies": [
2656− "parsing",
2657− "arraybuffer-types",
2658− "arraybuffer"
2659− ],
2660− "repo": "https://github.com/jamesdbrock/purescript-parsing-dataview.git",
2661− "version": "v1.1.1"
2662− },
2663− "parsing-expect": {
2664− "dependencies": [
2665− "console",
2666− "effect",
2667− "parsing",
2668− "prelude",
2669− "psci-support"
2670− ],
2671− "repo": "https://github.com/markfarrell/purescript-parsing-expect.git",
2672− "version": "v0.0.3"
2673− },
2674− "partial": {
2675− "dependencies": [],
2676− "repo": "https://github.com/purescript/purescript-partial.git",
2677− "version": "v2.0.1"
2678− },
2679− "pathy": {
2680− "dependencies": [
2681− "console",
2682− "exceptions",
2683− "lists",
2684− "partial",
2685− "profunctor",
2686− "quickcheck",
2687− "strings",
2688− "transformers",
2689− "unsafe-coerce",
2690− "typelevel-prelude"
2691− ],
2692− "repo": "https://github.com/slamdata/purescript-pathy.git",
2693− "version": "v7.0.1"
2694− },
2695− "payload": {
2696− "dependencies": [
2697− "aff",
2698− "affjax",
2699− "console",
2700− "debug",
2701− "effect",
2702− "foreign-generic",
2703− "node-fs",
2704− "node-fs-aff",
2705− "node-http",
2706− "prelude",
2707− "psci-support",
2708− "record",
2709− "simple-json",
2710− "stringutils",
2711− "test-unit",
2712− "typelevel-prelude"
2713− ],
2714− "repo": "https://github.com/hoodunit/purescript-payload",
2715− "version": "v0.3.0"
2716− },
2717− "phoenix": {
2718− "dependencies": [
2719− "options"
2720− ],
2721− "repo": "https://github.com/brandonhamilton/purescript-phoenix.git",
2722− "version": "v4.0.0"
2723− },
2724− "pipes": {
2725− "dependencies": [
2726− "aff",
2727− "lists",
2728− "mmorph",
2729− "prelude",
2730− "tailrec",
2731− "transformers",
2732− "tuples"
2733− ],
2734− "repo": "https://github.com/felixSchl/purescript-pipes.git",
2735− "version": "v6.0.0"
2736− },
2737− "pointed-list": {
2738− "dependencies": [
2739− "lists",
2740− "prelude"
2741− ],
2742− "repo": "https://github.com/paluh/purescript-pointed-list.git",
2743− "version": "v0.4.0"
2744− },
2745− "polyform": {
2746− "dependencies": [
2747− "foreign",
2748− "foreign-object",
2749− "generics-rep",
2750− "invariant",
2751− "newtype",
2752− "ordered-collections",
2753− "profunctor",
2754− "quickcheck-laws",
2755− "run",
2756− "transformers",
2757− "validation",
2758− "variant"
2759− ],
2760− "repo": "https://github.com/paluh/purescript-polyform.git",
2761− "version": "v0.8.2"
2762− },
2763− "polymorphic-vectors": {
2764− "dependencies": [
2765− "canvas",
2766− "console",
2767− "distributive",
2768− "effect",
2769− "foldable-traversable",
2770− "math",
2771− "prelude",
2772− "psci-support"
2773− ],
2774− "repo": "https://github.com/3ddyy/purescript-polymorphic-vectors.git",
2775− "version": "v1.1.2"
2776− },
2777− "posix-types": {
2778− "dependencies": [
2779− "maybe",
2780− "prelude"
2781− ],
2782− "repo": "https://github.com/purescript-node/purescript-posix-types.git",
2783− "version": "v4.0.0"
2784− },
2785− "precise-datetime": {
2786− "dependencies": [
2787− "arrays",
2788− "console",
2789− "datetime",
2790− "either",
2791− "enums",
2792− "foldable-traversable",
2793− "formatters",
2794− "integers",
2795− "js-date",
2796− "lists",
2797− "maybe",
2798− "newtype",
2799− "prelude",
2800− "strings",
2801− "tuples",
2802− "unicode",
2803− "numbers",
2804− "decimals"
2805− ],
2806− "repo": "https://github.com/awakesecurity/purescript-precise-datetime.git",
2807− "version": "v5.1.1"
2808− },
2809− "prelude": {
2810− "dependencies": [],
2811− "repo": "https://github.com/purescript/purescript-prelude.git",
2812− "version": "v4.1.1"
2813− },
2814− "prettier": {
2815− "dependencies": [
2816− "maybe",
2817− "prelude"
2818− ],
2819− "repo": "https://github.com/gcanti/purescript-prettier.git",
2820− "version": "v0.3.0"
2821− },
2822− "profunctor": {
2823− "dependencies": [
2824− "contravariant",
2825− "control",
2826− "distributive",
2827− "either",
2828− "exists",
2829− "invariant",
2830− "newtype",
2831− "prelude",
2832− "tuples"
2833− ],
2834− "repo": "https://github.com/purescript/purescript-profunctor.git",
2835− "version": "v4.1.0"
2836− },
2837− "profunctor-lenses": {
2838− "dependencies": [
2839− "arrays",
2840− "bifunctors",
2841− "const",
2842− "control",
2843− "distributive",
2844− "either",
2845− "foldable-traversable",
2846− "foreign-object",
2847− "functors",
2848− "identity",
2849− "lists",
2850− "maybe",
2851− "newtype",
2852− "ordered-collections",
2853− "partial",
2854− "prelude",
2855− "profunctor",
2856− "record",
2857− "transformers",
2858− "tuples"
2859− ],
2860− "repo": "https://github.com/purescript-contrib/purescript-profunctor-lenses.git",
2861− "version": "v6.3.0"
2862− },
2863− "promises": {
2864− "dependencies": [
2865− "console",
2866− "datetime",
2867− "exceptions",
2868− "functions",
2869− "prelude",
2870− "transformers"
2871− ],
2872− "repo": "https://github.com/thimoteus/purescript-promises.git",
2873− "version": "v3.1.1"
2874− },
2875− "proxy": {
2876− "dependencies": [
2877− "prelude"
2878− ],
2879− "repo": "https://github.com/purescript/purescript-proxy.git",
2880− "version": "v3.0.0"
2881− },
2882− "proxying": {
2883− "dependencies": [
2884− "effect",
2885− "generics-rep",
2886− "prelude",
2887− "typelevel-prelude"
2888− ],
2889− "repo": "https://github.com/matthew-hilty/purescript-proxying.git",
2890− "version": "v1.1.0"
2891− },
2892− "psa-utils": {
2893− "dependencies": [
2894− "ansi",
2895− "argonaut-codecs",
2896− "argonaut-core",
2897− "arrays",
2898− "console",
2899− "control",
2900− "effect",
2901− "either",
2902− "foldable-traversable",
2903− "maybe",
2904− "node-path",
2905− "ordered-collections",
2906− "prelude",
2907− "strings",
2908− "tuples",
2909− "unsafe-coerce"
2910− ],
2911− "repo": "https://github.com/natefaubion/purescript-psa-utils.git",
2912− "version": "v7.0.0"
2913− },
2914− "psc-ide": {
2915− "dependencies": [
2916− "aff",
2917− "argonaut",
2918− "arrays",
2919− "console",
2920− "maybe",
2921− "node-child-process",
2922− "node-fs",
2923− "parallel",
2924− "random"
2925− ],
2926− "repo": "https://github.com/kRITZCREEK/purescript-psc-ide.git",
2927− "version": "v16.0.0"
2928− },
2929− "psci-support": {
2930− "dependencies": [
2931− "console",
2932− "effect",
2933− "prelude"
2934− ],
2935− "repo": "https://github.com/purescript/purescript-psci-support.git",
2936− "version": "v4.0.0"
2937− },
2938− "quantities": {
2939− "dependencies": [
2940− "lists",
2941− "foldable-traversable",
2942− "numbers",
2943− "pairs",
2944− "decimals"
2945− ],
2946− "repo": "https://github.com/sharkdp/purescript-quantities.git",
2947− "version": "v10.0.0"
2948− },
2949− "querydsl": {
2950− "dependencies": [
2951− "prelude",
2952− "effect",
2953− "arrays",
2954− "lists",
2955− "record",
2956− "strings",
2957− "tuples",
2958− "typelevel-prelude",
2959− "either",
2960− "transformers",
2961− "node-sqlite3",
2962− "datetime",
2963− "formatters",
2964− "node-buffer",
2965− "nullable"
2966− ],
2967− "repo": "https://github.com/Dretch/purescript-querydsl.git",
2968− "version": "v0.10.1"
2969− },
2970− "queue": {
2971− "dependencies": [
2972− "refs",
2973− "aff",
2974− "foreign-object",
2975− "avar"
2976− ],
2977− "repo": "https://github.com/athanclark/purescript-queue.git",
2978− "version": "v8.0.2"
2979− },
2980− "quickcheck": {
2981− "dependencies": [
2982− "arrays",
2983− "console",
2984− "control",
2985− "effect",
2986− "either",
2987− "enums",
2988− "exceptions",
2989− "foldable-traversable",
2990− "gen",
2991− "generics-rep",
2992− "identity",
2993− "integers",
2994− "lazy",
2995− "lcg",
2996− "lists",
2997− "math",
2998− "maybe",
2999− "newtype",
3000− "nonempty",
3001− "partial",
3002− "prelude",
3003− "record",
3004− "st",
3005− "strings",
3006− "tailrec",
3007− "transformers",
3008− "tuples",
3009− "unfoldable"
3010− ],
3011− "repo": "https://github.com/purescript/purescript-quickcheck.git",
3012− "version": "v6.1.0"
3013− },
3014− "quickcheck-combinators": {
3015− "dependencies": [
3016− "quickcheck",
3017− "typelevel"
3018− ],
3019− "repo": "https://github.com/athanclark/purescript-quickcheck-combinators.git",
3020− "version": "v0.1.3"
3021− },
3022− "quickcheck-laws": {
3023− "dependencies": [
3024− "enums",
3025− "proxy",
3026− "quickcheck"
3027− ],
3028− "repo": "https://github.com/garyb/purescript-quickcheck-laws.git",
3029− "version": "v5.1.0"
3030− },
3031− "quickcheck-utf8": {
3032− "dependencies": [
3033− "quickcheck"
3034− ],
3035− "repo": "https://github.com/openchronology/purescript-quickcheck-utf8.git",
3036− "version": "v0.0.0"
3037− },
3038− "quotient": {
3039− "dependencies": [
3040− "prelude",
3041− "proxy",
3042− "quickcheck"
3043− ],
3044− "repo": "https://github.com/rightfold/purescript-quotient.git",
3045− "version": "v3.0.0"
3046− },
3047− "radox": {
3048− "dependencies": [
3049− "prelude",
3050− "effect",
3051− "variant",
3052− "refs",
3053− "aff"
3054− ],
3055− "repo": "https://github.com/danieljharvey/purescript-radox.git",
3056− "version": "v1.0.0"
3057− },
3058− "random": {
3059− "dependencies": [
3060− "effect",
3061− "integers",
3062− "math"
3063− ],
3064− "repo": "https://github.com/purescript/purescript-random.git",
3065− "version": "v4.0.0"
3066− },
3067− "rationals": {
3068− "dependencies": [
3069− "integers",
3070− "prelude"
3071− ],
3072− "repo": "https://github.com/anttih/purescript-rationals.git",
3073− "version": "v5.0.0"
3074− },
3075− "rave": {
3076− "dependencies": [
3077− "aff",
3078− "checked-exceptions",
3079− "console",
3080− "effect",
3081− "exceptions",
3082− "prelude",
3083− "record",
3084− "variant"
3085− ],
3086− "repo": "https://github.com/reactormonk/purescript-rave.git",
3087− "version": "v0.1.1"
3088− },
3089− "react": {
3090− "dependencies": [
3091− "effect",
3092− "exceptions",
3093− "maybe",
3094− "nullable",
3095− "prelude",
3096− "typelevel-prelude",
3097− "unsafe-coerce"
3098− ],
3099− "repo": "https://github.com/purescript-contrib/purescript-react.git",
3100− "version": "v8.0.0"
3101− },
3102− "react-basic": {
3103− "dependencies": [
3104− "prelude",
3105− "effect",
3106− "record"
3107− ],
3108− "repo": "https://github.com/lumihq/purescript-react-basic.git",
3109− "version": "v15.0.0"
3110− },
3111− "react-basic-classic": {
3112− "dependencies": [
3113− "prelude",
3114− "aff",
3115− "effect",
3116− "functions",
3117− "maybe",
3118− "nullable",
3119− "react-basic"
3120− ],
3121− "repo": "https://github.com/lumihq/purescript-react-basic-classic.git",
3122− "version": "v1.0.1"
3123− },
3124− "react-basic-compat": {
3125− "dependencies": [
3126− "effect",
3127− "react-basic-classic"
3128− ],
3129− "repo": "https://github.com/lumihq/purescript-react-basic-compat.git",
3130− "version": "v1.0.1"
3131− },
3132− "react-basic-dnd": {
3133− "dependencies": [
3134− "prelude",
3135− "react-basic-hooks",
3136− "nullable",
3137− "promises",
3138− "web-dom"
3139− ],
3140− "repo": "https://github.com/lumihq/purescript-react-dnd-basic.git",
3141− "version": "v7.0.0"
3142− },
3143− "react-basic-dom": {
3144− "dependencies": [
3145− "prelude",
3146− "effect",
3147− "foreign-object",
3148− "react-basic",
3149− "unsafe-coerce",
3150− "web-dom",
3151− "web-events",
3152− "web-file",
3153− "web-html"
3154− ],
3155− "repo": "https://github.com/lumihq/purescript-react-basic-dom.git",
3156− "version": "v2.0.0"
3157− },
3158− "react-basic-emotion": {
3159− "dependencies": [
3160− "prelude",
3161− "colors",
3162− "foreign",
3163− "numbers",
3164− "react-basic",
3165− "typelevel-prelude",
3166− "unsafe-reference",
3167− "web-html"
3168− ],
3169− "repo": "https://github.com/lumihq/purescript-react-basic-emotion.git",
3170− "version": "v4.2.2"
3171− },
3172− "react-basic-hooks": {
3173− "dependencies": [
3174− "prelude",
3175− "aff-promise",
3176− "aff",
3177− "console",
3178− "datetime",
3179− "effect",
3180− "either",
3181− "indexed-monad",
3182− "maybe",
3183− "newtype",
3184− "numbers",
3185− "react-basic",
3186− "type-equality",
3187− "unsafe-coerce",
3188− "unsafe-reference",
3189− "web-html"
3190− ],
3191− "repo": "https://github.com/spicydonuts/purescript-react-basic-hooks.git",
3192− "version": "v6.0.0"
3193− },
3194− "react-basic-native": {
3195− "dependencies": [
3196− "effect",
3197− "foreign-object",
3198− "js-date",
3199− "react-basic",
3200− "react-basic-dom",
3201− "undefinable"
3202− ],
3203− "repo": "https://github.com/dwhitney/purescript-react-basic-native.git",
3204− "version": "v0.1.3"
3205− },
3206− "react-dom": {
3207− "dependencies": [
3208− "effect",
3209− "react",
3210− "web-dom"
3211− ],
3212− "repo": "https://github.com/purescript-contrib/purescript-react-dom.git",
3213− "version": "v6.1.0"
3214− },
3215− "react-queue": {
3216− "dependencies": [
3217− "exceptions",
3218− "queue",
3219− "react",
3220− "zeta"
3221− ],
3222− "repo": "https://github.com/athanclark/purescript-react-queue.git",
3223− "version": "v1.3.2"
3224− },
3225− "react-radox": {
3226− "dependencies": [
3227− "prelude",
3228− "effect",
3229− "radox",
3230− "react"
3231− ],
3232− "repo": "https://github.com/danieljharvey/purescript-react-radox.git",
3233− "version": "v0.0.5"
3234− },
3235− "react-stylesheet": {
3236− "dependencies": [
3237− "effect",
3238− "react",
3239− "cssom",
3240− "stylesheet"
3241− ],
3242− "repo": "https://github.com/danieljharvey/purescript-react-stylesheet.git",
3243− "version": "v0.0.2"
3244− },
3245− "read": {
3246− "dependencies": [
3247− "maybe",
3248− "prelude",
3249− "strings"
3250− ],
3251− "repo": "https://github.com/truqu/purescript-read.git",
3252− "version": "v1.0.1"
3253− },
3254− "record": {
3255− "dependencies": [
3256− "functions",
3257− "prelude",
3258− "st",
3259− "unsafe-coerce"
3260− ],
3261− "repo": "https://github.com/purescript/purescript-record.git",
3262− "version": "v2.0.2"
3263− },
3264− "record-extra": {
3265− "dependencies": [
3266− "arrays",
3267− "functions",
3268− "lists",
3269− "record",
3270− "typelevel-prelude"
3271− ],
3272− "repo": "https://github.com/justinwoo/purescript-record-extra.git",
3273− "version": "v3.0.1"
3274− },
3275− "record-format": {
3276− "dependencies": [
3277− "record",
3278− "strings",
3279− "typelevel-prelude"
3280− ],
3281− "repo": "https://github.com/kcsongor/purescript-record-format.git",
3282− "version": "v2.0.0"
3283− },
3284− "redis-client": {
3285− "dependencies": [
3286− "aff",
3287− "arrays",
3288− "bytestrings",
3289− "console",
3290− "effect",
3291− "either",
3292− "int-53",
3293− "maybe",
3294− "nullable",
3295− "prelude",
3296− "psci-support",
3297− "test-unit",
3298− "transformers"
3299− ],
3300− "repo": "https://github.com/paluh/purescript-redis-client.git",
3301− "version": "v1.0.1"
3302− },
3303− "redis-hotqueue": {
3304− "dependencies": [
3305− "console",
3306− "debug",
3307− "effect",
3308− "prelude",
3309− "psci-support",
3310− "redis-client",
3311− "simple-json",
3312− "sunde"
3313− ],
3314− "repo": "https://github.com/paluh/purescript-redis-hotqueue.git",
3315− "version": "v0.2.1"
3316− },
3317− "redux-devtools": {
3318− "dependencies": [
3319− "effect",
3320− "foreign",
3321− "nullable",
3322− "prelude"
3323− ],
3324− "repo": "https://github.com/justinwoo/purescript-redux-devtools.git",
3325− "version": "v0.1.0"
3326− },
3327− "refined": {
3328− "dependencies": [
3329− "argonaut",
3330− "effect",
3331− "generics-rep",
3332− "prelude",
3333− "quickcheck",
3334− "typelevel"
3335− ],
3336− "repo": "https://github.com/danieljharvey/purescript-refined.git",
3337− "version": "v1.0.0"
3338− },
3339− "refs": {
3340− "dependencies": [
3341− "effect",
3342− "prelude"
3343− ],
3344− "repo": "https://github.com/purescript/purescript-refs.git",
3345− "version": "v4.1.0"
3346− },
3347− "remotedata": {
3348− "dependencies": [
3349− "bifunctors",
3350− "either",
3351− "generics-rep",
3352− "profunctor-lenses"
3353− ],
3354− "repo": "https://github.com/krisajenkins/purescript-remotedata.git",
3355− "version": "v4.2.0"
3356− },
3357− "result": {
3358− "dependencies": [
3359− "either",
3360− "foldable-traversable",
3361− "prelude"
3362− ],
3363− "repo": "https://github.com/ad-si/purescript-result.git",
3364− "version": "v1.0.3"
3365− },
3366− "ring-modules": {
3367− "dependencies": [
3368− "prelude"
3369− ],
3370− "repo": "https://github.com/f-o-a-m/purescript-ring-modules.git",
3371− "version": "v5.0.1"
3372− },
3373− "routing": {
3374− "dependencies": [
3375− "aff",
3376− "console",
3377− "control",
3378− "effect",
3379− "either",
3380− "foldable-traversable",
3381− "globals",
3382− "integers",
3383− "lists",
3384− "maybe",
3385− "prelude",
3386− "semirings",
3387− "tuples",
3388− "validation",
3389− "web-html"
3390− ],
3391− "repo": "https://github.com/slamdata/purescript-routing.git",
3392− "version": "v9.0.1"
3393− },
3394− "routing-duplex": {
3395− "dependencies": [
3396− "arrays",
3397− "control",
3398− "either",
3399− "generics-rep",
3400− "globals",
3401− "lazy",
3402− "prelude",
3403− "profunctor",
3404− "record",
3405− "strings",
3406− "typelevel-prelude"
3407− ],
3408− "repo": "https://github.com/natefaubion/purescript-routing-duplex.git",
3409− "version": "v0.4.1"
3410− },
3411− "row-extra": {
3412− "dependencies": [],
3413− "repo": "https://github.com/athanclark/purescript-row-extra.git",
3414− "version": "v0.0.1"
3415− },
3416− "run": {
3417− "dependencies": [
3418− "aff",
3419− "effect",
3420− "either",
3421− "free",
3422− "maybe",
3423− "newtype",
3424− "prelude",
3425− "profunctor",
3426− "tailrec",
3427− "tuples",
3428− "type-equality",
3429− "unsafe-coerce",
3430− "variant"
3431− ],
3432− "repo": "https://github.com/natefaubion/purescript-run.git",
3433− "version": "v3.0.1"
3434− },
3435− "run-halogen": {
3436− "dependencies": [
3437− "effect",
3438− "console",
3439− "psci-support",
3440− "halogen",
3441− "run"
3442− ],
3443− "repo": "https://github.com/sigilion/purescript-run-halogen.git",
3444− "version": "v0.1.0"
3445− },
3446− "run-profunctor-lenses": {
3447− "dependencies": [
3448− "effect",
3449− "console",
3450− "psci-support",
3451− "run",
3452− "profunctor-lenses"
3453− ],
3454− "repo": "https://github.com/sigilion/purescript-run-profunctor-lenses.git",
3455− "version": "v0.1.0"
3456− },
3457− "run-streaming": {
3458− "dependencies": [
3459− "prelude",
3460− "run"
3461− ],
3462− "repo": "https://github.com/natefaubion/purescript-run-streaming.git",
3463− "version": "v2.0.0"
3464− },
3465− "safely": {
3466− "dependencies": [
3467− "freet",
3468− "lists"
3469− ],
3470− "repo": "https://github.com/paf31/purescript-safely.git",
3471− "version": "v4.0.1"
3472− },
3473− "scrypt": {
3474− "dependencies": [
3475− "aff",
3476− "arraybuffer-types"
3477− ],
3478− "repo": "https://github.com/athanclark/purescript-scrypt.git",
3479− "version": "v1.0.1"
3480− },
3481− "search-trie": {
3482− "dependencies": [
3483− "prelude",
3484− "arrays",
3485− "ordered-collections",
3486− "lists",
3487− "foldable-traversable",
3488− "bifunctors"
3489− ],
3490− "repo": "https://github.com/klntsky/purescript-search-trie.git",
3491− "version": "v1.0.0"
3492− },
3493− "selection-foldable": {
3494− "dependencies": [
3495− "filterable",
3496− "foldable-traversable",
3497− "maybe",
3498− "prelude"
3499− ],
3500− "repo": "https://github.com/jamieyung/purescript-selection-foldable.git",
3501− "version": "v0.2.0"
3502− },
3503− "selective": {
3504− "dependencies": [
3505− "generics-rep",
3506− "validation",
3507− "psci-support",
3508− "effect",
3509− "either",
3510− "prelude"
3511− ],
3512− "repo": "https://github.com/anttih/purescript-selective.git",
3513− "version": "v0.1.1"
3514− },
3515− "semirings": {
3516− "dependencies": [
3517− "foldable-traversable",
3518− "lists",
3519− "newtype",
3520− "prelude"
3521− ],
3522− "repo": "https://github.com/purescript/purescript-semirings.git",
3523− "version": "v5.0.0"
3524− },
3525− "server-sent-events": {
3526− "dependencies": [
3527− "effect",
3528− "functions",
3529− "generics-rep",
3530− "maybe",
3531− "prelude",
3532− "web-events"
3533− ],
3534− "repo": "https://github.com/MichaelXavier/purescript-server-sent-events.git",
3535− "version": "v0.2.0"
3536− },
3537− "setimmediate": {
3538− "dependencies": [
3539− "effect",
3540− "functions"
3541− ],
3542− "repo": "https://github.com/athanclark/purescript-setimmediate.git",
3543− "version": "v1.0.2"
3544− },
3545− "shoronpo": {
3546− "dependencies": [
3547− "prelude",
3548− "record-format"
3549− ],
3550− "repo": "https://github.com/justinwoo/purescript-shoronpo.git",
3551− "version": "v0.3.0"
3552− },
3553− "signal": {
3554− "dependencies": [
3555− "aff",
3556− "foldable-traversable",
3557− "js-timers",
3558− "maybe",
3559− "prelude"
3560− ],
3561− "repo": "https://github.com/bodil/purescript-signal.git",
3562− "version": "v10.1.0"
3563− },
3564− "sijidou": {
3565− "dependencies": [
3566− "prelude",
3567− "record",
3568− "typelevel-prelude"
3569− ],
3570− "repo": "https://github.com/justinwoo/purescript-sijidou.git",
3571− "version": "v1.0.0"
3572− },
3573− "simple-ajax": {
3574− "dependencies": [
3575− "prelude",
3576− "simple-json",
3577− "affjax"
3578− ],
3579− "repo": "https://github.com/dariooddenino/purescript-simple-ajax.git",
3580− "version": "v2.0.0"
3581− },
3582− "simple-emitter": {
3583− "dependencies": [
3584− "ordered-collections",
3585− "refs"
3586− ],
3587− "repo": "https://github.com/oreshinya/purescript-simple-emitter.git",
3588− "version": "v1.0.0"
3589− },
3590− "simple-i18n": {
3591− "dependencies": [
3592− "record-extra",
3593− "foreign-object"
3594− ],
3595− "repo": "https://github.com/oreshinya/purescript-simple-i18n.git",
3596− "version": "v0.1.2"
3597− },
3598− "simple-json": {
3599− "dependencies": [
3600− "arrays",
3601− "exceptions",
3602− "foreign",
3603− "foreign-object",
3604− "globals",
3605− "nullable",
3606− "prelude",
3607− "record",
3608− "typelevel-prelude",
3609− "variant"
3610− ],
3611− "repo": "https://github.com/justinwoo/purescript-simple-json.git",
3612− "version": "v7.0.0"
3613− },
3614− "simple-json-generics": {
3615− "dependencies": [
3616− "generics-rep",
3617− "simple-json"
3618− ],
3619− "repo": "https://github.com/justinwoo/purescript-simple-json-generics.git",
3620− "version": "v0.1.0"
3621− },
3622− "simple-json-utils": {
3623− "dependencies": [
3624− "motsunabe",
3625− "simple-json"
3626− ],
3627− "repo": "https://github.com/justinwoo/purescript-simple-json-utils.git",
3628− "version": "v0.1.0"
3629− },
3630− "simple-jwt": {
3631− "dependencies": [
3632− "crypto",
3633− "simple-json",
3634− "strings"
3635− ],
3636− "repo": "https://github.com/oreshinya/purescript-simple-jwt.git",
3637− "version": "v2.0.0"
3638− },
3639− "simple-timestamp": {
3640− "dependencies": [
3641− "console",
3642− "datetime",
3643− "effect",
3644− "foreign",
3645− "formatters",
3646− "prelude",
3647− "psci-support",
3648− "simple-json",
3649− "spec"
3650− ],
3651− "repo": "https://github.com/reactormonk/purescript-simple-timestamp.git",
3652− "version": "v3.0.0"
3653− },
3654− "sized-matrices": {
3655− "dependencies": [
3656− "sized-vectors",
3657− "prelude",
3658− "foldable-traversable",
3659− "maybe",
3660− "arrays",
3661− "unfoldable",
3662− "typelevel",
3663− "distributive",
3664− "vectorfield",
3665− "strings"
3666− ],
3667− "repo": "https://github.com/csicar/purescript-sized-matrices",
3668− "version": "v1.0.0"
3669− },
3670− "sized-vectors": {
3671− "dependencies": [
3672− "argonaut",
3673− "arrays",
3674− "distributive",
3675− "foldable-traversable",
3676− "maybe",
3677− "prelude",
3678− "quickcheck",
3679− "typelevel",
3680− "unfoldable"
3681− ],
3682− "repo": "https://github.com/bodil/purescript-sized-vectors.git",
3683− "version": "v5.0.1"
3684− },
3685− "sjcl": {
3686− "dependencies": [
3687− "arraybuffer-types",
3688− "exceptions",
3689− "nullable",
3690− "sized-vectors",
3691− "tuples-native"
3692− ],
3693− "repo": "https://github.com/athanclark/purescript-sjcl.git",
3694− "version": "v0.0.1"
3695− },
3696− "slug": {
3697− "dependencies": [
3698− "prelude",
3699− "maybe",
3700− "strings",
3701− "unicode",
3702− "generics-rep",
3703− "argonaut-codecs"
3704− ],
3705− "repo": "https://github.com/thomashoneyman/purescript-slug.git",
3706− "version": "v2.0.0"
3707− },
3708− "smolder": {
3709− "dependencies": [
3710− "bifunctors",
3711− "catenable-lists",
3712− "free",
3713− "globals",
3714− "ordered-collections",
3715− "strings",
3716− "transformers",
3717− "tuples"
3718− ],
3719− "repo": "https://github.com/bodil/purescript-smolder.git",
3720− "version": "v12.3.0"
3721− },
3722− "snabbdom": {
3723− "dependencies": [
3724− "ordered-collections",
3725− "prelude",
3726− "web-dom",
3727− "web-html"
3728− ],
3729− "repo": "https://github.com/LukaJCB/purescript-snabbdom.git",
3730− "version": "v1.0.1"
3731− },
3732− "sodium": {
3733− "dependencies": [
3734− "aff",
3735− "nullable",
3736− "numbers",
3737− "quickcheck-laws",
3738− "test-unit"
3739− ],
3740− "repo": "https://github.com/SodiumFRP/purescript-sodium.git",
3741− "version": "v2.1.0"
3742− },
3743− "sparse-matrices": {
3744− "dependencies": [
3745− "prelude",
3746− "console",
3747− "effect",
3748− "sparse-polynomials"
3749− ],
3750− "repo": "https://github.com/Ebmtranceboy/purescript-sparse-matrices.git",
3751− "version": "v1.1.0"
3752− },
3753− "sparse-polynomials": {
3754− "dependencies": [
3755− "prelude",
3756− "console",
3757− "effect",
3758− "ordered-collections",
3759− "tuples",
3760− "rationals",
3761− "cartesian"
3762− ],
3763− "repo": "https://github.com/Ebmtranceboy/purescript-sparse-polynomials.git",
3764− "version": "v1.0.3"
3765− },
3766− "spec": {
3767− "dependencies": [
3768− "aff",
3769− "ansi",
3770− "avar",
3771− "console",
3772− "exceptions",
3773− "foldable-traversable",
3774− "fork",
3775− "generics-rep",
3776− "now",
3777− "pipes",
3778− "prelude",
3779− "strings",
3780− "transformers"
3781− ],
3782− "repo": "https://github.com/purescript-spec/purescript-spec.git",
3783− "version": "v4.0.1"
3784− },
3785− "spec-discovery": {
3786− "dependencies": [
3787− "arrays",
3788− "effect",
3789− "node-fs",
3790− "prelude",
3791− "spec"
3792− ],
3793− "repo": "https://github.com/owickstrom/purescript-spec-discovery.git",
3794− "version": "v4.0.0"
3795− },
3796− "spec-quickcheck": {
3797− "dependencies": [
3798− "aff",
3799− "prelude",
3800− "quickcheck",
3801− "random",
3802− "spec"
3803− ],
3804− "repo": "https://github.com/owickstrom/purescript-spec-quickcheck.git",
3805− "version": "v3.1.0"
3806− },
3807− "spork": {
3808− "dependencies": [
3809− "prelude",
3810− "console",
3811− "tailrec",
3812− "arrays",
3813− "refs",
3814− "foldable-traversable",
3815− "maybe",
3816− "aff",
3817− "halogen-vdom",
3818− "dom-indexed",
3819− "unsafe-reference",
3820− "web-dom",
3821− "web-html",
3822− "web-events",
3823− "web-uievents",
3824− "effect",
3825− "foreign",
3826− "ordered-collections"
3827− ],
3828− "repo": "https://github.com/natefaubion/purescript-spork.git",
3829− "version": "v1.0.0"
3830− },
3831− "st": {
3832− "dependencies": [
3833− "partial",
3834− "prelude",
3835− "tailrec",
3836− "unsafe-coerce"
3837− ],
3838− "repo": "https://github.com/purescript/purescript-st.git",
3839− "version": "v4.1.1"
3840− },
3841− "string-parsers": {
3842− "dependencies": [
3843− "arrays",
3844− "bifunctors",
3845− "control",
3846− "either",
3847− "foldable-traversable",
3848− "lists",
3849− "maybe",
3850− "prelude",
3851− "strings",
3852− "tailrec"
3853− ],
3854− "repo": "https://github.com/paf31/purescript-string-parsers.git",
3855− "version": "v5.0.1"
3856− },
3857− "strings": {
3858− "dependencies": [
3859− "arrays",
3860− "control",
3861− "either",
3862− "enums",
3863− "foldable-traversable",
3864− "gen",
3865− "integers",
3866− "maybe",
3867− "newtype",
3868− "nonempty",
3869− "partial",
3870− "prelude",
3871− "tailrec",
3872− "tuples",
3873− "unfoldable",
3874− "unsafe-coerce"
3875− ],
3876− "repo": "https://github.com/purescript/purescript-strings.git",
3877− "version": "v4.0.2"
3878− },
3879− "strings-extra": {
3880− "dependencies": [
3881− "arrays",
3882− "either",
3883− "foldable-traversable",
3884− "maybe",
3885− "partial",
3886− "prelude",
3887− "strings",
3888− "unicode"
3889− ],
3890− "repo": "https://github.com/purescript-contrib/purescript-strings-extra.git",
3891− "version": "v2.1.0"
3892− },
3893− "stringutils": {
3894− "dependencies": [
3895− "arrays",
3896− "either",
3897− "integers",
3898− "maybe",
3899− "partial",
3900− "prelude",
3901− "strings"
3902− ],
3903− "repo": "https://github.com/menelaos/purescript-stringutils.git",
3904− "version": "v0.0.10"
3905− },
3906− "struct": {
3907− "dependencies": [
3908− "argonaut",
3909− "argonaut-codecs",
3910− "effect",
3911− "proxying",
3912− "record",
3913− "record-extra",
3914− "subcategory",
3915− "variant"
3916− ],
3917− "repo": "https://github.com/matthew-hilty/purescript-struct.git",
3918− "version": "v1.1.0"
3919− },
3920− "stylesheet": {
3921− "dependencies": [
3922− "effect",
3923− "foreign",
3924− "generics-rep",
3925− "ordered-collections",
3926− "prelude",
3927− "refs",
3928− "unordered-collections",
3929− "cssom"
3930− ],
3931− "repo": "https://github.com/danieljharvey/purescript-stylesheet.git",
3932− "version": "v0.0.3"
3933− },
3934− "subcategory": {
3935− "dependencies": [
3936− "prelude",
3937− "profunctor",
3938− "record",
3939− "proxy",
3940− "typelevel-prelude"
3941− ],
3942− "repo": "https://github.com/matthew-hilty/purescript-subcategory.git",
3943− "version": "v0.2.0"
3944− },
3945− "subtlecrypto": {
3946− "dependencies": [
3947− "aff",
3948− "arraybuffer-types",
3949− "foreign",
3950− "promises"
3951− ],
3952− "repo": "https://github.com/athanclark/purescript-subtlecrypto.git",
3953− "version": "v0.0.1"
3954− },
3955− "suggest": {
3956− "dependencies": [
3957− "console",
3958− "node-buffer",
3959− "node-fs",
3960− "node-process",
3961− "node-streams",
3962− "psa-utils",
3963− "refs"
3964− ],
3965− "repo": "https://github.com/nwolverson/purescript-suggest.git",
3966− "version": "v5.0.0"
3967− },
3968− "sunde": {
3969− "dependencies": [
3970− "aff",
3971− "effect",
3972− "node-child-process",
3973− "prelude"
3974− ],
3975− "repo": "https://github.com/justinwoo/purescript-sunde.git",
3976− "version": "v2.0.0"
3977− },
3978− "svg-parser": {
3979− "dependencies": [
3980− "generics-rep",
3981− "prelude",
3982− "string-parsers"
3983− ],
3984− "repo": "https://github.com/rnons/purescript-svg-parser.git",
3985− "version": "v1.0.0"
3986− },
3987− "svg-parser-halogen": {
3988− "dependencies": [
3989− "halogen",
3990− "prelude",
3991− "svg-parser"
3992− ],
3993− "repo": "https://github.com/rnons/purescript-svg-parser-halogen.git",
3994− "version": "v2.0.0-rc.1"
3995− },
3996− "systemd-journald": {
3997− "dependencies": [
3998− "console",
3999− "functions",
4000− "prelude"
4001− ],
4002− "repo": "https://github.com/paluh/purescript-systemd-journald.git",
4003− "version": "v0.2.1"
4004− },
4005− "tailrec": {
4006− "dependencies": [
4007− "bifunctors",
4008− "effect",
4009− "either",
4010− "identity",
4011− "maybe",
4012− "partial",
4013− "prelude",
4014− "refs"
4015− ],
4016− "repo": "https://github.com/purescript/purescript-tailrec.git",
4017− "version": "v4.1.1"
4018− },
4019− "test-unit": {
4020− "dependencies": [
4021− "aff",
4022− "avar",
4023− "effect",
4024− "either",
4025− "free",
4026− "js-timers",
4027− "lists",
4028− "prelude",
4029− "quickcheck",
4030− "strings"
4031− ],
4032− "repo": "https://github.com/bodil/purescript-test-unit.git",
4033− "version": "v15.0.0"
4034− },
4035− "text-encoding": {
4036− "dependencies": [
4037− "arraybuffer-types",
4038− "either",
4039− "exceptions",
4040− "functions",
4041− "strings"
4042− ],
4043− "repo": "https://github.com/AlexaDeWit/purescript-text-encoding.git",
4044− "version": "v1.0.0"
4045− },
4046− "thermite": {
4047− "dependencies": [
4048− "aff",
4049− "coroutines",
4050− "freet",
4051− "profunctor-lenses",
4052− "react"
4053− ],
4054− "repo": "https://github.com/paf31/purescript-thermite.git",
4055− "version": "v6.3.1"
4056− },
4057− "thermite-dom": {
4058− "dependencies": [
4059− "thermite",
4060− "react",
4061− "react-dom",
4062− "web-html"
4063− ],
4064− "repo": "https://github.com/athanclark/purescript-thermite-dom.git",
4065− "version": "v0.3.1"
4066− },
4067− "these": {
4068− "dependencies": [
4069− "gen",
4070− "tuples"
4071− ],
4072− "repo": "https://github.com/purescript-contrib/purescript-these.git",
4073− "version": "v4.0.0"
4074− },
4075− "tolerant-argonaut": {
4076− "dependencies": [
4077− "argonaut-codecs",
4078− "argonaut-core",
4079− "arrays",
4080− "effect",
4081− "higher-order",
4082− "lists",
4083− "record",
4084− "struct",
4085− "typelevel-prelude"
4086− ],
4087− "repo": "https://github.com/matthew-hilty/purescript-tolerant-argonaut.git",
4088− "version": "v2.0.0"
4089− },
4090− "toppokki": {
4091− "dependencies": [
4092− "aff-promise",
4093− "functions",
4094− "node-buffer",
4095− "node-http",
4096− "prelude",
4097− "record"
4098− ],
4099− "repo": "https://github.com/justinwoo/purescript-toppokki.git",
4100− "version": "v2.4.0"
4101− },
4102− "tortellini": {
4103− "dependencies": [
4104− "foreign-object",
4105− "integers",
4106− "lists",
4107− "motsunabe",
4108− "numbers",
4109− "prelude",
4110− "record",
4111− "string-parsers",
4112− "strings",
4113− "transformers",
4114− "typelevel-prelude"
4115− ],
4116− "repo": "https://github.com/justinwoo/purescript-tortellini.git",
4117− "version": "v5.1.0"
4118− },
4119− "transformers": {
4120− "dependencies": [
4121− "control",
4122− "distributive",
4123− "effect",
4124− "either",
4125− "exceptions",
4126− "foldable-traversable",
4127− "identity",
4128− "lazy",
4129− "maybe",
4130− "newtype",
4131− "prelude",
4132− "tailrec",
4133− "tuples",
4134− "unfoldable"
4135− ],
4136− "repo": "https://github.com/purescript/purescript-transformers.git",
4137− "version": "v4.2.0"
4138− },
4139− "tree-rose": {
4140− "dependencies": [
4141− "prelude",
4142− "lists",
4143− "free"
4144− ],
4145− "repo": "https://github.com/jordanmartinez/purescript-tree-rose.git",
4146− "version": "v2.0.0"
4147− },
4148− "trout": {
4149− "dependencies": [
4150− "argonaut",
4151− "media-types",
4152− "prelude",
4153− "smolder",
4154− "uri"
4155− ],
4156− "repo": "https://github.com/purescript-hyper/purescript-trout.git",
4157− "version": "v0.12.3"
4158− },
4159− "trout-client": {
4160− "dependencies": [
4161− "affjax",
4162− "argonaut-generic",
4163− "prelude",
4164− "trout"
4165− ],
4166− "repo": "https://github.com/purescript-hyper/purescript-trout-client.git",
4167− "version": "v0.13.0"
4168− },
4169− "tuples": {
4170− "dependencies": [
4171− "bifunctors",
4172− "control",
4173− "distributive",
4174− "foldable-traversable",
4175− "invariant",
4176− "maybe",
4177− "newtype",
4178− "prelude",
4179− "type-equality"
4180− ],
4181− "repo": "https://github.com/purescript/purescript-tuples.git",
4182− "version": "v5.1.0"
4183− },
4184− "tuples-native": {
4185− "dependencies": [
4186− "generics-rep",
4187− "typelevel",
4188− "unsafe-coerce"
4189− ],
4190− "repo": "https://github.com/athanclark/purescript-tuples-native.git",
4191− "version": "v2.1.0"
4192− },
4193− "type-equality": {
4194− "dependencies": [],
4195− "repo": "https://github.com/purescript/purescript-type-equality.git",
4196− "version": "v3.0.0"
4197− },
4198− "type-isequal": {
4199− "dependencies": [
4200− "typelevel-prelude"
4201− ],
4202− "repo": "https://github.com/justinwoo/purescript-type-isequal.git",
4203− "version": "v0.1.0"
4204− },
4205− "typedenv": {
4206− "dependencies": [
4207− "foreign-object",
4208− "generics-rep",
4209− "integers",
4210− "numbers",
4211− "record",
4212− "strings",
4213− "typelevel-prelude"
4214− ],
4215− "repo": "https://github.com/nsaunders/purescript-typedenv.git",
4216− "version": "v0.0.1"
4217− },
4218− "typelevel": {
4219− "dependencies": [
4220− "partial",
4221− "prelude",
4222− "tuples",
4223− "typelevel-prelude",
4224− "unsafe-coerce"
4225− ],
4226− "repo": "https://github.com/bodil/purescript-typelevel.git",
4227− "version": "v6.0.0"
4228− },
4229− "typelevel-peano": {
4230− "dependencies": [
4231− "unsafe-coerce",
4232− "arrays",
4233− "console",
4234− "effect",
4235− "typelevel-prelude",
4236− "prelude",
4237− "psci-support"
4238− ],
4239− "repo": "https://github.com/csicar/purescript-typelevel-peano.git",
4240− "version": "v0.1.8"
4241− },
4242− "typelevel-prelude": {
4243− "dependencies": [
4244− "prelude",
4245− "proxy",
4246− "type-equality"
4247− ],
4248− "repo": "https://github.com/purescript/purescript-typelevel-prelude.git",
4249− "version": "v5.0.2"
4250− },
4251− "typelevel-rowlist-limits": {
4252− "dependencies": [
4253− "typelevel-peano"
4254− ],
4255− "repo": "https://github.com/mwalkerwells/purescript-typelevel-rowlist-limits.git",
4256− "version": "v0.0.6"
4257− },
4258− "uint": {
4259− "dependencies": [
4260− "generics-rep",
4261− "math",
4262− "maybe",
4263− "quickcheck"
4264− ],
4265− "repo": "https://github.com/zaquest/purescript-uint.git",
4266− "version": "v5.1.4"
4267− },
4268− "uint-instances": {
4269− "dependencies": [
4270− "uint",
4271− "unordered-collections",
4272− "argonaut",
4273− "quickcheck"
4274− ],
4275− "repo": "https://github.com/athanclark/purescript-uint-instances.git",
4276− "version": "v0.0.2"
4277− },
4278− "undefinable": {
4279− "dependencies": [
4280− "functions",
4281− "maybe"
4282− ],
4283− "repo": "https://github.com/ethul/purescript-undefinable.git",
4284− "version": "v4.0.0"
4285− },
4286− "undefined": {
4287− "dependencies": [],
4288− "repo": "https://github.com/bklaric/purescript-undefined.git",
4289− "version": "v1.0.2"
4290− },
4291− "undefined-or": {
4292− "dependencies": [
4293− "maybe"
4294− ],
4295− "repo": "https://github.com/d86leader/purescript-undefined-or.git",
4296− "version": "v1.0.1"
4297− },
4298− "unfoldable": {
4299− "dependencies": [
4300− "foldable-traversable",
4301− "maybe",
4302− "partial",
4303− "prelude",
4304− "tuples"
4305− ],
4306− "repo": "https://github.com/purescript/purescript-unfoldable.git",
4307− "version": "v4.1.0"
4308− },
4309− "unicode": {
4310− "dependencies": [
4311− "foldable-traversable",
4312− "maybe",
4313− "strings"
4314− ],
4315− "repo": "https://github.com/purescript-contrib/purescript-unicode.git",
4316− "version": "v4.0.1"
4317− },
4318− "unordered-collections": {
4319− "dependencies": [
4320− "enums",
4321− "functions",
4322− "integers",
4323− "lists",
4324− "prelude",
4325− "record",
4326− "tuples",
4327− "typelevel-prelude"
4328− ],
4329− "repo": "https://github.com/fehrenbach/purescript-unordered-collections.git",
4330− "version": "v1.8.3"
4331− },
4332− "unorm": {
4333− "dependencies": [],
4334− "repo": "https://github.com/athanclark/purescript-unorm.git",
4335− "version": "v1.0.1"
4336− },
4337− "unsafe-coerce": {
4338− "dependencies": [],
4339− "repo": "https://github.com/purescript/purescript-unsafe-coerce.git",
4340− "version": "v4.0.0"
4341− },
4342− "unsafe-reference": {
4343− "dependencies": [],
4344− "repo": "https://github.com/purescript-contrib/purescript-unsafe-reference.git",
4345− "version": "v3.0.1"
4346− },
4347− "uri": {
4348− "dependencies": [
4349− "arrays",
4350− "generics-rep",
4351− "globals",
4352− "integers",
4353− "parsing",
4354− "profunctor-lenses",
4355− "quickcheck",
4356− "spec",
4357− "unfoldable",
4358− "these"
4359− ],
4360− "repo": "https://github.com/slamdata/purescript-uri.git",
4361− "version": "v7.0.0"
4362− },
4363− "uuid": {
4364− "dependencies": [
4365− "effect",
4366− "maybe",
4367− "foreign-generic",
4368− "console",
4369− "spec"
4370− ],
4371− "repo": "https://github.com/spicydonuts/purescript-uuid.git",
4372− "version": "v6.1.0"
4373− },
4374− "validated-molecule": {
4375− "dependencies": [
4376− "arrays",
4377− "console",
4378− "effect",
4379− "lists",
4380− "psci-support"
4381− ],
4382− "repo": "https://github.com/lukasturcani/validated-molecule.git",
4383− "version": "v1.0.5"
4384− },
4385− "validation": {
4386− "dependencies": [
4387− "bifunctors",
4388− "control",
4389− "either",
4390− "foldable-traversable",
4391− "newtype",
4392− "prelude"
4393− ],
4394− "repo": "https://github.com/purescript/purescript-validation.git",
4395− "version": "v4.2.0"
4396− },
4397− "variant": {
4398− "dependencies": [
4399− "enums",
4400− "lists",
4401− "maybe",
4402− "partial",
4403− "prelude",
4404− "proxy",
4405− "record",
4406− "tuples",
4407− "unsafe-coerce"
4408− ],
4409− "repo": "https://github.com/natefaubion/purescript-variant.git",
4410− "version": "v6.0.1"
4411− },
4412− "vectorfield": {
4413− "dependencies": [
4414− "console",
4415− "effect",
4416− "group",
4417− "prelude",
4418− "psci-support"
4419− ],
4420− "repo": "https://github.com/csicar/purescript-vectorfield.git",
4421− "version": "v1.0.1"
4422− },
4423− "web-clipboard": {
4424− "dependencies": [
4425− "web-html"
4426− ],
4427− "repo": "https://github.com/purescript-web/purescript-web-clipboard.git",
4428− "version": "v2.0.0"
4429− },
4430− "web-dom": {
4431− "dependencies": [
4432− "web-events"
4433− ],
4434− "repo": "https://github.com/purescript-web/purescript-web-dom.git",
4435− "version": "v4.1.0"
4436− },
4437− "web-events": {
4438− "dependencies": [
4439− "datetime",
4440− "enums",
4441− "nullable"
4442− ],
4443− "repo": "https://github.com/purescript-web/purescript-web-events.git",
4444− "version": "v2.0.1"
4445− },
4446− "web-file": {
4447− "dependencies": [
4448− "foreign",
4449− "media-types",
4450− "web-dom"
4451− ],
4452− "repo": "https://github.com/purescript-web/purescript-web-file.git",
4453− "version": "v2.3.0"
4454− },
4455− "web-html": {
4456− "dependencies": [
4457− "js-date",
4458− "web-dom",
4459− "web-file",
4460− "web-storage"
4461− ],
4462− "repo": "https://github.com/purescript-web/purescript-web-html.git",
4463− "version": "v2.3.0"
4464− },
4465− "web-socket": {
4466− "dependencies": [
4467− "arraybuffer-types",
4468− "web-file"
4469− ],
4470− "repo": "https://github.com/purescript-web/purescript-web-socket.git",
4471− "version": "v2.0.0"
4472− },
4473− "web-storage": {
4474− "dependencies": [
4475− "nullable",
4476− "web-events"
4477− ],
4478− "repo": "https://github.com/purescript-web/purescript-web-storage.git",
4479− "version": "v3.0.0"
4480− },
4481− "web-touchevents": {
4482− "dependencies": [
4483− "web-uievents"
4484− ],
4485− "repo": "https://github.com/purescript-web/purescript-web-touchevents.git",
4486− "version": "v2.0.0"
4487− },
4488− "web-uievents": {
4489− "dependencies": [
4490− "web-html"
4491− ],
4492− "repo": "https://github.com/purescript-web/purescript-web-uievents.git",
4493− "version": "v2.0.0"
4494− },
4495− "web-url": {
4496− "dependencies": [
4497− "maybe",
4498− "partial",
4499− "prelude",
4500− "psci-support",
4501− "spec",
4502− "tuples"
4503− ],
4504− "repo": "https://github.com/mjepronk/purescript-web-url.git",
4505− "version": "v1.0.2"
4506− },
4507− "web-xhr": {
4508− "dependencies": [
4509− "arraybuffer-types",
4510− "datetime",
4511− "http-methods",
4512− "web-dom",
4513− "web-file"
4514− ],
4515− "repo": "https://github.com/purescript-web/purescript-web-xhr.git",
4516− "version": "v3.0.2"
4517− },
4518− "websocket-moderate": {
4519− "dependencies": [
4520− "argonaut",
4521− "arraybuffer",
4522− "exceptions",
4523− "monad-control",
4524− "nullable",
4525− "text-encoding",
4526− "web-file"
4527− ],
4528− "repo": "https://github.com/athanclark/purescript-websocket-moderate.git",
4529− "version": "v7.0.2"
4530− },
4531− "xiaomian": {
4532− "dependencies": [
4533− "naporitan"
4534− ],
4535− "repo": "https://github.com/justinwoo/purescript-xiaomian.git",
4536− "version": "v0.1.0"
4537− },
4538− "yargs": {
4539− "dependencies": [
4540− "console",
4541− "either",
4542− "exceptions",
4543− "foreign",
4544− "unsafe-coerce"
4545− ],
4546− "repo": "https://github.com/paf31/purescript-yargs.git",
4547− "version": "v4.0.0"
4548− },
4549− "z85": {
4550− "dependencies": [
4551− "arraybuffer",
4552− "sized-vectors",
4553− "numbers",
4554− "stringutils"
4555− ],
4556− "repo": "https://github.com/athanclark/purescript-z85.git",
4557− "version": "v0.0.2"
4558− },
4559− "zeta": {
4560− "dependencies": [
4561− "refs",
4562− "aff",
4563− "foreign-object",
4564− "arrays"
4565− ],
4566− "repo": "https://github.com/athanclark/purescript-zeta.git",
4567− "version": "v6.0.0"
4568− },
4569− "zeta-extra": {
4570− "dependencies": [
4571− "js-timers",
4572− "web-html",
4573− "zeta"
4574− ],
4575− "repo": "https://github.com/athanclark/purescript-zeta-extra.git",
4576− "version": "v0.0.1"
4577− }
4578−}
plugin/README.mdnew file+79
@@ -0,0 +1,79 @@
1+
2+# PureScript plugin for Protoc
3+
4+## Build
5+
6+```shell
7+cd plugin
8+```
9+
10+```shell
11+spago build
12+```
13+
14+## Bundle and Run
15+
16+Bundle the plugin.
17+
18+```shell
19+spago bundle --platform node --minify --bundle-type app --outfile protoc-gen-purescript.mjs
20+```
21+
22+Run the plugin.
23+
24+```shell
25+protoc --plugin=protoc-gen-purescript=./protoc-gen-purescript.mjs --purescript_out=. google/protobuf/timestamp.proto
26+```
27+
28+## Unit Tests
29+
30+To test purescript-protobuf, run `nix develop` from the top level directory
31+of the repo, then `cd plugin` and generate the test messages:
32+
33+```shell
34+protoc --purescript_out=./test/Test/generated --proto_path=./test ./test/*.proto
35+```
36+
37+Or, to generate messages with the bundled plugin, not the Nix store plugin:
38+
39+```shell
40+protoc --plugin=protoc-gen-purescript=./protoc-gen-purescript.mjs --purescript_out=./test/Test/generated --proto_path=./test ./test/*.proto
41+```
42+
43+then
44+
45+```shell
46+spago test
47+```
48+
49+## Benchmarks
50+
51+To run the benchmarks, run `nix develop` from the top level directory, then:
52+
53+```shell
54+cd plugin
55+```
56+
57+```shell
58+spago test --main Test.Bench
59+```
60+
61+
62+## Development
63+
64+The funny thing about writing a `protoc` compiler plugin codec is that it
65+bootstraps itself. We just have to write enough of the compiler plugin codec
66+that it can handle the `plugin.proto` and `descriptor.proto` files, and
67+then we call the compiler plugin on these `.proto` files and the compiler
68+plugin codec generates the rest of itself.
69+
70+Then we can delete the hand-written code and generate code to replace it
71+with this command.
72+
73+```shell
74+protoc --plugin=protoc-gen-purescript=./protoc-gen-purescript.mjs --purescript_out=./src google/protobuf/compiler/plugin.proto
75+```
76+
77+See
78+* https://protobuf.dev/reference/cpp/api-docs/google.protobuf.compiler.plugin.pb/
79+* https://protobuf.dev/reference/cpp/api-docs/google.protobuf.descriptor.pb
plugin/spago.locknew file+1695
@@ -0,0 +1,1695 @@
1+{
2+ "workspace": {
3+ "packages": {
4+ "plugin": {
5+ "path": "./",
6+ "core": {
7+ "dependencies": [
8+ "aff",
9+ "console",
10+ "node-buffer",
11+ "node-path",
12+ "node-process",
13+ "node-streams",
14+ "protobuf",
15+ "unicode",
16+ "unsafe-coerce"
17+ ],
18+ "build_plan": [
19+ "aff",
20+ "arraybuffer",
21+ "arraybuffer-builder",
22+ "arraybuffer-types",
23+ "arrays",
24+ "bifunctors",
25+ "console",
26+ "const",
27+ "contravariant",
28+ "control",
29+ "datetime",
30+ "distributive",
31+ "effect",
32+ "either",
33+ "enums",
34+ "exceptions",
35+ "exists",
36+ "float32",
37+ "foldable-traversable",
38+ "foreign",
39+ "foreign-object",
40+ "functions",
41+ "functors",
42+ "gen",
43+ "identity",
44+ "int64",
45+ "integers",
46+ "invariant",
47+ "lazy",
48+ "lists",
49+ "maybe",
50+ "newtype",
51+ "node-buffer",
52+ "node-event-emitter",
53+ "node-path",
54+ "node-process",
55+ "node-streams",
56+ "nonempty",
57+ "nullable",
58+ "numbers",
59+ "ordered-collections",
60+ "orders",
61+ "parallel",
62+ "parsing",
63+ "parsing-dataview",
64+ "partial",
65+ "posix-types",
66+ "prelude",
67+ "profunctor",
68+ "protobuf",
69+ "record",
70+ "refs",
71+ "safe-coerce",
72+ "st",
73+ "strings",
74+ "tailrec",
75+ "transformers",
76+ "tuples",
77+ "type-equality",
78+ "typelevel-prelude",
79+ "uint",
80+ "unfoldable",
81+ "unicode",
82+ "unsafe-coerce",
83+ "web-encoding"
84+ ]
85+ },
86+ "test": {
87+ "dependencies": [
88+ "assert",
89+ "console",
90+ "minibench",
91+ "numbers",
92+ "unfoldable"
93+ ],
94+ "build_plan": [
95+ "assert",
96+ "bifunctors",
97+ "console",
98+ "const",
99+ "contravariant",
100+ "control",
101+ "distributive",
102+ "effect",
103+ "either",
104+ "exists",
105+ "foldable-traversable",
106+ "functions",
107+ "functors",
108+ "identity",
109+ "integers",
110+ "invariant",
111+ "maybe",
112+ "minibench",
113+ "newtype",
114+ "numbers",
115+ "orders",
116+ "partial",
117+ "prelude",
118+ "profunctor",
119+ "refs",
120+ "safe-coerce",
121+ "tuples",
122+ "type-equality",
123+ "unfoldable",
124+ "unsafe-coerce"
125+ ]
126+ }
127+ }
128+ },
129+ "package_set": {
130+ "address": {
131+ "registry": "81.1.0"
132+ },
133+ "compiler": ">=0.15.15 <0.16.0",
134+ "content": {
135+ "abc-parser": "2.1.0",
136+ "ace": "9.1.0",
137+ "address-rfc2821": "0.1.1",
138+ "aff": "8.0.0",
139+ "aff-bus": "6.0.0",
140+ "aff-coroutines": "9.0.0",
141+ "aff-promise": "4.0.0",
142+ "aff-retry": "2.0.0",
143+ "affjax": "13.0.0",
144+ "affjax-node": "1.0.0",
145+ "affjax-web": "1.0.0",
146+ "ansi": "7.0.0",
147+ "apexcharts": "0.5.0",
148+ "applicative-phases": "1.0.0",
149+ "argonaut": "9.0.0",
150+ "argonaut-aeson-generic": "0.4.1",
151+ "argonaut-codecs": "9.1.0",
152+ "argonaut-core": "7.0.0",
153+ "argonaut-generic": "8.0.0",
154+ "argonaut-traversals": "10.0.0",
155+ "argparse-basic": "2.0.0",
156+ "array-builder": "0.1.2",
157+ "array-search": "0.6.0",
158+ "arraybuffer": "13.2.0",
159+ "arraybuffer-builder": "3.1.0",
160+ "arraybuffer-types": "3.0.2",
161+ "arrays": "7.3.0",
162+ "arrays-extra": "0.6.2",
163+ "arrays-zipper": "2.0.1",
164+ "ask": "1.0.0",
165+ "assert": "6.0.0",
166+ "assert-multiple": "0.4.0",
167+ "avar": "5.0.1",
168+ "axon": "0.0.3",
169+ "b64": "0.0.9",
170+ "barbies": "1.0.1",
171+ "barlow-lens": "1.0.0",
172+ "baskerville-core": "0.1.3",
173+ "baskerville-mycroft": "0.1.0",
174+ "benchlib": "0.0.4",
175+ "bifunctors": "6.1.0",
176+ "bigints": "7.0.1",
177+ "blessed": "1.0.0",
178+ "bolson": "0.3.9",
179+ "bookhound": "0.1.7",
180+ "bower-json": "3.0.0",
181+ "bytestrings": "9.0.0",
182+ "call-by-name": "4.0.1",
183+ "canvas": "6.0.0",
184+ "canvas-action": "9.0.0",
185+ "cartesian": "1.0.6",
186+ "catenable-lists": "7.0.0",
187+ "cbor-stream": "1.3.0",
188+ "chameleon": "1.0.0",
189+ "chameleon-halogen": "1.0.3",
190+ "chameleon-react-basic": "1.1.0",
191+ "chameleon-styled": "2.5.0",
192+ "chameleon-transformers": "1.0.0",
193+ "channel": "1.0.0",
194+ "chartjs": "0.2.0",
195+ "chartjs-halogen": "0.2.0",
196+ "checked-exceptions": "3.1.1",
197+ "choku": "1.0.2",
198+ "classless": "0.1.1",
199+ "classless-arbitrary": "0.1.1",
200+ "classless-decode-json": "0.1.1",
201+ "classless-encode-json": "0.1.3",
202+ "classnames": "2.0.0",
203+ "codec": "6.1.0",
204+ "codec-argonaut": "10.0.0",
205+ "codec-json": "2.0.0",
206+ "colors": "7.0.1",
207+ "compile-fail": "0.4.0",
208+ "concur-core": "0.5.0",
209+ "concur-react": "0.5.0",
210+ "concurrent-queues": "3.0.0",
211+ "console": "6.1.0",
212+ "const": "6.0.0",
213+ "contravariant": "6.0.0",
214+ "control": "6.0.0",
215+ "convertable-options": "1.0.0",
216+ "coroutines": "7.0.0",
217+ "css": "6.0.0",
218+ "css-class-name-extractor": "0.0.4",
219+ "css-frameworks": "1.1.0",
220+ "csv-stream": "2.3.0",
221+ "currency": "0.1.0",
222+ "data-mvc": "0.0.2",
223+ "datetime": "6.1.0",
224+ "datetime-parsing": "0.2.0",
225+ "debounce": "0.1.2",
226+ "debug": "6.0.2",
227+ "decimals": "7.1.0",
228+ "default-values": "1.0.1",
229+ "deku": "0.9.24",
230+ "deno": "0.0.5",
231+ "dissect": "1.0.0",
232+ "distributive": "6.0.0",
233+ "dodo-printer": "2.2.3",
234+ "dom-filereader": "7.0.0",
235+ "dom-indexed": "13.0.0",
236+ "dom-simple": "0.4.0",
237+ "dotenv": "4.0.3",
238+ "droplet": "0.6.0",
239+ "dts": "1.0.0",
240+ "dual-numbers": "1.0.3",
241+ "dynamic-buffer": "3.0.1",
242+ "echarts-simple": "0.0.1",
243+ "effect": "4.0.0",
244+ "either": "6.1.0",
245+ "elmish": "0.16.0",
246+ "elmish-enzyme": "0.1.1",
247+ "elmish-hooks": "0.12.0",
248+ "elmish-html": "0.14.0",
249+ "elmish-testing-library": "0.5.0",
250+ "email-validate": "7.0.0",
251+ "encoding": "0.0.10",
252+ "enums": "6.0.1",
253+ "env-names": "0.4.0",
254+ "environment": "2.0.0",
255+ "error": "2.0.0",
256+ "eta-conversion": "0.3.2",
257+ "exceptions": "6.1.0",
258+ "exists": "6.0.0",
259+ "exitcodes": "4.0.0",
260+ "expect-inferred": "3.0.0",
261+ "express": "0.9.1",
262+ "ezfetch": "1.1.1",
263+ "fahrtwind": "2.0.0",
264+ "faker-ffi": "0.1.1",
265+ "fakerjs": "0.0.1",
266+ "fallback": "0.1.0",
267+ "fast-vect": "1.2.0",
268+ "fetch": "4.1.0",
269+ "fetch-argonaut": "1.0.1",
270+ "fetch-core": "5.1.0",
271+ "fetch-yoga-json": "1.1.0",
272+ "ffi-simple": "0.5.1",
273+ "fft": "0.3.0",
274+ "fft-js": "0.1.0",
275+ "filterable": "5.0.0",
276+ "fix-functor": "0.1.0",
277+ "fixed-points": "7.0.0",
278+ "fixed-precision": "5.0.0",
279+ "flame": "1.6.0",
280+ "float32": "2.0.0",
281+ "fmt": "0.2.1",
282+ "foldable-traversable": "6.0.0",
283+ "foldable-traversable-extra": "0.0.6",
284+ "foreign": "7.0.0",
285+ "foreign-object": "4.1.0",
286+ "foreign-readwrite": "3.4.0",
287+ "forgetmenot": "0.1.0",
288+ "fork": "6.0.0",
289+ "form-urlencoded": "7.0.0",
290+ "formatters": "7.0.0",
291+ "framer-motion": "3.1.0",
292+ "free": "7.1.0",
293+ "freeap": "7.0.0",
294+ "freer-free": "0.0.1",
295+ "freet": "7.0.0",
296+ "functions": "6.0.0",
297+ "functor1": "3.0.0",
298+ "functors": "5.0.0",
299+ "fuzzy": "0.4.0",
300+ "gen": "4.0.0",
301+ "generate-values": "1.0.1",
302+ "generic-router": "0.0.1",
303+ "geojson": "0.0.5",
304+ "geometria": "2.2.0",
305+ "gesso": "1.0.1",
306+ "gojs": "0.1.1",
307+ "golden-test": "0.1.0",
308+ "golem-fetch": "0.1.0",
309+ "grain": "3.0.0",
310+ "grain-router": "3.0.0",
311+ "grain-virtualized": "3.0.0",
312+ "graphql-client": "10.1.1",
313+ "graphs": "8.1.0",
314+ "group": "4.1.1",
315+ "halogen": "7.0.0",
316+ "halogen-bootstrap5": "5.3.2",
317+ "halogen-canvas": "1.0.0",
318+ "halogen-css": "10.0.0",
319+ "halogen-declarative-canvas": "0.0.8",
320+ "halogen-echarts-simple": "0.0.4",
321+ "halogen-formless": "4.0.3",
322+ "halogen-helix": "1.1.0",
323+ "halogen-hooks": "0.6.3",
324+ "halogen-hooks-extra": "0.9.0",
325+ "halogen-infinite-scroll": "1.1.0",
326+ "halogen-store": "0.5.4",
327+ "halogen-storybook": "2.0.0",
328+ "halogen-subscriptions": "2.0.0",
329+ "halogen-svg-elems": "8.0.0",
330+ "halogen-typewriter": "1.0.4",
331+ "halogen-use-trigger-hooks": "1.0.0",
332+ "halogen-vdom": "8.0.0",
333+ "halogen-vdom-string-renderer": "0.5.0",
334+ "halogen-widgets": "0.3.1",
335+ "halogen-xterm": "2.0.0",
336+ "harmonia": "0.2.0",
337+ "heckin": "2.0.1",
338+ "heterogeneous": "0.7.0",
339+ "homogeneous": "0.4.0",
340+ "http-methods": "6.1.0",
341+ "httpurple": "4.0.0",
342+ "huffman": "0.4.0",
343+ "humdrum": "0.0.1",
344+ "hylograph-canvas": "0.1.0",
345+ "hylograph-components": "0.1.0",
346+ "hylograph-d3-kernel": "0.1.0",
347+ "hylograph-graph": "0.3.0",
348+ "hylograph-layout": "0.3.0",
349+ "hylograph-music": "0.4.0",
350+ "hylograph-optics": "0.1.0",
351+ "hylograph-selection": "0.5.3",
352+ "hylograph-simulation": "0.6.0",
353+ "hylograph-simulation-core": "0.1.0",
354+ "hylograph-simulation-halogen": "0.5.1",
355+ "hylograph-transitions": "0.1.0",
356+ "hylograph-wasm-kernel": "0.1.0",
357+ "hyrule": "2.3.9",
358+ "i18next": "0.1.0",
359+ "idb": "0.2.0",
360+ "identity": "6.0.0",
361+ "identy": "4.0.1",
362+ "indexed-db": "1.0.0",
363+ "indexed-monad": "3.0.0",
364+ "ink": "0.0.1",
365+ "int64": "3.0.0",
366+ "integers": "6.0.0",
367+ "interpolate": "5.0.2",
368+ "intersection-observer": "1.0.1",
369+ "invariant": "6.0.0",
370+ "jarilo": "1.0.1",
371+ "jelly": "0.10.0",
372+ "jelly-router": "0.3.0",
373+ "jelly-signal": "0.4.0",
374+ "jest": "1.0.0",
375+ "js-abort-controller": "1.0.0",
376+ "js-bigints": "2.2.1",
377+ "js-date": "8.0.0",
378+ "js-fetch": "0.2.1",
379+ "js-fileio": "3.0.0",
380+ "js-intl": "1.3.0",
381+ "js-iterators": "0.1.1",
382+ "js-maps": "0.1.2",
383+ "js-promise": "1.0.0",
384+ "js-promise-aff": "1.0.0",
385+ "js-temporal": "3.0.0",
386+ "js-timers": "6.1.0",
387+ "js-uri": "3.1.0",
388+ "jsdom": "1.0.0",
389+ "jsinc": "0.5.1",
390+ "json": "1.1.0",
391+ "json-codecs": "5.0.0",
392+ "justifill": "0.5.0",
393+ "jwt": "0.0.9",
394+ "labeled-data": "0.2.0",
395+ "language-cst-parser": "0.14.1",
396+ "lazy": "6.0.0",
397+ "lazy-joe": "1.0.0",
398+ "lcg": "4.0.0",
399+ "leibniz": "5.0.0",
400+ "leveldb": "1.0.1",
401+ "liminal": "1.0.1",
402+ "linalg": "6.0.0",
403+ "linear": "0.1.0",
404+ "lists": "7.0.0",
405+ "literals": "1.0.2",
406+ "logging": "3.0.0",
407+ "logging-journald": "0.4.0",
408+ "lumi-components": "18.0.0",
409+ "machines": "7.0.0",
410+ "maps-eager": "0.5.0",
411+ "marionette": "1.0.0",
412+ "marionette-react-basic-hooks": "0.1.1",
413+ "markdown-it-js": "0.1.0",
414+ "marked": "0.1.0",
415+ "matrices": "5.0.1",
416+ "matryoshka": "1.0.0",
417+ "maybe": "6.0.0",
418+ "media-types": "6.0.0",
419+ "meowclient": "1.0.0",
420+ "midi": "4.0.0",
421+ "milkdown": "0.1.0",
422+ "milkis": "9.0.0",
423+ "mimetype": "0.0.1",
424+ "minibench": "4.0.1",
425+ "mmorph": "7.0.0",
426+ "monad-control": "5.0.0",
427+ "monad-logger": "1.3.1",
428+ "monad-loops": "0.5.0",
429+ "monad-unlift": "1.0.1",
430+ "monoid-extras": "0.0.1",
431+ "monoidal": "0.16.0",
432+ "mote": "3.0.0",
433+ "motion": "4.0.0",
434+ "motsunabe": "2.0.0",
435+ "mvc": "0.0.1",
436+ "mycroft": "0.1.1",
437+ "mycroft-z3-wasm": "0.1.0",
438+ "mysql": "6.0.1",
439+ "n3": "0.1.0",
440+ "nano-id": "1.1.0",
441+ "nanoid": "0.1.0",
442+ "naturals": "3.0.0",
443+ "nested-functor": "0.2.1",
444+ "newtype": "5.0.0",
445+ "next-purs-rsc": "0.1.0",
446+ "nextjs": "0.1.1",
447+ "nextui": "0.2.0",
448+ "node-buffer": "9.0.0",
449+ "node-child-process": "11.1.0",
450+ "node-event-emitter": "3.0.0",
451+ "node-execa": "5.0.0",
452+ "node-fs": "9.2.0",
453+ "node-glob-basic": "2.0.0",
454+ "node-http": "9.1.0",
455+ "node-http2": "1.1.1",
456+ "node-human-signals": "1.0.0",
457+ "node-net": "5.1.0",
458+ "node-os": "5.1.0",
459+ "node-path": "5.0.1",
460+ "node-process": "11.2.0",
461+ "node-readline": "8.1.1",
462+ "node-sqlite": "0.2.0",
463+ "node-sqlite3": "8.0.0",
464+ "node-stream-pipes": "2.1.6",
465+ "node-streams": "9.0.1",
466+ "node-tls": "0.3.1",
467+ "node-url": "7.0.1",
468+ "node-workerbees": "0.3.1",
469+ "node-zlib": "0.4.0",
470+ "nonempty": "7.0.0",
471+ "now": "6.0.0",
472+ "npm-package-json": "2.0.0",
473+ "nqueens": "0.1.4",
474+ "nullable": "6.0.0",
475+ "numberfield": "0.2.2",
476+ "numbers": "9.0.1",
477+ "oak": "3.1.1",
478+ "oak-debug": "1.2.2",
479+ "object-maps": "0.3.0",
480+ "ocarina": "1.5.4",
481+ "oooooooooorrrrrrrmm-lib": "0.0.1",
482+ "open-colors-scales-and-schemes": "1.0.0",
483+ "open-drawing": "6.0.4",
484+ "open-folds": "6.4.0",
485+ "open-foreign-generic": "11.0.3",
486+ "open-memoize": "6.2.0",
487+ "open-mkdirp-aff": "1.2.0",
488+ "open-pairing": "6.2.0",
489+ "open-smolder": "12.0.2",
490+ "options": "7.0.0",
491+ "optparse": "5.0.1",
492+ "ordered-collections": "3.2.0",
493+ "ordered-set": "0.5.2",
494+ "orders": "6.0.0",
495+ "org-doc": "0.1.0",
496+ "owoify": "1.2.0",
497+ "pairs": "9.0.1",
498+ "parallel": "7.0.0",
499+ "parsing": "11.0.0",
500+ "parsing-dataview": "3.2.4",
501+ "partial": "4.0.0",
502+ "pathy": "9.0.0",
503+ "pha": "0.13.0",
504+ "phaser": "0.7.0",
505+ "phylio": "1.1.2",
506+ "pipes": "8.0.0",
507+ "pirates-charm": "0.0.1",
508+ "play": "1.0.0",
509+ "pmock": "1.1.0",
510+ "point-free": "1.0.0",
511+ "pointed-list": "0.5.1",
512+ "polymorphic-vectors": "4.0.0",
513+ "posix-types": "6.0.0",
514+ "postgresql": "2.0.21",
515+ "precise": "6.0.0",
516+ "precise-datetime": "7.0.0",
517+ "prelude": "6.0.2",
518+ "prettier-printer": "3.0.0",
519+ "printf": "0.1.0",
520+ "priority-queue": "0.1.2",
521+ "profunctor": "6.0.1",
522+ "profunctor-lenses": "8.0.0",
523+ "prospero": "0.1.0",
524+ "protobuf": "4.4.0",
525+ "ps-spa": "0.7.1",
526+ "psa-utils": "8.0.0",
527+ "psci-support": "6.0.0",
528+ "punycode": "1.0.0",
529+ "pursfmt": "0.17.0",
530+ "qualified-do": "2.2.0",
531+ "quantities": "12.2.0",
532+ "quickcheck": "8.0.1",
533+ "quickcheck-combinators": "0.1.3",
534+ "quickcheck-laws": "7.0.0",
535+ "quickcheck-utf8": "0.0.0",
536+ "random": "6.0.0",
537+ "rationals": "6.0.0",
538+ "rdf": "0.1.0",
539+ "react": "11.0.0",
540+ "react-aria": "0.2.0",
541+ "react-basic": "17.0.0",
542+ "react-basic-classic": "3.0.0",
543+ "react-basic-dnd": "10.1.0",
544+ "react-basic-dom": "7.0.0",
545+ "react-basic-dom-beta": "0.1.1",
546+ "react-basic-emotion": "7.1.0",
547+ "react-basic-hooks": "9.1.1",
548+ "react-basic-storybook": "2.0.0",
549+ "react-dnd-kit": "0.6.0",
550+ "react-dom": "8.0.0",
551+ "react-halo": "3.0.0",
552+ "react-icons": "1.1.6",
553+ "react-markdown": "0.1.0",
554+ "react-testing-library": "4.0.1",
555+ "react-virtuoso": "1.0.0",
556+ "reactix": "0.6.1",
557+ "read": "1.0.1",
558+ "recharts": "1.1.0",
559+ "record": "4.0.0",
560+ "record-extra": "5.0.1",
561+ "record-extra-srghma": "0.2.8",
562+ "record-ptional-fields": "0.1.2",
563+ "record-studio": "1.0.4",
564+ "ref-lifted": "0.0.2",
565+ "refs": "6.0.0",
566+ "remotedata": "5.0.1",
567+ "repr": "0.5.0",
568+ "resize-arrays": "0.0.1",
569+ "resize-observer": "1.0.0",
570+ "resource": "2.0.1",
571+ "resourcet": "1.0.0",
572+ "result": "1.0.3",
573+ "return": "0.2.0",
574+ "ring-modules": "5.0.1",
575+ "rito": "0.3.4",
576+ "roman": "0.4.0",
577+ "rough-notation": "1.0.2",
578+ "routing": "11.0.0",
579+ "routing-duplex": "0.7.0",
580+ "run": "5.0.0",
581+ "safe-coerce": "2.0.0",
582+ "safely": "4.0.1",
583+ "school-of-music": "1.3.0",
584+ "selection-foldable": "0.2.0",
585+ "selective-functors": "1.0.1",
586+ "semirings": "7.0.0",
587+ "shuffle": "2.0.0",
588+ "sigil": "0.3.0",
589+ "sigil-hats": "0.3.0",
590+ "signal": "13.0.0",
591+ "simple-emitter": "3.0.1",
592+ "simple-i18n": "2.0.1",
593+ "simple-json": "9.0.0",
594+ "simple-json-generics": "0.2.1",
595+ "simple-ulid": "3.0.0",
596+ "sized-matrices": "1.0.0",
597+ "sized-vectors": "5.0.2",
598+ "slug": "3.2.0",
599+ "small-ffi": "4.0.1",
600+ "soundfonts": "4.1.0",
601+ "sparse-matrices": "2.0.1",
602+ "sparse-polynomials": "3.0.1",
603+ "spec": "8.1.2",
604+ "spec-discovery": "8.4.1",
605+ "spec-mocha": "5.1.1",
606+ "spec-node": "0.0.3",
607+ "spec-quickcheck": "5.0.2",
608+ "spec-reporter-xunit": "0.7.1",
609+ "splitmix": "2.1.0",
610+ "ssrs": "1.0.0",
611+ "st": "6.2.0",
612+ "statistics": "0.3.2",
613+ "strictlypositiveint": "1.0.1",
614+ "string-parsers": "8.0.0",
615+ "strings": "6.0.1",
616+ "strings-extra": "4.0.0",
617+ "stringutils": "0.0.13",
618+ "structured-logging": "1.0.0",
619+ "substitute": "0.2.3",
620+ "supabase": "0.1.0",
621+ "supply": "0.2.0",
622+ "svg-parser": "3.0.0",
623+ "systemd-journald": "0.3.0",
624+ "tagged": "4.0.2",
625+ "tailrec": "6.1.0",
626+ "tanstack-query": "3.0.0",
627+ "tecton": "0.2.1",
628+ "tecton-halogen": "0.2.0",
629+ "temporal": "0.2.0",
630+ "test-unit": "17.0.0",
631+ "text-formatting": "0.1.0",
632+ "thermite": "6.3.1",
633+ "thermite-dom": "0.3.1",
634+ "these": "6.0.0",
635+ "threading": "0.0.3",
636+ "tidy": "0.11.1",
637+ "tidy-codegen": "4.0.1",
638+ "tldr": "0.0.0",
639+ "toestand": "0.9.0",
640+ "transformation-matrix": "1.0.1",
641+ "transformers": "6.1.0",
642+ "transit": "1.0.0",
643+ "tree-rose": "4.0.2",
644+ "trivial-unfold": "0.5.0",
645+ "ts-bridge": "4.0.0",
646+ "tuples": "7.0.0",
647+ "two-or-more": "1.0.0",
648+ "type-equality": "4.0.1",
649+ "typedenv": "2.0.1",
650+ "typelevel": "6.0.0",
651+ "typelevel-lists": "2.1.0",
652+ "typelevel-peano": "1.0.1",
653+ "typelevel-prelude": "7.0.0",
654+ "typelevel-regex": "0.0.3",
655+ "typelevel-rows": "0.1.0",
656+ "typisch": "0.4.0",
657+ "uint": "7.0.0",
658+ "ulid": "3.0.1",
659+ "uncurried-transformers": "1.1.0",
660+ "undefined": "2.0.0",
661+ "undefined-is-not-a-problem": "1.1.0",
662+ "unfoldable": "6.0.0",
663+ "unicode": "6.0.0",
664+ "unique": "0.6.1",
665+ "unlift": "1.0.1",
666+ "unordered-collections": "3.1.0",
667+ "unsafe-coerce": "6.0.0",
668+ "unsafe-reference": "5.0.0",
669+ "untagged-to-tagged": "0.1.4",
670+ "untagged-union": "1.0.0",
671+ "uri": "9.0.0",
672+ "url-immutable": "1.0.0",
673+ "url-regex-safe": "0.1.1",
674+ "uuid": "9.0.0",
675+ "uuidv4": "1.0.0",
676+ "validation": "6.0.0",
677+ "variant": "8.0.0",
678+ "variant-encodings": "2.0.0",
679+ "variant-gen": "1.0.0",
680+ "vectorfield": "1.0.1",
681+ "vectors": "2.1.0",
682+ "versions": "7.0.0",
683+ "visx": "0.0.2",
684+ "vitest": "2.0.1",
685+ "wasm-base": "0.2.0",
686+ "web-chain": "1.0.1",
687+ "web-clipboard": "6.0.0",
688+ "web-cssom": "2.0.0",
689+ "web-cssom-view": "0.1.0",
690+ "web-dom": "6.0.0",
691+ "web-dom-parser": "8.0.0",
692+ "web-dom-xpath": "3.0.0",
693+ "web-encoding": "3.0.0",
694+ "web-events": "4.0.0",
695+ "web-fetch": "4.0.1",
696+ "web-file": "4.0.0",
697+ "web-geometry": "0.1.0",
698+ "web-html": "4.1.1",
699+ "web-pointerevents": "2.0.0",
700+ "web-proletarian": "1.0.0",
701+ "web-promise": "3.2.0",
702+ "web-resize-observer": "2.1.0",
703+ "web-router": "1.0.0",
704+ "web-socket": "4.0.0",
705+ "web-storage": "5.0.0",
706+ "web-streams": "4.0.0",
707+ "web-touchevents": "4.0.0",
708+ "web-uievents": "5.0.0",
709+ "web-url": "2.0.0",
710+ "web-workers": "2.0.0",
711+ "web-xhr": "5.0.1",
712+ "webb-aff-list": "0.0.2",
713+ "webb-array": "0.0.2",
714+ "webb-channel": "0.0.3",
715+ "webb-commandline": "0.0.3",
716+ "webb-directory": "0.0.7",
717+ "webb-file": "0.0.1",
718+ "webb-map": "0.0.1",
719+ "webb-monad": "0.0.2",
720+ "webb-mutex": "0.0.7",
721+ "webb-parsing": "0.0.5",
722+ "webb-random": "0.0.1",
723+ "webb-refer": "0.0.3",
724+ "webb-set": "0.0.1",
725+ "webb-slot": "0.0.1",
726+ "webb-stateful": "0.0.3",
727+ "webb-string": "0.0.1",
728+ "webb-test": "0.0.1",
729+ "webb-thread": "0.0.2",
730+ "webb-writer": "0.0.3",
731+ "webextension-polyfill": "0.1.0",
732+ "webgpu": "0.0.1",
733+ "which": "2.0.0",
734+ "whine-core": "0.0.34",
735+ "xterm": "1.0.0",
736+ "yaml-next": "3.1.1",
737+ "yoga-acp-om": "0.1.1",
738+ "yoga-better-auth": "0.2.2",
739+ "yoga-bun-yoga": "0.2.1",
740+ "yoga-config": "0.2.1",
741+ "yoga-country": "3.0.0",
742+ "yoga-docker-compose": "0.1.1",
743+ "yoga-dynamodb": "0.1.1",
744+ "yoga-elasticsearch": "0.1.1",
745+ "yoga-fastify": "0.5.4",
746+ "yoga-fastify-om": "0.4.7",
747+ "yoga-fetch": "1.0.1",
748+ "yoga-fetch-om": "0.8.0",
749+ "yoga-format": "1.0.0",
750+ "yoga-heroui": "2.0.3",
751+ "yoga-http-api": "0.3.4",
752+ "yoga-jaeger": "0.1.1",
753+ "yoga-json": "5.2.1",
754+ "yoga-language": "1.0.0",
755+ "yoga-next-fastify": "0.2.0",
756+ "yoga-om": "2.2.1",
757+ "yoga-om-layer": "2.1.0",
758+ "yoga-om-strom": "0.4.3",
759+ "yoga-om-workerbees": "0.1.2",
760+ "yoga-opentelemetry": "0.2.0",
761+ "yoga-options": "0.1.1",
762+ "yoga-pino": "0.1.1",
763+ "yoga-postgres": "6.0.0",
764+ "yoga-react": "1.0.2",
765+ "yoga-react-dom": "2.0.1",
766+ "yoga-react-native": "0.2.1",
767+ "yoga-react-om": "0.2.0",
768+ "yoga-redis": "0.1.1",
769+ "yoga-scylladb": "0.1.1",
770+ "yoga-shadcn": "1.0.5",
771+ "yoga-sql-types": "0.2.0",
772+ "yoga-sqlite": "0.3.4",
773+ "yoga-sqlite-om": "0.3.0",
774+ "yoga-sse": "0.1.1",
775+ "yoga-subtlecrypto": "0.1.0",
776+ "yoga-test-docker": "0.1.2",
777+ "yoga-timezone": "1.0.0",
778+ "yoga-tree": "1.0.0",
779+ "yoga-tree-svg": "0.1.0",
780+ "yoga-tree-utils": "1.0.0",
781+ "z3": "0.0.2",
782+ "zipperarray": "2.0.0"
783+ }
784+ },
785+ "extra_packages": {
786+ "protobuf": {
787+ "path": "../library"
788+ }
789+ }
790+ },
791+ "packages": {
792+ "aff": {
793+ "type": "registry",
794+ "version": "8.0.0",
795+ "integrity": "sha256-9BRIrSdRoYybfiUmBqgKJ66cPqxYHb277bVWQMn/9sg=",
796+ "dependencies": [
797+ "bifunctors",
798+ "control",
799+ "datetime",
800+ "effect",
801+ "either",
802+ "exceptions",
803+ "foldable-traversable",
804+ "functions",
805+ "maybe",
806+ "newtype",
807+ "parallel",
808+ "prelude",
809+ "refs",
810+ "tailrec",
811+ "transformers",
812+ "unsafe-coerce"
813+ ]
814+ },
815+ "arraybuffer": {
816+ "type": "registry",
817+ "version": "13.2.0",
818+ "integrity": "sha256-WPYcYUR+RCUx+Mnccz1Irg1ryvA7pE6OqpkBlqpCqk0=",
819+ "dependencies": [
820+ "arraybuffer-types",
821+ "arrays",
822+ "effect",
823+ "float32",
824+ "functions",
825+ "gen",
826+ "maybe",
827+ "nullable",
828+ "prelude",
829+ "tailrec",
830+ "uint",
831+ "unfoldable"
832+ ]
833+ },
834+ "arraybuffer-builder": {
835+ "type": "registry",
836+ "version": "3.1.0",
837+ "integrity": "sha256-qYW2k/Np6AN8o4tXE526R6QYSqY9JCWJCYo46DXCYLY=",
838+ "dependencies": [
839+ "arraybuffer",
840+ "arraybuffer-types",
841+ "effect",
842+ "float32",
843+ "identity",
844+ "lists",
845+ "maybe",
846+ "newtype",
847+ "prelude",
848+ "tailrec",
849+ "transformers",
850+ "uint"
851+ ]
852+ },
853+ "arraybuffer-types": {
854+ "type": "registry",
855+ "version": "3.0.2",
856+ "integrity": "sha256-p05cJnSkyeoB7VHzMyc2Eb1RwUaB7Nl0sQSqEGNEUD8=",
857+ "dependencies": []
858+ },
859+ "arrays": {
860+ "type": "registry",
861+ "version": "7.3.0",
862+ "integrity": "sha256-GD4z7LCi9wzi7FCQqbWhvs8paoUK9NO+HwgXZ+KP8Rk=",
863+ "dependencies": [
864+ "bifunctors",
865+ "control",
866+ "foldable-traversable",
867+ "functions",
868+ "maybe",
869+ "nonempty",
870+ "partial",
871+ "prelude",
872+ "safe-coerce",
873+ "st",
874+ "tailrec",
875+ "tuples",
876+ "unfoldable",
877+ "unsafe-coerce"
878+ ]
879+ },
880+ "assert": {
881+ "type": "registry",
882+ "version": "6.0.0",
883+ "integrity": "sha256-hCZ1J8/71nQiRwsSV2j7iicppScOegBFZrLI6sPf9F8=",
884+ "dependencies": [
885+ "console",
886+ "effect",
887+ "prelude"
888+ ]
889+ },
890+ "bifunctors": {
891+ "type": "registry",
892+ "version": "6.1.0",
893+ "integrity": "sha256-CvZRb8uI75eKIqiYntR+k05Wk6tKlMS5w8sCA2AFna0=",
894+ "dependencies": [
895+ "const",
896+ "either",
897+ "newtype",
898+ "prelude",
899+ "tuples"
900+ ]
901+ },
902+ "console": {
903+ "type": "registry",
904+ "version": "6.1.0",
905+ "integrity": "sha256-3T5PPz1mATZmV0C4GzkCkpLlCa5xG7u8ZNgnLrrrI1Q=",
906+ "dependencies": [
907+ "effect",
908+ "prelude"
909+ ]
910+ },
911+ "const": {
912+ "type": "registry",
913+ "version": "6.0.0",
914+ "integrity": "sha256-S+m0lQsxnji0z1XRUmkn+3RFuWJ5CXWuIr1u3i8Bfoc=",
915+ "dependencies": [
916+ "invariant",
917+ "newtype",
918+ "prelude"
919+ ]
920+ },
921+ "contravariant": {
922+ "type": "registry",
923+ "version": "6.0.0",
924+ "integrity": "sha256-nuckEWqL80NaPmR/l9AUyrfycNh18XcvlZV9PAamwqc=",
925+ "dependencies": [
926+ "const",
927+ "either",
928+ "newtype",
929+ "prelude",
930+ "tuples"
931+ ]
932+ },
933+ "control": {
934+ "type": "registry",
935+ "version": "6.0.0",
936+ "integrity": "sha256-0vxyYh5FL+ilxgLo954w1LqCUC0RSIivNNlb9CaNUQg=",
937+ "dependencies": [
938+ "newtype",
939+ "prelude"
940+ ]
941+ },
942+ "datetime": {
943+ "type": "registry",
944+ "version": "6.1.0",
945+ "integrity": "sha256-tbv6eDXy6QOD7YSknxYSbsDF32OC2JrNbSBpzMs7Doc=",
946+ "dependencies": [
947+ "bifunctors",
948+ "control",
949+ "either",
950+ "enums",
951+ "foldable-traversable",
952+ "functions",
953+ "gen",
954+ "integers",
955+ "lists",
956+ "maybe",
957+ "newtype",
958+ "numbers",
959+ "ordered-collections",
960+ "partial",
961+ "prelude",
962+ "tuples"
963+ ]
964+ },
965+ "distributive": {
966+ "type": "registry",
967+ "version": "6.0.0",
968+ "integrity": "sha256-netyJK4B32PDYHD0tF2AenKgo3urzbI770ycM0pArAo=",
969+ "dependencies": [
970+ "identity",
971+ "newtype",
972+ "prelude",
973+ "tuples",
974+ "type-equality"
975+ ]
976+ },
977+ "effect": {
978+ "type": "registry",
979+ "version": "4.0.0",
980+ "integrity": "sha256-DdqU3bncRTjgMVPPRlAuGHVeajSPEcRaRhNuio7if6s=",
981+ "dependencies": [
982+ "prelude"
983+ ]
984+ },
985+ "either": {
986+ "type": "registry",
987+ "version": "6.1.0",
988+ "integrity": "sha256-tBHx3PgtH4GZOApZCDkcM7szRTYJinrUrVGWazQCUUg=",
989+ "dependencies": [
990+ "control",
991+ "invariant",
992+ "maybe",
993+ "prelude"
994+ ]
995+ },
996+ "enums": {
997+ "type": "registry",
998+ "version": "6.0.1",
999+ "integrity": "sha256-sdZOmLX5+5pASGpvVyT0vSD5BBYQjZiayjV5XiPutso=",
1000+ "dependencies": [
1001+ "control",
1002+ "either",
1003+ "gen",
1004+ "maybe",
1005+ "newtype",
1006+ "nonempty",
1007+ "partial",
1008+ "prelude",
1009+ "tuples",
1010+ "unfoldable"
1011+ ]
1012+ },
1013+ "exceptions": {
1014+ "type": "registry",
1015+ "version": "6.1.0",
1016+ "integrity": "sha256-nRrr+N0wk0TUFOWLR7e1n1oxcXo/X345bQUtoY9lW6A=",
1017+ "dependencies": [
1018+ "effect",
1019+ "either",
1020+ "maybe",
1021+ "prelude"
1022+ ]
1023+ },
1024+ "exists": {
1025+ "type": "registry",
1026+ "version": "6.0.0",
1027+ "integrity": "sha256-vtLbrWNaI+pzx/2fw2AQnCovoLtcosClIhjO26QKkh8=",
1028+ "dependencies": [
1029+ "unsafe-coerce"
1030+ ]
1031+ },
1032+ "float32": {
1033+ "type": "registry",
1034+ "version": "2.0.0",
1035+ "integrity": "sha256-lO8pshPBj5ExM+/ZjZ8nXVltb37XGJdRP8vakl0LBTE=",
1036+ "dependencies": [
1037+ "gen",
1038+ "maybe",
1039+ "prelude"
1040+ ]
1041+ },
1042+ "foldable-traversable": {
1043+ "type": "registry",
1044+ "version": "6.0.0",
1045+ "integrity": "sha256-NGGWyCio/xjce6fPP7y3wwg7CheqllID6aJudDxbWhA=",
1046+ "dependencies": [
1047+ "bifunctors",
1048+ "const",
1049+ "control",
1050+ "either",
1051+ "functors",
1052+ "identity",
1053+ "maybe",
1054+ "newtype",
1055+ "orders",
1056+ "prelude",
1057+ "tuples"
1058+ ]
1059+ },
1060+ "foreign": {
1061+ "type": "registry",
1062+ "version": "7.0.0",
1063+ "integrity": "sha256-jiDRMVQfovGsbbA/FzbzYf6iWk9i2b5gNrIjz+gFfsI=",
1064+ "dependencies": [
1065+ "either",
1066+ "functions",
1067+ "identity",
1068+ "integers",
1069+ "lists",
1070+ "maybe",
1071+ "prelude",
1072+ "strings",
1073+ "transformers"
1074+ ]
1075+ },
1076+ "foreign-object": {
1077+ "type": "registry",
1078+ "version": "4.1.0",
1079+ "integrity": "sha256-x/Q7r80z/vmHRKvPwhYmHP/DnJciPtsyGfRTMzayKIU=",
1080+ "dependencies": [
1081+ "arrays",
1082+ "foldable-traversable",
1083+ "functions",
1084+ "gen",
1085+ "lists",
1086+ "maybe",
1087+ "prelude",
1088+ "st",
1089+ "tailrec",
1090+ "tuples",
1091+ "typelevel-prelude",
1092+ "unfoldable"
1093+ ]
1094+ },
1095+ "functions": {
1096+ "type": "registry",
1097+ "version": "6.0.0",
1098+ "integrity": "sha256-0jgtOr+SFO4UScKc40oA/9Vdcf2rLn3h3vZlY0KfqVo=",
1099+ "dependencies": [
1100+ "prelude"
1101+ ]
1102+ },
1103+ "functors": {
1104+ "type": "registry",
1105+ "version": "5.0.0",
1106+ "integrity": "sha256-W1o/4wcp6S3chodYL8uixlXK2mfr1L+SzM1R+whqUco=",
1107+ "dependencies": [
1108+ "bifunctors",
1109+ "const",
1110+ "contravariant",
1111+ "control",
1112+ "distributive",
1113+ "either",
1114+ "invariant",
1115+ "maybe",
1116+ "newtype",
1117+ "prelude",
1118+ "profunctor",
1119+ "tuples",
1120+ "unsafe-coerce"
1121+ ]
1122+ },
1123+ "gen": {
1124+ "type": "registry",
1125+ "version": "4.0.0",
1126+ "integrity": "sha256-kyOateeOtQa07vfTMYeSuCKdelgKE1R65fwKkZ10wsY=",
1127+ "dependencies": [
1128+ "either",
1129+ "foldable-traversable",
1130+ "identity",
1131+ "maybe",
1132+ "newtype",
1133+ "nonempty",
1134+ "prelude",
1135+ "tailrec",
1136+ "tuples",
1137+ "unfoldable"
1138+ ]
1139+ },
1140+ "identity": {
1141+ "type": "registry",
1142+ "version": "6.0.0",
1143+ "integrity": "sha256-RY/iXPpxpqvKHYfJeFVNI1J06kohB9rbtWYuha8t0LE=",
1144+ "dependencies": [
1145+ "control",
1146+ "invariant",
1147+ "newtype",
1148+ "prelude"
1149+ ]
1150+ },
1151+ "int64": {
1152+ "type": "registry",
1153+ "version": "3.0.0",
1154+ "integrity": "sha256-umLvKog9B9xKJHsoihXDFM/6jjy+xEfOERxLEsWmnqs=",
1155+ "dependencies": [
1156+ "effect",
1157+ "foreign",
1158+ "functions",
1159+ "gen",
1160+ "integers",
1161+ "maybe",
1162+ "nullable",
1163+ "prelude",
1164+ "unsafe-coerce"
1165+ ]
1166+ },
1167+ "integers": {
1168+ "type": "registry",
1169+ "version": "6.0.0",
1170+ "integrity": "sha256-Y8yozC1uHRLcruobEyv5/bMKzE1BoKJ/olHv6o+bgm8=",
1171+ "dependencies": [
1172+ "maybe",
1173+ "numbers",
1174+ "prelude"
1175+ ]
1176+ },
1177+ "invariant": {
1178+ "type": "registry",
1179+ "version": "6.0.0",
1180+ "integrity": "sha256-HyoT1I5qIHRq8RSZji6zZDvqnpVjLw748utrKwZtqsw=",
1181+ "dependencies": [
1182+ "control",
1183+ "prelude"
1184+ ]
1185+ },
1186+ "lazy": {
1187+ "type": "registry",
1188+ "version": "6.0.0",
1189+ "integrity": "sha256-MHRC+1Pc+AjortBp4b/e1e6KpEpsDwaJBNBB7TOL+1I=",
1190+ "dependencies": [
1191+ "control",
1192+ "foldable-traversable",
1193+ "invariant",
1194+ "prelude"
1195+ ]
1196+ },
1197+ "lists": {
1198+ "type": "registry",
1199+ "version": "7.0.0",
1200+ "integrity": "sha256-/mGd7wLoU+wsTcqii7SSUByxsvwvjnu2PjwAD47yYb4=",
1201+ "dependencies": [
1202+ "bifunctors",
1203+ "control",
1204+ "foldable-traversable",
1205+ "lazy",
1206+ "maybe",
1207+ "newtype",
1208+ "nonempty",
1209+ "partial",
1210+ "prelude",
1211+ "tailrec",
1212+ "tuples",
1213+ "unfoldable"
1214+ ]
1215+ },
1216+ "maybe": {
1217+ "type": "registry",
1218+ "version": "6.0.0",
1219+ "integrity": "sha256-8X6XEgtZ5lqfkEuc1hWOofnL6mwhk8gSJTxwvbR/SbY=",
1220+ "dependencies": [
1221+ "control",
1222+ "invariant",
1223+ "newtype",
1224+ "prelude"
1225+ ]
1226+ },
1227+ "minibench": {
1228+ "type": "registry",
1229+ "version": "4.0.1",
1230+ "integrity": "sha256-zd/YnOqnzz/ers1umv5rgJOyPntF2zFpcLVbPWQIbYU=",
1231+ "dependencies": [
1232+ "console",
1233+ "effect",
1234+ "integers",
1235+ "numbers",
1236+ "partial",
1237+ "prelude",
1238+ "refs"
1239+ ]
1240+ },
1241+ "newtype": {
1242+ "type": "registry",
1243+ "version": "5.0.0",
1244+ "integrity": "sha256-dt6w0cty4OS+Pjt9fsh3iU6ottqSU83mdAZkaEEvo6c=",
1245+ "dependencies": [
1246+ "prelude",
1247+ "safe-coerce"
1248+ ]
1249+ },
1250+ "node-buffer": {
1251+ "type": "registry",
1252+ "version": "9.0.0",
1253+ "integrity": "sha256-RdQjilmEHqsT4fwpCr8Mavw8KTafYrS3ZM6zeAAVAl8=",
1254+ "dependencies": [
1255+ "arraybuffer-types",
1256+ "effect",
1257+ "maybe",
1258+ "nullable",
1259+ "st",
1260+ "unsafe-coerce"
1261+ ]
1262+ },
1263+ "node-event-emitter": {
1264+ "type": "registry",
1265+ "version": "3.0.0",
1266+ "integrity": "sha256-wodx71NxJBPXOaawFn01V1ByYB2vT+I3RuV2giOVKMg=",
1267+ "dependencies": [
1268+ "effect",
1269+ "either",
1270+ "functions",
1271+ "maybe",
1272+ "nullable",
1273+ "prelude",
1274+ "unsafe-coerce"
1275+ ]
1276+ },
1277+ "node-path": {
1278+ "type": "registry",
1279+ "version": "5.0.1",
1280+ "integrity": "sha256-j7n/SmpVz0FOMJl4XZop3ofJ+MeIPkMNqUEUKHEL6Us=",
1281+ "dependencies": [
1282+ "effect"
1283+ ]
1284+ },
1285+ "node-process": {
1286+ "type": "registry",
1287+ "version": "11.2.0",
1288+ "integrity": "sha256-onzKeNmaeYfN3HSDPqSFTrrP2Yl9tnVsfKKhnf2plxM=",
1289+ "dependencies": [
1290+ "effect",
1291+ "foreign",
1292+ "foreign-object",
1293+ "maybe",
1294+ "node-event-emitter",
1295+ "node-streams",
1296+ "posix-types",
1297+ "prelude",
1298+ "unsafe-coerce"
1299+ ]
1300+ },
1301+ "node-streams": {
1302+ "type": "registry",
1303+ "version": "9.0.1",
1304+ "integrity": "sha256-yuVGm/R/tBr4Nphi+a1a984Z0fkmN9Q5wWtSmbmJTpA=",
1305+ "dependencies": [
1306+ "aff",
1307+ "arrays",
1308+ "effect",
1309+ "either",
1310+ "exceptions",
1311+ "maybe",
1312+ "node-buffer",
1313+ "node-event-emitter",
1314+ "nullable",
1315+ "prelude",
1316+ "refs",
1317+ "st",
1318+ "tailrec",
1319+ "unsafe-coerce"
1320+ ]
1321+ },
1322+ "nonempty": {
1323+ "type": "registry",
1324+ "version": "7.0.0",
1325+ "integrity": "sha256-Ctkq8/+KiGqCE53Y/LvibA/coy7ev9HtRZU+GYS7yfQ=",
1326+ "dependencies": [
1327+ "control",
1328+ "foldable-traversable",
1329+ "maybe",
1330+ "prelude",
1331+ "tuples",
1332+ "unfoldable"
1333+ ]
1334+ },
1335+ "nullable": {
1336+ "type": "registry",
1337+ "version": "6.0.0",
1338+ "integrity": "sha256-CDAZk+L9Sc0GCFTkE8n+qdp4Ys8avvnkU+m2hVALt7M=",
1339+ "dependencies": [
1340+ "effect",
1341+ "functions",
1342+ "maybe"
1343+ ]
1344+ },
1345+ "numbers": {
1346+ "type": "registry",
1347+ "version": "9.0.1",
1348+ "integrity": "sha256-ZydYckgwRAnRaFC7pu6fADhzdwX+UqHZrfJyet64zls=",
1349+ "dependencies": [
1350+ "functions",
1351+ "maybe"
1352+ ]
1353+ },
1354+ "ordered-collections": {
1355+ "type": "registry",
1356+ "version": "3.2.0",
1357+ "integrity": "sha256-NaEXc2cz/7lJfxPWEja4XlZbGxuRqJwFKQJjsJf51kQ=",
1358+ "dependencies": [
1359+ "arrays",
1360+ "foldable-traversable",
1361+ "gen",
1362+ "lists",
1363+ "maybe",
1364+ "partial",
1365+ "prelude",
1366+ "st",
1367+ "tailrec",
1368+ "tuples",
1369+ "unfoldable"
1370+ ]
1371+ },
1372+ "orders": {
1373+ "type": "registry",
1374+ "version": "6.0.0",
1375+ "integrity": "sha256-nSMxZK7wxyDULkjZqvMyB71mVo6b0AyLLHosDVbv1XM=",
1376+ "dependencies": [
1377+ "newtype",
1378+ "prelude"
1379+ ]
1380+ },
1381+ "parallel": {
1382+ "type": "registry",
1383+ "version": "7.0.0",
1384+ "integrity": "sha256-bAGpVhrFz2IyHkA4MR7+tE/19FZ7dzYBdYPgK5svkqw=",
1385+ "dependencies": [
1386+ "control",
1387+ "effect",
1388+ "either",
1389+ "foldable-traversable",
1390+ "functors",
1391+ "maybe",
1392+ "newtype",
1393+ "prelude",
1394+ "profunctor",
1395+ "refs",
1396+ "transformers"
1397+ ]
1398+ },
1399+ "parsing": {
1400+ "type": "registry",
1401+ "version": "11.0.0",
1402+ "integrity": "sha256-N88gb/XbM29vw/Uop83shuMFT4wieQCz4wlQAct5eMs=",
1403+ "dependencies": [
1404+ "arrays",
1405+ "control",
1406+ "effect",
1407+ "either",
1408+ "enums",
1409+ "foldable-traversable",
1410+ "functions",
1411+ "identity",
1412+ "integers",
1413+ "lazy",
1414+ "lists",
1415+ "maybe",
1416+ "newtype",
1417+ "nullable",
1418+ "numbers",
1419+ "partial",
1420+ "prelude",
1421+ "st",
1422+ "strings",
1423+ "tailrec",
1424+ "transformers",
1425+ "tuples",
1426+ "unfoldable",
1427+ "unicode",
1428+ "unsafe-coerce"
1429+ ]
1430+ },
1431+ "parsing-dataview": {
1432+ "type": "registry",
1433+ "version": "3.2.4",
1434+ "integrity": "sha256-dq1SCl76/UrWhAbxW5Z3OsEpWi1+O0+1nQCo/g3dYaU=",
1435+ "dependencies": [
1436+ "arraybuffer",
1437+ "arraybuffer-types",
1438+ "effect",
1439+ "enums",
1440+ "float32",
1441+ "maybe",
1442+ "parsing",
1443+ "prelude",
1444+ "strings",
1445+ "tailrec",
1446+ "transformers",
1447+ "tuples",
1448+ "uint"
1449+ ]
1450+ },
1451+ "partial": {
1452+ "type": "registry",
1453+ "version": "4.0.0",
1454+ "integrity": "sha256-mdrlJBAgFMh79hNRW39uv7c+BwnnaOrAMmdh7+VhEhs=",
1455+ "dependencies": []
1456+ },
1457+ "posix-types": {
1458+ "type": "registry",
1459+ "version": "6.0.0",
1460+ "integrity": "sha256-Je5jG439F/SFO/IvVevZnWVxDIonrehlKuJkefP2lHE=",
1461+ "dependencies": [
1462+ "maybe",
1463+ "prelude"
1464+ ]
1465+ },
1466+ "prelude": {
1467+ "type": "registry",
1468+ "version": "6.0.2",
1469+ "integrity": "sha256-IqykrDRquGUD/LRSad7y75hZv3bUsGQ4knc8tdez8Qw=",
1470+ "dependencies": []
1471+ },
1472+ "profunctor": {
1473+ "type": "registry",
1474+ "version": "6.0.1",
1475+ "integrity": "sha256-Ow0mJC+PIIRq/a3mzCWY5vxuTgR/e+Ee68+mWeSRnWY=",
1476+ "dependencies": [
1477+ "control",
1478+ "distributive",
1479+ "either",
1480+ "exists",
1481+ "invariant",
1482+ "newtype",
1483+ "prelude",
1484+ "tuples"
1485+ ]
1486+ },
1487+ "protobuf": {
1488+ "type": "local",
1489+ "path": "../library",
1490+ "dependencies": [
1491+ "arraybuffer",
1492+ "arraybuffer-builder",
1493+ "arraybuffer-types",
1494+ "arrays",
1495+ "control",
1496+ "effect",
1497+ "either",
1498+ "enums",
1499+ "exceptions",
1500+ "float32",
1501+ "foldable-traversable",
1502+ "functions",
1503+ "int64",
1504+ "lists",
1505+ "maybe",
1506+ "newtype",
1507+ "parsing",
1508+ "parsing-dataview",
1509+ "prelude",
1510+ "record",
1511+ "strings",
1512+ "tailrec",
1513+ "transformers",
1514+ "tuples",
1515+ "uint",
1516+ "web-encoding"
1517+ ]
1518+ },
1519+ "record": {
1520+ "type": "registry",
1521+ "version": "4.0.0",
1522+ "integrity": "sha256-WQ8fqp4X1wTA70J4qUcPW4Z7DCwx6e5KJnT/EuTdWSc=",
1523+ "dependencies": [
1524+ "functions",
1525+ "prelude",
1526+ "unsafe-coerce"
1527+ ]
1528+ },
1529+ "refs": {
1530+ "type": "registry",
1531+ "version": "6.0.0",
1532+ "integrity": "sha256-KKD5G9dR2SauuDGULUJsxjqDOEi1Jqm+2Sq5U2mY8YU=",
1533+ "dependencies": [
1534+ "effect",
1535+ "prelude"
1536+ ]
1537+ },
1538+ "safe-coerce": {
1539+ "type": "registry",
1540+ "version": "2.0.0",
1541+ "integrity": "sha256-EJrxtKt5xC7TYjBZrSBO/J7Aw3DmtilYjt4olpAXWVc=",
1542+ "dependencies": [
1543+ "unsafe-coerce"
1544+ ]
1545+ },
1546+ "st": {
1547+ "type": "registry",
1548+ "version": "6.2.0",
1549+ "integrity": "sha256-WI4MEkkwUd4pnwZQ3G8VKWgX5t1RSNJludm5e9boaRo=",
1550+ "dependencies": [
1551+ "partial",
1552+ "prelude",
1553+ "tailrec",
1554+ "unsafe-coerce"
1555+ ]
1556+ },
1557+ "strings": {
1558+ "type": "registry",
1559+ "version": "6.0.1",
1560+ "integrity": "sha256-FNto2hoNW5Da6W6crIk77YXMagBvOGHZE1kO7eZ1vLM=",
1561+ "dependencies": [
1562+ "arrays",
1563+ "control",
1564+ "either",
1565+ "enums",
1566+ "foldable-traversable",
1567+ "gen",
1568+ "integers",
1569+ "maybe",
1570+ "newtype",
1571+ "nonempty",
1572+ "partial",
1573+ "prelude",
1574+ "tailrec",
1575+ "tuples",
1576+ "unfoldable",
1577+ "unsafe-coerce"
1578+ ]
1579+ },
1580+ "tailrec": {
1581+ "type": "registry",
1582+ "version": "6.1.0",
1583+ "integrity": "sha256-xrorCfP0xV1wubs27idQCHQqdvSUuqmmL/am7Ji1wVU=",
1584+ "dependencies": [
1585+ "bifunctors",
1586+ "effect",
1587+ "either",
1588+ "identity",
1589+ "maybe",
1590+ "partial",
1591+ "prelude",
1592+ "refs"
1593+ ]
1594+ },
1595+ "transformers": {
1596+ "type": "registry",
1597+ "version": "6.1.0",
1598+ "integrity": "sha256-QJmgNT/y7ljPHSsXaW4zxF/982BFiQ90KNL1g/NtEOQ=",
1599+ "dependencies": [
1600+ "control",
1601+ "distributive",
1602+ "effect",
1603+ "either",
1604+ "exceptions",
1605+ "foldable-traversable",
1606+ "identity",
1607+ "lazy",
1608+ "maybe",
1609+ "newtype",
1610+ "prelude",
1611+ "st",
1612+ "tailrec",
1613+ "tuples",
1614+ "unfoldable"
1615+ ]
1616+ },
1617+ "tuples": {
1618+ "type": "registry",
1619+ "version": "7.0.0",
1620+ "integrity": "sha256-BKy7EfK8S1KeTCwyWqyW1wwcpSAQuh3IsczSVgS6fzY=",
1621+ "dependencies": [
1622+ "control",
1623+ "invariant",
1624+ "prelude"
1625+ ]
1626+ },
1627+ "type-equality": {
1628+ "type": "registry",
1629+ "version": "4.0.1",
1630+ "integrity": "sha256-BBqYOSnAKmayRvR5mtZoCf4SlYs2ipatD/+5nQx73aw=",
1631+ "dependencies": []
1632+ },
1633+ "typelevel-prelude": {
1634+ "type": "registry",
1635+ "version": "7.0.0",
1636+ "integrity": "sha256-+pHi14/40mTj/+lmCWqL0T7iXIXD1+NSg/KItyyoB0A=",
1637+ "dependencies": [
1638+ "prelude",
1639+ "type-equality"
1640+ ]
1641+ },
1642+ "uint": {
1643+ "type": "registry",
1644+ "version": "7.0.0",
1645+ "integrity": "sha256-MCTYyDPFLoNLweSY1oEjKKo0xhqCGrAbiBQNdva1B3w=",
1646+ "dependencies": [
1647+ "effect",
1648+ "enums",
1649+ "gen",
1650+ "maybe",
1651+ "numbers",
1652+ "prelude"
1653+ ]
1654+ },
1655+ "unfoldable": {
1656+ "type": "registry",
1657+ "version": "6.0.0",
1658+ "integrity": "sha256-BK/6By1sKp/ztk+9CF3q43SV0QDTLVdsGqFerKHSmbg=",
1659+ "dependencies": [
1660+ "foldable-traversable",
1661+ "maybe",
1662+ "partial",
1663+ "prelude",
1664+ "tuples"
1665+ ]
1666+ },
1667+ "unicode": {
1668+ "type": "registry",
1669+ "version": "6.0.0",
1670+ "integrity": "sha256-5KugCNyYxscmZpnMbssOQA96XimuBN/bjHpdrtd5qaY=",
1671+ "dependencies": [
1672+ "foldable-traversable",
1673+ "maybe",
1674+ "strings"
1675+ ]
1676+ },
1677+ "unsafe-coerce": {
1678+ "type": "registry",
1679+ "version": "6.0.0",
1680+ "integrity": "sha256-0L1QsaY20OILjfU5TV72d3U/tSjhmL9hJ32WMp857Lk=",
1681+ "dependencies": []
1682+ },
1683+ "web-encoding": {
1684+ "type": "registry",
1685+ "version": "3.0.0",
1686+ "integrity": "sha256-h9oYV0tHTqWhP2J1MwPWR28qwHOwjeVxgq/0YNTJOZo=",
1687+ "dependencies": [
1688+ "arraybuffer-types",
1689+ "effect",
1690+ "newtype",
1691+ "prelude"
1692+ ]
1693+ }
1694+ }
1695+}
plugin/spago.yamlnew file+28
@@ -0,0 +1,28 @@
1+package:
2+ name: plugin
3+ dependencies:
4+ - protobuf
5+ - aff
6+ - node-buffer
7+ - node-path
8+ - node-process
9+ - node-streams
10+ - console
11+ - unicode
12+ - unsafe-coerce
13+
14+ test:
15+ main: Test.Main
16+ dependencies:
17+ - assert
18+ - minibench
19+ - console
20+ - unfoldable
21+ - numbers
22+
23+workspace:
24+ packageSet:
25+ registry: 81.1.0
26+ extraPackages:
27+ protobuf:
28+ path: ../library
plugin/src/Main.pursnew file+1601
@@ -0,0 +1,1601 @@
1+-- | Entry point for the code-generating executable plugin `protoc-gen-purescript`.
2+-- | See the package README for instructions on how to run the code generator.
3+
4+module Main (main) where
5+
6+import Prelude
7+
8+import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM)
9+import Data.Array (catMaybes, concat, fold, mapWithIndex)
10+import Data.Array as Array
11+import Data.ArrayBuffer.ArrayBuffer as AB
12+import Data.ArrayBuffer.Builder (execPutM)
13+import Data.ArrayBuffer.DataView as DV
14+import Data.ArrayBuffer.Types as ABT
15+import Data.CodePoint.Unicode as Unicode
16+import Data.Either (Either(..), either)
17+import Data.Maybe (Maybe(..), fromMaybe, maybe)
18+import Data.Newtype (unwrap)
19+import Data.String (Pattern(..))
20+import Data.String as String
21+import Data.String.Pattern as String.Pattern
22+import Data.String.Regex as String.Regex
23+import Data.String.Regex.Flags as String.Regex.Flags
24+import Data.Traversable (sequence, traverse)
25+import Data.Tuple (Tuple(..))
26+import Data.UInt as UInt
27+import Data.UInt64 (UInt64)
28+import Data.UInt64 as UInt64
29+import Effect (Effect)
30+import Effect.Aff (runAff_, throwError, error)
31+import Effect.Class (class MonadEffect, liftEffect)
32+import Effect.Class.Console as Console
33+import Google.Protobuf.Compiler.Plugin (CodeGeneratorRequest(..), CodeGeneratorResponse, CodeGeneratorResponse_File(..), mkCodeGeneratorResponse, parseCodeGeneratorRequest, putCodeGeneratorResponse, parseVersion)
34+import Google.Protobuf.Descriptor (DescriptorProto(..), EnumDescriptorProto(..), EnumValueDescriptorProto(..), FieldDescriptorProto(..), FieldDescriptorProto_Label(..), FieldDescriptorProto_Type(..), FieldOptions(..), FileDescriptorProto(..), OneofDescriptorProto(..), SourceCodeInfo(..), SourceCodeInfo_Location(..))
35+import Node.Buffer (Buffer, toArrayBuffer, fromArrayBuffer)
36+import Node.Buffer as Buffer
37+import Node.Path (basenameWithoutExt)
38+import Node.Process (stdin, stdout)
39+import Node.Stream.Aff (readSome, write)
40+import Parsing (ParserT, fail, runParserT)
41+import Parsing.DataView (takeN)
42+import Protobuf.Internal.Common (label)
43+import Protobuf.Internal.Decode (decodeString, decodeTag32)
44+import Protobuf.Internal.Runtime (parseLenDel, manyLength)
45+import Unsafe.Coerce (unsafeCoerce)
46+
47+
48+main :: Effect Unit
49+main = runAff_ (either (unsafeCoerce >>> Console.error) (\_ -> pure unit)) do
50+ -- There is a race condition here.
51+ -- Protoc just assumes that when it writes the request, we get the whole
52+ -- request on our read of stdin. Protoc doesn't tell us how to determine
53+ -- that we have read the whole request.
54+ -- So we read chunks and parse in a loop until we have enough bytes that the
55+ -- parse succeeds.
56+ flip tailRecM [] \bs -> do
57+ {buffers:b,readagain} <- readSome stdin
58+ let bs' = bs <> b
59+ ab <- liftEffect $ toArrayBuffer =<< Buffer.concat bs'
60+ runParserT (DV.whole ab) (parseCodeGeneratorRequestComplete (AB.byteLength ab)) >>= case _ of
61+ Left err -> do
62+ if not readagain then do
63+ void $ throwError $ error "stdin is not readable."
64+ pure (Done unit)
65+ else if (Array.length bs') < 10000 then do
66+ -- What we want to do here is detect whether this parsing error was
67+ -- because we read to the end of the buffer and need to read more.
68+ -- But we don't have a good way to do that right now, so we assume
69+ -- that we need to read more, unless we have already read 10000 chunks.
70+ -- (Chunk size is usually 65536 bytes.)
71+ -- If the parsing error happened for some other reason then we should
72+ -- error out here.
73+ pure (Loop bs')
74+ else do
75+ void $ throwError $ error $ show err
76+ pure (Done unit)
77+ Right unit -> do
78+ runParserT (DV.whole ab) (parseCodeGeneratorRequest (AB.byteLength ab)) >>= case _ of
79+ Left err -> do
80+ void $ throwError $ error $ show err
81+ pure (Done unit)
82+ Right request -> do
83+ responseBuf <- execPutM $ putCodeGeneratorResponse (generate request)
84+ buf :: Buffer <- liftEffect $ fromArrayBuffer responseBuf
85+ write stdout [buf]
86+ pure (Done unit)
87+
88+-- | This is a parser which will succeed only if parseCodeGeneratorRequest will succeed.
89+-- | It is faster than parseCodeGeneratorRequest.
90+-- | We use this parser to determine if we have read the whole request from stdin.
91+-- | If this parser fails then we need to read more from stdin.
92+parseCodeGeneratorRequestComplete
93+ :: forall m. MonadEffect m
94+ => MonadRec m
95+ => ABT.ByteLength
96+ -> ParserT ABT.DataView m Unit
97+parseCodeGeneratorRequestComplete length = label "parseCodeGeneratorRequestComplete / " $ do
98+ _ <- flip manyLength length do
99+ Tuple fieldNumber _wireType <- decodeTag32
100+ case UInt.toInt fieldNumber of
101+ 1 -> do -- file_to_generate
102+ _ <- decodeString
103+ pure unit
104+ 2 -> do -- parameter
105+ _ <- decodeString
106+ pure unit
107+ 3 -> do -- compiler_version
108+ _ <- parseLenDel parseVersion
109+ pure unit
110+ 15 -> do -- proto_file
111+ _ <- parseLenDel takeN
112+ pure unit
113+ 17 -> do -- source_file_descriptors
114+ _ <- parseLenDel takeN
115+ pure unit
116+ _ -> do
117+ fail "unexpected field number"
118+ pure unit
119+
120+generate :: CodeGeneratorRequest -> CodeGeneratorResponse
121+generate (CodeGeneratorRequest { proto_file }) = do
122+ case traverse (genFile proto_file) proto_file of
123+ Right file ->
124+ mkCodeGeneratorResponse
125+ { error: Nothing
126+ , file: file
127+ , supported_features: Just feature_proto3_optional
128+ }
129+ Left err ->
130+ mkCodeGeneratorResponse
131+ { error: Just err
132+ , supported_features: Just feature_proto3_optional
133+ }
134+ where
135+ -- https://github.com/protocolbuffers/protobuf/blob/main/docs/implementing_proto3_presence.md#signaling-that-your-code-generator-supports-proto3-optional
136+ -- https://github.com/protocolbuffers/protobuf/blob/3f5fc4df1de8e12b2235c3006593e22d6993c3f5/src/google/protobuf/compiler/plugin.proto#L115
137+ feature_proto3_optional = UInt64.unsafeFromInt 1 :: UInt64
138+
139+-- | Names of parent messages for a message or enum.
140+type NameSpace
141+ = Array String
142+
143+-- | Protobuf package name.
144+type PackageName = Array String
145+
146+-- | * the names of all parent messages
147+-- | * The “path attribute”
148+-- | * A message descriptor
149+data ScopedMsg
150+ = ScopedMsg NameSpace Path DescriptorProto
151+
152+-- | An enum descriptor, plus the names of all parent messages.
153+data ScopedEnum
154+ = ScopedEnum NameSpace Path EnumDescriptorProto
155+
156+-- | Scoped field name which has the qualified package namespace and the field name.
157+data ScopedField
158+ = ScopedField NameSpace String
159+
160+-- | This is how we'll return errors while trying to generate the response from the request.
161+type Resp a
162+ = Either String a
163+
164+-- | Best way to parse SourceCodeInfo Data From Protobuf Files
165+-- | https://groups.google.com/g/protobuf/c/AyOQvhtwvYc
166+type Path = Array Int
167+
168+genFile :: Array FileDescriptorProto -> FileDescriptorProto -> Resp CodeGeneratorResponse_File
169+genFile proto_file ( FileDescriptorProto
170+ { name: fileName
171+ , package
172+ , dependency
173+ , message_type
174+ , enum_type
175+ , source_code_info
176+ }
177+) = do
178+ let
179+ packageName = case package of -- Optional package, https://protobuf.dev/programming-guides/proto3#packages
180+ Nothing -> []
181+ Just ps -> String.split (String.Pattern.Pattern ".") ps
182+ baseName = case fileName of
183+ Nothing -> "Generated"
184+ Just "" -> "Generated"
185+ Just n -> basenameWithoutExt n ".proto"
186+ messages :: Array ScopedMsg <- sequence $ flattenMessages [] [4] message_type
187+ enums :: Array ScopedEnum <- Right (mapWithIndex (\i e -> ScopedEnum [] [5,i] e) enum_type) <> sequence (flattenEnums [] [4] message_type)
188+ let
189+ fileNameOut = baseName <> "." <> (String.joinWith "." ((map capitalize packageName))) <> ".purs"
190+ -- We have to import the modules qualified in the way because
191+ -- 1. When protoc "fully qualifies" a field type from an imported
192+ -- desriptor, the qualification consists of only the package name
193+ -- 2. protoc allows multiple files to have the same package name,
194+ -- such as descriptor.proto and any.proto (package "google.protobuf")
195+ -- but Purescript requires each file to have a different module name.
196+ let
197+ genImport :: String -> Resp String
198+ genImport fpath = do
199+ pkg <- lookupPackageByFilepath
200+ let
201+ moduleName = mkImportName fpath pkg
202+ let
203+ qualifiedName = Array.dropEnd 1 moduleName
204+ Right $ "import " <> make moduleName <> " as " <> make qualifiedName
205+ where
206+ make = String.joinWith "." <<< map capitalize
207+
208+ lookupPackageByFilepath :: Resp (Array String)
209+ lookupPackageByFilepath = case Array.find (\(FileDescriptorProto f) -> maybe false (_ == fpath) f.name) proto_file of
210+ Just (FileDescriptorProto { package: Just p }) -> Right $ String.split (String.Pattern.Pattern ".") p
211+ _ -> Left $ "Failed genImport lookupPackageByFilepath " <> fpath
212+
213+ mkImportName ::
214+ -- file path
215+ String ->
216+ -- package name
217+ Array String ->
218+ Array String
219+ mkImportName fileString packages = map mkModuleName $ packages <> file
220+ where
221+ file = [ basenameWithoutExt fileString ".proto" ]
222+ let
223+ mkFieldType ::
224+ -- prefix for the name, i.e. "put" "parse"
225+ String ->
226+ -- package-qualified period-separated field name
227+ String ->
228+ String
229+ mkFieldType prefix s =
230+ let
231+ (ScopedField names name) = parseFieldName s
232+ in
233+ if names `beginsWith` packageName && (isLocalMessageName name || isLocalEnumName name) then
234+ -- it's a name in this package
235+ prefix <> (mkTypeName $ Array.drop (Array.length packageName) names <> [ name ])
236+ else
237+ -- it's a name in the top-level of an imported package
238+ String.joinWith "." $ (map mkModuleName $ names) <> [ prefix <> capitalize name ]
239+ where
240+ isLocalMessageName :: String -> Boolean
241+ isLocalMessageName fname =
242+ maybe false (const true)
243+ $ flip Array.find messages
244+ $ \(ScopedMsg _ _ (DescriptorProto { name })) ->
245+ maybe false (fname == _) name
246+
247+ isLocalEnumName :: String -> Boolean
248+ isLocalEnumName ename =
249+ maybe false (const true)
250+ $ flip Array.find enums
251+ $ \(ScopedEnum _ _ (EnumDescriptorProto { name })) ->
252+ maybe false (ename == _) name
253+
254+ parseFieldName :: String -> ScopedField
255+ parseFieldName fname =
256+ if String.take 1 fname == "." then
257+ -- fully qualified
258+ let
259+ names = Array.dropWhile (_ == "") $ String.split (String.Pattern.Pattern ".") fname
260+ in
261+ ScopedField (Array.dropEnd 1 names) (fromMaybe "" $ Array.last names)
262+ else
263+ ScopedField [] fname -- this case should never occur, protoc always qualifies the names for us
264+
265+ beginsWith :: Array String -> Array String -> Boolean
266+ beginsWith xs x = x == Array.take (Array.length x) xs
267+
268+ let
269+ -- Find source code comments
270+ --
271+ -- Best way to parse SourceCodeInfo Data From Protobuf Files
272+ -- https://groups.google.com/g/protobuf/c/AyOQvhtwvYc
273+ commentsLeading :: Path -> Maybe String
274+ commentsLeading path' = do
275+ (SourceCodeInfo {location}) <- source_code_info
276+ (SourceCodeInfo_Location info) <- Array.find (\(SourceCodeInfo_Location {path}) -> path == path') location
277+ commentlines <- arraytrim <$> map trimws <$> String.split (Pattern "\n") <$> info.leading_comments
278+ Just $ String.joinWith "\n" $ append ["\n-- | "] $ append "-- | " <$> commentlines
279+ where
280+ arraytrim :: Array String -> Array String
281+ arraytrim = trimhead <<< trimtail
282+ where
283+ trimhead xs' = case Array.uncons xs' of
284+ Just {head,tail} | String.null head -> tail
285+ _ -> xs'
286+ trimtail xs' = case Array.unsnoc xs' of
287+ Just {init,last} | String.null last -> init
288+ _ -> xs'
289+ trimws :: String -> String
290+ trimws s = case String.uncons s of
291+ Just {head,tail} | Unicode.isSpace head -> tail
292+ _ -> s
293+
294+
295+ -- We have an r and we're merging an l.
296+ -- About merging: https://github.com/protocolbuffers/protobuf/blob/master/docs/field_presence.md
297+ let
298+ genFieldMerge :: FieldDescriptorProto -> Resp String
299+ genFieldMerge ( FieldDescriptorProto
300+ { name: Just name'
301+ , label: Just FieldDescriptorProto_Label_LABEL_REPEATED
302+ }
303+ ) = Right $ fname <> ": r." <> fname <> " <> l." <> fname
304+ where
305+ fname = decapitalize name'
306+
307+ genFieldMerge ( FieldDescriptorProto
308+ { name: Just name'
309+ , label: Just _
310+ , type: Just FieldDescriptorProto_Type_TYPE_MESSAGE
311+ , type_name: Just tname
312+ }
313+ ) = Right $ fname <> ": Prelude.mergeWith " <> mkFieldType "merge" tname <> " l." <> fname <> " r." <> fname
314+ where
315+ fname = decapitalize name'
316+
317+ genFieldMerge ( FieldDescriptorProto
318+ { name: Just name'
319+ , label: Just _
320+ , type: Just _
321+ }
322+ ) = Right $ fname <> ": Prelude.alt l." <> fname <> " r." <> fname
323+ where
324+ fname = decapitalize name'
325+
326+ genFieldMerge _ = Left "Failed genFieldDefault missing FieldDescriptorProto name or label"
327+ let
328+ genFieldMergeOneof ::
329+ NameSpace ->
330+ (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) ->
331+ Resp String
332+ genFieldMergeOneof nameSpace (Tuple (OneofDescriptorProto { name: Just oname }) _) = Right $ fname <> ": merge" <> cname <> " l." <> fname <> " r." <> fname
333+ where
334+ fname = decapitalize oname
335+
336+ cname = String.joinWith "_" $ map capitalize $ nameSpace <> [ oname ]
337+
338+ genFieldMergeOneof _ _ = Left "Failed genFieldMergeOneof missing name"
339+ let
340+ genOneofMerge ::
341+ NameSpace ->
342+ (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) ->
343+ Resp String
344+ genOneofMerge nameSpace (Tuple (OneofDescriptorProto { name: Just oname }) fields) = do
345+ Right $ "merge" <> cname <> " :: Prelude.Maybe " <> cname <> " -> Prelude.Maybe " <> cname <> " -> Prelude.Maybe " <> cname <> "\n"
346+ <> "merge"
347+ <> cname
348+ <> " l r = case Prelude.Tuple l r of\n"
349+ <> (fold $ catMaybes $ map genField fields)
350+ <> " _ -> Prelude.alt l r\n"
351+ where
352+ cname = String.joinWith "_" $ map capitalize $ nameSpace <> [ oname ]
353+
354+ genField :: FieldDescriptorProto -> Maybe String
355+ genField ( FieldDescriptorProto
356+ { type: Just FieldDescriptorProto_Type_TYPE_MESSAGE
357+ , name: Just name_inner
358+ , type_name: Just tname
359+ }
360+ ) = Just $ " Prelude.Tuple (Prelude.Just (" <> fname_inner <> " l')) (Prelude.Just (" <> fname_inner <> " r')) -> Prelude.map " <> fname_inner <> " $ Prelude.mergeWith " <> mkFieldType "merge" tname <> " (Prelude.Just l') (Prelude.Just r')\n"
361+ where
362+ fname_inner = String.joinWith "_" $ map capitalize [ cname, name_inner ]
363+
364+ genField _ = Nothing
365+
366+ genOneofMerge _ _ = Left "Failed genOneofMerge missing name"
367+ let
368+ genTypeOneof ::
369+ NameSpace ->
370+ (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) ->
371+ Resp String
372+ genTypeOneof nameSpace (Tuple (OneofDescriptorProto { name: Just oname }) pfields) = do
373+ fields <- catMaybes <$> traverse go pfields
374+ Right
375+ $ String.joinWith "\n"
376+ [ "data " <> cname
377+ , " = " <> String.joinWith "\n | " fields
378+ , ""
379+ , "derive instance generic" <> cname <> " :: Prelude.Generic " <> cname <> " _"
380+ , "derive instance eq" <> cname <> " :: Prelude.Eq " <> cname
381+ , "instance show" <> cname <> " :: Prelude.Show " <> cname <> " where show = Prelude.genericShow"
382+ , ""
383+ ]
384+ where
385+ cname = String.joinWith "_" $ map capitalize $ nameSpace <> [ oname ]
386+
387+ go :: FieldDescriptorProto -> Resp (Maybe String)
388+ go (FieldDescriptorProto { name: Just fname, oneof_index: Just _, type: Just ftype, type_name }) = do
389+ fieldType <- genFieldType ftype type_name
390+ Right $ Just $ (String.joinWith "_" $ map capitalize [ cname, fname ]) <> " " <> fieldType
391+ where
392+ genFieldType :: FieldDescriptorProto_Type -> Maybe String -> Resp String
393+ genFieldType FieldDescriptorProto_Type_TYPE_DOUBLE _ = Right "Number"
394+
395+ genFieldType FieldDescriptorProto_Type_TYPE_FLOAT _ = Right "Prelude.Float32"
396+
397+ genFieldType FieldDescriptorProto_Type_TYPE_INT64 _ = Right "Prelude.Int64"
398+
399+ genFieldType FieldDescriptorProto_Type_TYPE_UINT64 _ = Right "Prelude.UInt64"
400+
401+ genFieldType FieldDescriptorProto_Type_TYPE_INT32 _ = Right "Int"
402+
403+ genFieldType FieldDescriptorProto_Type_TYPE_FIXED64 _ = Right "Prelude.UInt64"
404+
405+ genFieldType FieldDescriptorProto_Type_TYPE_FIXED32 _ = Right "Prelude.UInt"
406+
407+ genFieldType FieldDescriptorProto_Type_TYPE_BOOL _ = Right "Boolean"
408+
409+ genFieldType FieldDescriptorProto_Type_TYPE_STRING _ = Right "String"
410+
411+ genFieldType FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) = Right $ mkFieldType "" tname
412+
413+ genFieldType FieldDescriptorProto_Type_TYPE_MESSAGE _ = Left "Failed genTypeOneof missing FieldDescriptorProto type_name"
414+
415+ genFieldType FieldDescriptorProto_Type_TYPE_BYTES _ = Right "Prelude.Bytes"
416+
417+ genFieldType FieldDescriptorProto_Type_TYPE_UINT32 _ = Right "Prelude.UInt"
418+
419+ genFieldType FieldDescriptorProto_Type_TYPE_ENUM (Just tname) = Right $ mkFieldType "" tname
420+
421+ genFieldType FieldDescriptorProto_Type_TYPE_ENUM _ = Left "Failed genTypeOneof missing FieldDescriptorProto type_name"
422+
423+ genFieldType FieldDescriptorProto_Type_TYPE_SFIXED32 _ = Right "Int"
424+
425+ genFieldType FieldDescriptorProto_Type_TYPE_SFIXED64 _ = Right "Prelude.Int64"
426+
427+ genFieldType FieldDescriptorProto_Type_TYPE_SINT32 _ = Right "Int"
428+
429+ genFieldType FieldDescriptorProto_Type_TYPE_SINT64 _ = Right "Prelude.Int64"
430+
431+ genFieldType FieldDescriptorProto_Type_TYPE_GROUP _ = Left "Failed genTypeOneof GROUP not supported."
432+
433+ go _ = Right Nothing
434+
435+ genTypeOneof _ _ = Left $ "Failed genTypeOneof missing OneofDescriptorProto name\n"
436+ let
437+ genOneofPut :: NameSpace -> (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) -> Resp String
438+ genOneofPut nameSpace (Tuple (OneofDescriptorProto { name: Just oname }) myfields) =
439+ map (String.joinWith "\n") $ sequence
440+ $ [ Right $ " case r." <> decapitalize oname <> " of"
441+ , Right " Prelude.Nothing -> pure Prelude.unit"
442+ ]
443+ <> (map genOneofFieldPut myfields)
444+ where
445+ genOneofFieldPut :: FieldDescriptorProto -> Resp String
446+ genOneofFieldPut ( FieldDescriptorProto
447+ { name: Just name'
448+ , number: Just fnumber
449+ , type: Just ftype
450+ , type_name
451+ }
452+ ) = go ftype type_name
453+ where
454+ -- If you set a oneof field to the default value (such as setting an int32 oneof field to 0), the "case" of that oneof field will be set, and the value will be serialized on the wire.
455+ -- https://protobuf.dev/programming-guides/proto3/#oneof-features
456+ go FieldDescriptorProto_Type_TYPE_DOUBLE _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeDoubleField"
457+
458+ go FieldDescriptorProto_Type_TYPE_FLOAT _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeFloatField"
459+
460+ go FieldDescriptorProto_Type_TYPE_INT64 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeInt64Field"
461+
462+ go FieldDescriptorProto_Type_TYPE_UINT64 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeUint64Field"
463+
464+ go FieldDescriptorProto_Type_TYPE_INT32 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeInt32Field"
465+
466+ go FieldDescriptorProto_Type_TYPE_FIXED64 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeFixed64Field"
467+
468+ go FieldDescriptorProto_Type_TYPE_FIXED32 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeFixed32Field"
469+
470+ go FieldDescriptorProto_Type_TYPE_BOOL _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeBoolField"
471+
472+ go FieldDescriptorProto_Type_TYPE_STRING _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeStringField"
473+
474+ go FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) $ Prelude.putLenDel " <> mkFieldType "put" tname
475+
476+ go FieldDescriptorProto_Type_TYPE_MESSAGE _ = Left "Failed genOneofPut missing FieldDescriptorProto type_name"
477+
478+ go FieldDescriptorProto_Type_TYPE_BYTES _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeBytesField"
479+
480+ go FieldDescriptorProto_Type_TYPE_UINT32 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeUint32Field"
481+
482+ go FieldDescriptorProto_Type_TYPE_ENUM _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.putEnumField"
483+
484+ go FieldDescriptorProto_Type_TYPE_SFIXED32 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeSfixed32Field"
485+
486+ go FieldDescriptorProto_Type_TYPE_SFIXED64 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeSfixed64Field"
487+
488+ go FieldDescriptorProto_Type_TYPE_SINT32 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeSint32Field"
489+
490+ go FieldDescriptorProto_Type_TYPE_SINT64 _ = Right $ " Prelude.Just (" <> mkTypeName (nameSpace <> [ oname, name' ]) <> " x) -> Prelude.putOptional " <> show fnumber <> " (Prelude.Just x) (\\_ -> false) Prelude.encodeSint64Field"
491+
492+ go FieldDescriptorProto_Type_TYPE_GROUP _ = Left "Failed genOneofPut GROUP not supported."
493+
494+ genOneofFieldPut _ = Left "Failed genOneofPut missing FieldDescriptorProto name or number or type"
495+
496+ genOneofPut _ _ = Left "Failed genOneofPut missing OneofDescriptoroProto name"
497+ let
498+ genFieldPut :: NameSpace -> FieldDescriptorProto -> Resp String
499+ genFieldPut _ ( FieldDescriptorProto
500+ { name: Just name'
501+ , number: Just fnumber
502+ , label: Just flabel
503+ , type: Just ftype
504+ , type_name
505+ , options
506+ , proto3_optional
507+ }
508+ ) = go flabel ftype type_name options
509+ where
510+ isSyntheticOneof = fromMaybe false proto3_optional
511+
512+ fname = decapitalize name'
513+
514+ -- For repeated fields of primitive numeric types, always put the packed
515+ -- encoding.
516+ -- https://protobuf.dev/programming-guides/encoding?hl=en#packed
517+ -- For optional synthetic Oneofs, write even if it's the default value.
518+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_DOUBLE _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeDoubleField"
519+
520+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_DOUBLE _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeDouble"
521+
522+ go _ FieldDescriptorProto_Type_TYPE_DOUBLE _ _ =
523+ if isSyntheticOneof then
524+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeDoubleField"
525+ else
526+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeDoubleField"
527+
528+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FLOAT _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeFloatField"
529+
530+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FLOAT _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeFloat"
531+
532+ go _ FieldDescriptorProto_Type_TYPE_FLOAT _ _ =
533+ if isSyntheticOneof then
534+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeFloatField"
535+ else
536+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeFloatField"
537+
538+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT64 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeInt64Field"
539+
540+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT64 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeInt64"
541+
542+ go _ FieldDescriptorProto_Type_TYPE_INT64 _ _ =
543+ if isSyntheticOneof then
544+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeInt64Field"
545+ else
546+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeInt64Field"
547+
548+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT64 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeUint64Field"
549+
550+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT64 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeUint64"
551+
552+ go _ FieldDescriptorProto_Type_TYPE_UINT64 _ _ =
553+ if isSyntheticOneof then
554+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeUint64Field"
555+ else
556+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeUint64Field"
557+
558+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT32 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeInt32Field"
559+
560+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT32 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeInt32"
561+
562+ go _ FieldDescriptorProto_Type_TYPE_INT32 _ _ =
563+ if isSyntheticOneof then
564+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeInt32Field"
565+ else
566+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeInt32Field"
567+
568+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED64 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeFixed64Field"
569+
570+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED64 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeFixed64"
571+
572+ go _ FieldDescriptorProto_Type_TYPE_FIXED64 _ _ =
573+ if isSyntheticOneof then
574+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeFixed64Field"
575+ else
576+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeFixed64Field"
577+
578+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED32 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeFixed32Field"
579+
580+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED32 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeFixed32"
581+
582+ go _ FieldDescriptorProto_Type_TYPE_FIXED32 _ _ =
583+ if isSyntheticOneof then
584+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeFixed32Field"
585+ else
586+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeFixed32Field"
587+
588+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BOOL _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeBoolField"
589+
590+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BOOL _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeBool"
591+
592+ go _ FieldDescriptorProto_Type_TYPE_BOOL _ _ =
593+ if isSyntheticOneof then
594+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeBoolField"
595+ else
596+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeBoolField"
597+
598+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_STRING _ _ = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeStringField"
599+
600+ go _ FieldDescriptorProto_Type_TYPE_STRING _ _ =
601+ if isSyntheticOneof then
602+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeStringField"
603+ else
604+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeStringField"
605+
606+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) _ = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " $ Prelude.putLenDel " <> mkFieldType "put" tname
607+
608+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_MESSAGE _ _ = Left "Failed genFieldPut missing FieldDescriptorProto type_name"
609+
610+ go _ FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) _ = Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) $ Prelude.putLenDel " <> mkFieldType "put" tname
611+
612+ go _ FieldDescriptorProto_Type_TYPE_MESSAGE _ _ = Left "Failed genFieldPut missing FieldDescriptorProto type_name"
613+
614+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BYTES _ _ = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " $ Prelude.encodeBytesField"
615+
616+ go _ FieldDescriptorProto_Type_TYPE_BYTES _ _ =
617+ if isSyntheticOneof then
618+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeBytesField"
619+ else
620+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeBytesField"
621+
622+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT32 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeUint32Field"
623+
624+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT32 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeUint32"
625+
626+ go _ FieldDescriptorProto_Type_TYPE_UINT32 _ _ =
627+ if isSyntheticOneof then
628+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeUint32Field"
629+ else
630+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeUint32Field"
631+
632+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_ENUM _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.putEnumField"
633+
634+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_ENUM _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.putEnum"
635+
636+ go _ FieldDescriptorProto_Type_TYPE_ENUM _ _ =
637+ if isSyntheticOneof then
638+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.putEnumField"
639+ else
640+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.putEnumField"
641+
642+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED32 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeSfixed32Field"
643+
644+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED32 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeSfixed32"
645+
646+ go _ FieldDescriptorProto_Type_TYPE_SFIXED32 _ _ =
647+ if isSyntheticOneof then
648+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeSfixed32Field"
649+ else
650+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeSfixed32Field"
651+
652+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED64 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeSfixed64Field"
653+
654+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED64 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeSfixed64"
655+
656+ go _ FieldDescriptorProto_Type_TYPE_SFIXED64 _ _ =
657+ if isSyntheticOneof then
658+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeSfixed64Field"
659+ else
660+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeSfixed64Field"
661+
662+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT32 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeSint32Field"
663+
664+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT32 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeSint32"
665+
666+ go _ FieldDescriptorProto_Type_TYPE_SINT32 _ _ =
667+ if isSyntheticOneof then
668+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeSint32Field"
669+ else
670+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeSint32Field"
671+
672+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT64 _ (Just (FieldOptions { packed: Just false })) = Right $ " Prelude.putRepeated " <> show fnumber <> " r." <> fname <> " Prelude.encodeSint64Field"
673+
674+ go FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT64 _ _ = Right $ " Prelude.putPacked " <> show fnumber <> " r." <> fname <> " Prelude.encodeSint64"
675+
676+ go _ FieldDescriptorProto_Type_TYPE_SINT64 _ _ =
677+ if isSyntheticOneof then
678+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " (\\_ -> false) Prelude.encodeSint64Field"
679+ else
680+ Right $ " Prelude.putOptional " <> show fnumber <> " r." <> fname <> " Prelude.isDefault Prelude.encodeSint64Field"
681+
682+ go _ FieldDescriptorProto_Type_TYPE_GROUP _ _ = Left "Failed genFieldPut GROUP not supported"
683+
684+ genFieldPut _ arg = Left $ "Failed genFieldPut missing FieldDescriptorProto name or number or label or type\n" <> show arg
685+ let
686+ genFieldParser :: NameSpace -> Array OneofDescriptorProto -> FieldDescriptorProto -> Resp String
687+ genFieldParser nameSpace oneof_decl ( FieldDescriptorProto
688+ { name: Just name'
689+ , number: Just fnumber
690+ , label: Just flabel
691+ , type: Just ftype
692+ , type_name
693+ , oneof_index
694+ , proto3_optional
695+ }
696+ ) = go (lookupOneof oneof_index) flabel ftype type_name
697+ where
698+ lookupOneof :: Maybe Int -> Maybe String
699+ lookupOneof Nothing = Nothing
700+
701+ lookupOneof (Just i) = case Array.index oneof_decl i of
702+ Just (OneofDescriptorProto { name }) -> case proto3_optional of
703+ Just true -> Nothing -- If it's an optional synthetic Oneof, then we pretend it's not a Oneof at all.
704+ _ -> name
705+ _ -> Nothing
706+
707+ fname = decapitalize name'
708+
709+ mkConstructor oname = mkTypeName (nameSpace <> [ oname, name' ])
710+
711+ -- For repeated fields of primitive numeric types, also parse the packed
712+ -- encoding.
713+ -- https://protobuf.dev/programming-guides/encoding?hl=en#packed
714+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_DOUBLE _ =
715+ Right
716+ $ String.joinWith "\n"
717+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
718+ , " x <- Prelude.decodeDouble"
719+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
720+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
721+ , " x <- Prelude.parseLenDel $ Prelude.decodeDoubleArray"
722+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
723+ ]
724+
725+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FLOAT _ =
726+ Right
727+ $ String.joinWith "\n"
728+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
729+ , " x <- Prelude.decodeFloat"
730+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
731+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
732+ , " x <- Prelude.parseLenDel $ Prelude.decodeFloatArray"
733+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
734+ ]
735+
736+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT64 _ =
737+ Right
738+ $ String.joinWith "\n"
739+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
740+ , " x <- Prelude.decodeInt64"
741+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
742+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
743+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt64"
744+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
745+ ]
746+
747+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT64 _ =
748+ Right
749+ $ String.joinWith "\n"
750+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
751+ , " x <- Prelude.decodeUint64"
752+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
753+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
754+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint64"
755+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
756+ ]
757+
758+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT32 _ =
759+ Right
760+ $ String.joinWith "\n"
761+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
762+ , " x <- Prelude.decodeInt32"
763+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
764+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
765+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeInt32"
766+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
767+ ]
768+
769+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED64 _ =
770+ Right
771+ $ String.joinWith "\n"
772+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
773+ , " x <- Prelude.decodeFixed64"
774+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
775+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
776+ , " x <- Prelude.parseLenDel $ Prelude.decodeFixed64Array"
777+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
778+ ]
779+
780+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED32 _ =
781+ Right
782+ $ String.joinWith "\n"
783+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
784+ , " x <- Prelude.decodeFixed32"
785+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
786+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
787+ , " x <- Prelude.parseLenDel $ Prelude.decodeFixed32Array"
788+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
789+ ]
790+
791+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BOOL _ =
792+ Right
793+ $ String.joinWith "\n"
794+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
795+ , " x <- Prelude.decodeBool"
796+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
797+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
798+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeBool"
799+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
800+ ]
801+
802+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_STRING _ =
803+ Right
804+ $ String.joinWith "\n"
805+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
806+ , " x <- Prelude.decodeString"
807+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
808+ ]
809+
810+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) =
811+ Right
812+ $ String.joinWith "\n"
813+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
814+ , " x <- Prelude.parseLenDel " <> mkFieldType "parse" tname
815+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
816+ ]
817+
818+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BYTES _ =
819+ Right
820+ $ String.joinWith "\n"
821+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
822+ , " x <- Prelude.decodeBytes"
823+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
824+ ]
825+
826+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT32 _ =
827+ Right
828+ $ String.joinWith "\n"
829+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
830+ , " x <- Prelude.decodeUint32"
831+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
832+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
833+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeUint32"
834+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
835+ ]
836+
837+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_ENUM _ =
838+ Right
839+ $ String.joinWith "\n"
840+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
841+ , " x <- Prelude.parseEnum"
842+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
843+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
844+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.parseEnum"
845+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
846+ ]
847+
848+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED32 _ =
849+ Right
850+ $ String.joinWith "\n"
851+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
852+ , " x <- Prelude.decodeSfixed32"
853+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
854+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
855+ , " x <- Prelude.parseLenDel $ Prelude.decodeSfixed32Array"
856+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
857+ ]
858+
859+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED64 _ =
860+ Right
861+ $ String.joinWith "\n"
862+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
863+ , " x <- Prelude.decodeSfixed64"
864+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
865+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
866+ , " x <- Prelude.parseLenDel $ Prelude.decodeSfixed64Array"
867+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
868+ ]
869+
870+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT32 _ =
871+ Right
872+ $ String.joinWith "\n"
873+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
874+ , " x <- Prelude.decodeSint32"
875+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
876+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
877+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint32"
878+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
879+ ]
880+
881+ go _ FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT64 _ =
882+ Right
883+ $ String.joinWith "\n"
884+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
885+ , " x <- Prelude.decodeSint64"
886+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.snoc x"
887+ , " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
888+ , " x <- Prelude.parseLenDel $ Prelude.manyLength Prelude.decodeSint64"
889+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.flip Prelude.append x"
890+ ]
891+
892+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_DOUBLE _ =
893+ Right
894+ $ String.joinWith "\n"
895+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
896+ , " x <- Prelude.decodeDouble"
897+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
898+ ]
899+
900+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_FLOAT _ =
901+ Right
902+ $ String.joinWith "\n"
903+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
904+ , " x <- Prelude.decodeFloat"
905+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
906+ ]
907+
908+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_INT64 _ =
909+ Right
910+ $ String.joinWith "\n"
911+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
912+ , " x <- Prelude.decodeInt64"
913+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
914+ ]
915+
916+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_UINT64 _ =
917+ Right
918+ $ String.joinWith "\n"
919+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
920+ , " x <- Prelude.decodeUint64"
921+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
922+ ]
923+
924+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_INT32 _ =
925+ Right
926+ $ String.joinWith "\n"
927+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
928+ , " x <- Prelude.decodeInt32"
929+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
930+ ]
931+
932+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_FIXED64 _ =
933+ Right
934+ $ String.joinWith "\n"
935+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
936+ , " x <- Prelude.decodeFixed64"
937+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
938+ ]
939+
940+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_FIXED32 _ =
941+ Right
942+ $ String.joinWith "\n"
943+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
944+ , " x <- Prelude.decodeFixed32"
945+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
946+ ]
947+
948+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_BOOL _ =
949+ Right
950+ $ String.joinWith "\n"
951+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
952+ , " x <- Prelude.decodeBool"
953+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
954+ ]
955+
956+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_STRING _ =
957+ Right
958+ $ String.joinWith "\n"
959+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
960+ , " x <- Prelude.decodeString"
961+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
962+ ]
963+
964+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) =
965+ Right
966+ $ String.joinWith "\n"
967+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
968+ , " x <- Prelude.parseLenDel " <> mkFieldType "parse" tname
969+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ " <> mkFieldType "merge" cname <> " (Prelude.Just (" <> mkConstructor oname <> " x))"
970+ ]
971+ where
972+ cname = String.joinWith "_" $ map capitalize $ nameSpace <> [ oname ]
973+
974+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_BYTES _ =
975+ Right
976+ $ String.joinWith "\n"
977+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
978+ , " x <- Prelude.decodeBytes"
979+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
980+ ]
981+
982+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_UINT32 _ =
983+ Right
984+ $ String.joinWith "\n"
985+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
986+ , " x <- Prelude.decodeUint32"
987+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
988+ ]
989+
990+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_ENUM _ =
991+ Right
992+ $ String.joinWith "\n"
993+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
994+ , " x <- Prelude.parseEnum"
995+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
996+ ]
997+
998+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_SFIXED32 _ =
999+ Right
1000+ $ String.joinWith "\n"
1001+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
1002+ , " x <- Prelude.decodeSfixed32"
1003+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
1004+ ]
1005+
1006+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_SFIXED64 _ =
1007+ Right
1008+ $ String.joinWith "\n"
1009+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
1010+ , " x <- Prelude.decodeSfixed64"
1011+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
1012+ ]
1013+
1014+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_SINT32 _ =
1015+ Right
1016+ $ String.joinWith "\n"
1017+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1018+ , " x <- Prelude.decodeSint32"
1019+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
1020+ ]
1021+
1022+ go (Just oname) _ FieldDescriptorProto_Type_TYPE_SINT64 _ =
1023+ Right
1024+ $ String.joinWith "\n"
1025+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1026+ , " x <- Prelude.decodeSint64"
1027+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> decapitalize oname <> "\") $ \\_ -> Prelude.Just (" <> mkConstructor oname <> " x)"
1028+ ]
1029+
1030+ go _ _ FieldDescriptorProto_Type_TYPE_DOUBLE _ =
1031+ Right
1032+ $ String.joinWith "\n"
1033+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
1034+ , " x <- Prelude.decodeDouble"
1035+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1036+ ]
1037+
1038+ go _ _ FieldDescriptorProto_Type_TYPE_FLOAT _ =
1039+ Right
1040+ $ String.joinWith "\n"
1041+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
1042+ , " x <- Prelude.decodeFloat"
1043+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1044+ ]
1045+
1046+ go _ _ FieldDescriptorProto_Type_TYPE_INT64 _ =
1047+ Right
1048+ $ String.joinWith "\n"
1049+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1050+ , " x <- Prelude.decodeInt64"
1051+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1052+ ]
1053+
1054+ go _ _ FieldDescriptorProto_Type_TYPE_UINT64 _ =
1055+ Right
1056+ $ String.joinWith "\n"
1057+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1058+ , " x <- Prelude.decodeUint64"
1059+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1060+ ]
1061+
1062+ go _ _ FieldDescriptorProto_Type_TYPE_INT32 _ =
1063+ Right
1064+ $ String.joinWith "\n"
1065+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1066+ , " x <- Prelude.decodeInt32"
1067+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1068+ ]
1069+
1070+ go _ _ FieldDescriptorProto_Type_TYPE_FIXED64 _ =
1071+ Right
1072+ $ String.joinWith "\n"
1073+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
1074+ , " x <- Prelude.decodeFixed64"
1075+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1076+ ]
1077+
1078+ go _ _ FieldDescriptorProto_Type_TYPE_FIXED32 _ =
1079+ Right
1080+ $ String.joinWith "\n"
1081+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
1082+ , " x <- Prelude.decodeFixed32"
1083+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1084+ ]
1085+
1086+ go _ _ FieldDescriptorProto_Type_TYPE_BOOL _ =
1087+ Right
1088+ $ String.joinWith "\n"
1089+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1090+ , " x <- Prelude.decodeBool"
1091+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1092+ ]
1093+
1094+ go _ _ FieldDescriptorProto_Type_TYPE_STRING _ =
1095+ Right
1096+ $ String.joinWith "\n"
1097+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
1098+ , " x <- Prelude.decodeString"
1099+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1100+ ]
1101+
1102+ go _ _ FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) =
1103+ Right
1104+ $ String.joinWith "\n"
1105+ -- “merge all input elements if it's a message type field”
1106+ -- https://.google.com/protocol-buffers/docs/proto3#updating
1107+ -- https://protobuf.dev/programming-guides/encoding#optional
1108+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
1109+ , " x <- Prelude.parseLenDel " <> mkFieldType "parse" tname
1110+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ Prelude.Just Prelude.<<< Prelude.maybe x (" <> mkFieldType "merge" tname <> " x)"
1111+ ]
1112+
1113+ go _ _ FieldDescriptorProto_Type_TYPE_MESSAGE _ = Left "Failed genFieldParser missing FieldDescriptorProto type_name"
1114+
1115+ go _ _ FieldDescriptorProto_Type_TYPE_BYTES _ =
1116+ Right
1117+ $ String.joinWith "\n"
1118+ [ " parseField " <> show fnumber <> " Prelude.LenDel = Prelude.label \"" <> name' <> " / \" $ do"
1119+ , " x <- Prelude.decodeBytes"
1120+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1121+ ]
1122+
1123+ go _ _ FieldDescriptorProto_Type_TYPE_UINT32 _ =
1124+ Right
1125+ $ String.joinWith "\n"
1126+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1127+ , " x <- Prelude.decodeUint32"
1128+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1129+ ]
1130+
1131+ go _ _ FieldDescriptorProto_Type_TYPE_ENUM _ =
1132+ Right
1133+ $ String.joinWith "\n"
1134+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1135+ , " x <- Prelude.parseEnum"
1136+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1137+ ]
1138+
1139+ go _ _ FieldDescriptorProto_Type_TYPE_SFIXED32 _ =
1140+ Right
1141+ $ String.joinWith "\n"
1142+ [ " parseField " <> show fnumber <> " Prelude.Bits32 = Prelude.label \"" <> name' <> " / \" $ do"
1143+ , " x <- Prelude.decodeSfixed32"
1144+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1145+ ]
1146+
1147+ go _ _ FieldDescriptorProto_Type_TYPE_SFIXED64 _ =
1148+ Right
1149+ $ String.joinWith "\n"
1150+ [ " parseField " <> show fnumber <> " Prelude.Bits64 = Prelude.label \"" <> name' <> " / \" $ do"
1151+ , " x <- Prelude.decodeSfixed64"
1152+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1153+ ]
1154+
1155+ go _ _ FieldDescriptorProto_Type_TYPE_SINT32 _ =
1156+ Right
1157+ $ String.joinWith "\n"
1158+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1159+ , " x <- Prelude.decodeSint32"
1160+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1161+ ]
1162+
1163+ go _ _ FieldDescriptorProto_Type_TYPE_SINT64 _ =
1164+ Right
1165+ $ String.joinWith "\n"
1166+ [ " parseField " <> show fnumber <> " Prelude.VarInt = Prelude.label \"" <> name' <> " / \" $ do"
1167+ , " x <- Prelude.decodeSint64"
1168+ , " pure $ Prelude.modify (Prelude.Proxy :: Prelude.Proxy \"" <> fname <> "\") $ \\_ -> Prelude.Just x"
1169+ ]
1170+
1171+ go _ _ FieldDescriptorProto_Type_TYPE_GROUP _ = Left "Failed genFieldParser GROUP not supported"
1172+
1173+ genFieldParser _ _ _ = Left "Failed genFieldParser missing FieldDescriptorProto name or number or label or type"
1174+ -- | For embedded message fields, the parser merges multiple instances of the same field,
1175+ -- | https://protobuf.dev/programming-guides/encoding?hl=en#optional
1176+ let
1177+ genFieldRecord :: NameSpace -> FieldDescriptorProto -> Resp (Maybe String)
1178+ genFieldRecord _ ( FieldDescriptorProto
1179+ { name: Just name'
1180+ , label: Just flabel
1181+ , type: Just ftype
1182+ , type_name
1183+ }
1184+ ) = (map <<< map) (\x -> fname <> " :: " <> x) $ ptype flabel ftype type_name
1185+ where
1186+ fname = decapitalize name'
1187+
1188+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_DOUBLE _ = Right $ Just "Array Number"
1189+
1190+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FLOAT _ = Right $ Just "Array Prelude.Float32"
1191+
1192+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT64 _ = Right $ Just "Array Prelude.Int64"
1193+
1194+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT64 _ = Right $ Just "Array Prelude.UInt64"
1195+
1196+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_INT32 _ = Right $ Just "Array Int"
1197+
1198+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED64 _ = Right $ Just "Array Prelude.UInt64"
1199+
1200+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_FIXED32 _ = Right $ Just "Array Prelude.UInt"
1201+
1202+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BOOL _ = Right $ Just "Array Boolean"
1203+
1204+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_STRING _ = Right $ Just "Array String"
1205+
1206+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) = Right $ Just $ "Array " <> mkFieldType "" tname
1207+
1208+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_MESSAGE _ = Left "Failed genFieldRecord missing FieldDescriptorProto type_name"
1209+
1210+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_BYTES _ = Right $ Just "Array Prelude.Bytes"
1211+
1212+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_UINT32 _ = Right $ Just "Array Prelude.UInt"
1213+
1214+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_ENUM (Just tname) = Right $ Just $ "Array " <> mkFieldType "" tname
1215+
1216+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_ENUM _ = Left "Failed genFieldRecord missing FieldDescriptorProto type_name"
1217+
1218+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED32 _ = Right $ Just "Array Int"
1219+
1220+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SFIXED64 _ = Right $ Just "Array Prelude.Int64"
1221+
1222+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT32 _ = Right $ Just "Array Int"
1223+
1224+ ptype FieldDescriptorProto_Label_LABEL_REPEATED FieldDescriptorProto_Type_TYPE_SINT64 _ = Right $ Just "Array Prelude.Int64"
1225+
1226+ ptype _ FieldDescriptorProto_Type_TYPE_DOUBLE _ = Right $ Just "Prelude.Maybe Number"
1227+
1228+ ptype _ FieldDescriptorProto_Type_TYPE_FLOAT _ = Right $ Just "Prelude.Maybe Prelude.Float32"
1229+
1230+ ptype _ FieldDescriptorProto_Type_TYPE_INT64 _ = Right $ Just "Prelude.Maybe Prelude.Int64"
1231+
1232+ ptype _ FieldDescriptorProto_Type_TYPE_UINT64 _ = Right $ Just "Prelude.Maybe Prelude.UInt64"
1233+
1234+ ptype _ FieldDescriptorProto_Type_TYPE_INT32 _ = Right $ Just "Prelude.Maybe Int"
1235+
1236+ ptype _ FieldDescriptorProto_Type_TYPE_FIXED64 _ = Right $ Just "Prelude.Maybe Prelude.UInt64"
1237+
1238+ ptype _ FieldDescriptorProto_Type_TYPE_FIXED32 _ = Right $ Just "Prelude.Maybe Prelude.UInt"
1239+
1240+ ptype _ FieldDescriptorProto_Type_TYPE_BOOL _ = Right $ Just "Prelude.Maybe Boolean"
1241+
1242+ ptype _ FieldDescriptorProto_Type_TYPE_STRING _ = Right $ Just "Prelude.Maybe String"
1243+
1244+ ptype _ FieldDescriptorProto_Type_TYPE_MESSAGE (Just tname) = Right $ Just $ "Prelude.Maybe " <> mkFieldType "" tname
1245+
1246+ ptype _ FieldDescriptorProto_Type_TYPE_MESSAGE _ = Left "Failed genFieldRecord missing FieldDescriptorProto type_name"
1247+
1248+ ptype _ FieldDescriptorProto_Type_TYPE_BYTES _ = Right $ Just "Prelude.Maybe Prelude.Bytes"
1249+
1250+ ptype _ FieldDescriptorProto_Type_TYPE_UINT32 _ = Right $ Just "Prelude.Maybe Prelude.UInt"
1251+
1252+ ptype _ FieldDescriptorProto_Type_TYPE_ENUM (Just tname) = Right $ Just $ "Prelude.Maybe " <> mkFieldType "" tname
1253+
1254+ ptype _ FieldDescriptorProto_Type_TYPE_ENUM _ = Left "Failed genFieldRecord missing FieldDescriptorProto type_name"
1255+
1256+ ptype _ FieldDescriptorProto_Type_TYPE_SFIXED32 _ = Right $ Just "Prelude.Maybe Int"
1257+
1258+ ptype _ FieldDescriptorProto_Type_TYPE_SFIXED64 _ = Right $ Just "Prelude.Maybe Prelude.Int64"
1259+
1260+ ptype _ FieldDescriptorProto_Type_TYPE_SINT32 _ = Right $ Just "Prelude.Maybe Int"
1261+
1262+ ptype _ FieldDescriptorProto_Type_TYPE_SINT64 _ = Right $ Just "Prelude.Maybe Prelude.Int64"
1263+
1264+ ptype _ FieldDescriptorProto_Type_TYPE_GROUP _ = Left "Failed genFieldRecord GROUP not supported"
1265+
1266+ genFieldRecord _ _ = Left "Failed genFieldRecord missing FieldDescriptorProtocol name or number or label or type"
1267+ let
1268+ genMessageExport :: ScopedMsg -> Resp String
1269+ genMessageExport (ScopedMsg namespace _ (DescriptorProto { name: Just msgName, oneof_decl, field })) =
1270+ ( Right
1271+ $ tname
1272+ <> "(..), "
1273+ <> tname
1274+ <> "Row, "
1275+ <> tname
1276+ <> "R, parse"
1277+ <> tname
1278+ <> ", put"
1279+ <> tname
1280+ <> ", default"
1281+ <> tname
1282+ <> ", mk"
1283+ <> tname
1284+ <> ", merge"
1285+ <> tname
1286+ )
1287+ <> (map (String.joinWith "") (traverse genOneofExport oneof_decl_fields))
1288+ where
1289+ oneof_decl_fields = selectOneofFields oneof_decl field
1290+
1291+ tname = mkTypeName $ namespace <> [ msgName ]
1292+
1293+ genOneofExport (Tuple (OneofDescriptorProto { name: Just oname }) _) = Right $ ", " <> mkTypeName (namespace <> [ msgName, oname ]) <> "(..)"
1294+
1295+ genOneofExport _ = Left "Failed genMessageExport missing OneofDescriptorProto name" -- error, no oname
1296+
1297+ genMessageExport _ = Left "Failed genMessageExport missing DescriptorProto name" -- error, no name
1298+ -- | We need to wrap our structural record types in a nominal
1299+ -- | data type so that we can nest records, otherwise we get
1300+ -- | https://github.com/purescript/documentation/blob/master/errors/CycleInTypeSynonym.md
1301+ -- | And so that we can assign instances.
1302+ let
1303+ genMessage :: ScopedMsg -> Resp String
1304+ genMessage (ScopedMsg nameSpace path (DescriptorProto { name: Just msgName, field, oneof_decl })) =
1305+ let
1306+ tname = mkTypeName $ nameSpace <> [ msgName ]
1307+ pname = String.joinWith "." $ packageName <> nameSpace <> [ msgName ]
1308+
1309+ oneof_decl_fields = selectOneofFields oneof_decl field
1310+
1311+ fields_singular :: Array FieldDescriptorProto -- the `field` array restricted to fields which are not in a Oneof,
1312+ -- but including fields which are in an optional synthetic Oneof
1313+ fields_singular =
1314+ catMaybes $ field
1315+ <#> case _ of
1316+ f@(FieldDescriptorProto { proto3_optional: Just true }) -> Just f
1317+ (FieldDescriptorProto { oneof_index: Just _ }) -> Nothing
1318+ f -> Just f
1319+ in
1320+ map (String.joinWith "\n")
1321+ $ sequence
1322+ [ Right $ "\n-- | Message generated by __protobuf__ from `" <> pname <> "`"
1323+ <> fromMaybe "" (commentsLeading path)
1324+ , Right $ "newtype " <> tname <> " = " <> tname <> " " <> tname <> "R"
1325+ , Right $ "type " <> tname <> "Row ="
1326+ , Right " ( "
1327+ <> ( map (String.joinWith "\n , ")
1328+ $ ( (catMaybes <$> traverse (genFieldRecord nameSpace) fields_singular)
1329+ <> (traverse (genFieldRecordOneof (nameSpace <> [ msgName ])) oneof_decl_fields)
1330+ <> Right [ "__unknown_fields :: Array Prelude.UnknownField" ]
1331+ )
1332+ )
1333+ , Right " )"
1334+ , Right $ "type " <> tname <> "R = Record " <> tname <> "Row"
1335+ , Right $ "derive instance generic" <> tname <> " :: Prelude.Generic " <> tname <> " _"
1336+ , Right $ "derive instance newtype" <> tname <> " :: Prelude.Newtype " <> tname <> " _"
1337+ , Right $ "derive instance eq" <> tname <> " :: Prelude.Eq " <> tname
1338+ -- https://github.com/purescript/purescript/issues/2975#issuecomment-313650710
1339+ , Right $ "instance show" <> tname <> " :: Prelude.Show " <> tname <> " where show x = Prelude.genericShow x"
1340+ , Right ""
1341+ , Right $ "put" <> tname <> " :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => " <> tname <> " -> Prelude.PutM m Prelude.Unit"
1342+ , Right $ "put" <> tname <> " (" <> tname <> " r) = do"
1343+ , map (String.joinWith "\n")
1344+ $ (traverse (genFieldPut nameSpace) fields_singular)
1345+ <> (sequence $ map (genOneofPut (nameSpace <> [ msgName ])) oneof_decl_fields)
1346+ , Right " Prelude.foldRecM (\\_ x -> Prelude.putFieldUnknown x) unit r.__unknown_fields"
1347+ , Right ""
1348+ , Right $ "parse" <> tname <> " :: forall m. Prelude.MonadEffect m => Prelude.MonadRec m => Prelude.ByteLength -> Prelude.ParserT Prelude.DataView m " <> tname
1349+ , Right $ "parse" <> tname <> " length = Prelude.label \"" <> msgName <> " / \" $"
1350+ , Right $ " Prelude.parseMessage " <> tname <> " default" <> tname <> " parseField length"
1351+ , Right " where"
1352+ , Right " parseField"
1353+ , Right " :: Prelude.FieldNumberInt"
1354+ , Right " -> Prelude.WireType"
1355+ , Right $ " -> Prelude.ParserT Prelude.DataView m (Prelude.Builder " <> tname <> "R " <> tname <> "R)"
1356+ , map (String.joinWith "\n") (traverse (genFieldParser (nameSpace <> [ msgName ]) oneof_decl) field)
1357+ , Right " parseField fieldNumber wireType = Prelude.parseFieldUnknown fieldNumber wireType"
1358+ , Right ""
1359+ , Right $ "default" <> tname <> " :: " <> tname <> "R"
1360+ , Right $ "default" <> tname <> " ="
1361+ , Right " { "
1362+ <> ( map (String.joinWith "\n , ")
1363+ ( (traverse genFieldDefault fields_singular)
1364+ <> (traverse genFieldDefaultOneof oneof_decl_fields)
1365+ <> Right [ "__unknown_fields: []" ]
1366+ )
1367+ )
1368+ , Right " }"
1369+ , Right ""
1370+ , Right $ "mk" <> tname <> " :: forall r1 r3. Prelude.Union r1 " <> tname <> "Row r3 => Prelude.Nub r3 " <> tname <> "Row => Record r1 -> " <> tname
1371+ , Right $ "mk" <> tname <> " r = " <> tname <> " $ Prelude.merge r default" <> tname
1372+ , map (String.joinWith "\n")
1373+ $ (sequence $ map (genTypeOneof (nameSpace <> [ msgName ])) oneof_decl_fields)
1374+ <> (sequence $ map (genOneofMerge (nameSpace <> [ msgName ])) oneof_decl_fields)
1375+ , Right $ "merge" <> tname <> " :: " <> tname <> " -> " <> tname <> " -> " <> tname
1376+ , Right $ "merge" <> tname <> " (" <> tname <> " l) (" <> tname <> " r) = " <> tname
1377+ , Right " { "
1378+ <> ( map (String.joinWith "\n , ")
1379+ ( (traverse genFieldMerge fields_singular)
1380+ <> (traverse (genFieldMergeOneof (nameSpace <> [ msgName ])) oneof_decl_fields)
1381+ <> Right [ "__unknown_fields: r.__unknown_fields <> l.__unknown_fields" ]
1382+ )
1383+ )
1384+ , Right " }"
1385+ , Right ""
1386+ ]
1387+
1388+ genMessage _ = Left "Failed genMessage no DescriptorProto name"
1389+
1390+ genEnum :: ScopedEnum -> Resp String
1391+ genEnum (ScopedEnum namespace path (EnumDescriptorProto { name: Just eName, value })) = do
1392+ let
1393+ tname = mkTypeName $ namespace <> [ eName ]
1394+ pname = String.joinWith "." $ packageName <> namespace <> [ eName ]
1395+ enumConstruct <- traverse genEnumConstruct value
1396+ enumTo <- traverse genEnumTo value
1397+ enumFrom <- traverse genEnumFrom value
1398+ -- Protobuf Enumerations “There must be a zero value, so that we can use 0 as a numeric default value.”
1399+ -- https://protobuf.dev/programming-guides/proto3#enum
1400+ -- But that isn't actually true?
1401+ -- If there is no enum value with number=0, then we just take the first enum value.
1402+ valueZero <- case Array.find (\x -> maybe false (eq 0) (unwrap x).number) value of
1403+ Just (EnumValueDescriptorProto {name: Just name}) -> Right $ mkEnumName name
1404+ _ -> case Array.head value of
1405+ Just (EnumValueDescriptorProto {name: Just name}) -> Right $ mkEnumName name
1406+ _ -> Left $ "No enum valueZero\n" <> show eName
1407+ Right $ String.joinWith "\n"
1408+ $ [ "\n-- | Enum generated by __protobuf__ from `" <> pname <> "`"
1409+ <> fromMaybe "" (commentsLeading path)
1410+ , "data " <> tname
1411+ , " = " <> String.joinWith "\n | " enumConstruct
1412+ , "derive instance generic" <> tname <> " :: Prelude.Generic " <> tname <> " _"
1413+ , "derive instance eq" <> tname <> " :: Prelude.Eq " <> tname
1414+ , "instance show" <> tname <> " :: Prelude.Show " <> tname <> " where show = Prelude.genericShow"
1415+ , "instance ord" <> tname <> " :: Prelude.Ord " <> tname <> " where compare = Prelude.genericCompare"
1416+ , "instance bounded" <> tname <> " :: Prelude.Bounded " <> tname
1417+ , " where"
1418+ , " bottom = Prelude.genericBottom"
1419+ , " top = Prelude.genericTop"
1420+ , "instance enum" <> tname <> " :: Prelude.Enum " <> tname
1421+ , " where"
1422+ , " succ = Prelude.genericSucc"
1423+ , " pred = Prelude.genericPred"
1424+ , "instance boundedenum" <> tname <> " :: Prelude.BoundedEnum " <> tname
1425+ , " where"
1426+ , " cardinality = Prelude.genericCardinality"
1427+ ]
1428+ <> enumTo
1429+ <> [ " toEnum _ = Prelude.Nothing" ]
1430+ <> enumFrom
1431+ <>
1432+ [ "instance default" <> tname <> " :: Prelude.Default " <> tname
1433+ , " where"
1434+ , " default = " <> valueZero
1435+ , " isDefault = eq " <> valueZero
1436+ ]
1437+ where
1438+
1439+ genEnumConstruct (EnumValueDescriptorProto { name: Just name }) = Right $ mkEnumName name
1440+
1441+ genEnumConstruct arg = Left $ "Failed genEnumConstruct\n" <> show arg
1442+
1443+ genEnumTo (EnumValueDescriptorProto { name: Just name, number: Just number }) = Right $ " toEnum (" <> show number <> ") = Prelude.Just " <> mkEnumName name
1444+
1445+ genEnumTo arg = Left $ "Failed genEnumTo\n" <> show arg
1446+
1447+ genEnumFrom (EnumValueDescriptorProto { name: Just name, number: Just number }) = Right $ " fromEnum " <> mkEnumName name <> " = (" <> show number <> ")"
1448+
1449+ genEnumFrom arg = Left $ "Failed genEnumFrom\n" <> show arg
1450+
1451+ mkEnumName name = mkTypeName $ namespace <> [ eName ] <> [ name ]
1452+
1453+ genEnum _ = Left $ "Failed genEnum no EnumDescriptorProto name"
1454+
1455+
1456+ contents <-
1457+ sequence
1458+ [ Right $ "-- | Generated by __protobuf__ from file `" <> fromMaybe "<unknown>" fileName <> "`"
1459+ , Right $ "module " <> (String.joinWith "." ((map mkModuleName packageName))) <> "." <> mkModuleName baseName
1460+ , Right "( " <> (map (String.joinWith "\n, ") ((traverse genMessageExport messages) <> (traverse genEnumExport enums)))
1461+ , Right
1462+ """)
1463+where
1464+import Protobuf.Internal.Prelude
1465+import Protobuf.Internal.Prelude as Prelude
1466+"""
1467+ ]
1468+ <> (traverse genImport dependency)
1469+ <> Right [ "\n" ]
1470+ <> (traverse genMessage messages)
1471+ <> (traverse genEnum enums)
1472+ <> Right [ "\n" ]
1473+ Right
1474+ $ CodeGeneratorResponse_File
1475+ { name: Just fileNameOut
1476+ , insertion_point: Nothing
1477+ , content: Just $ String.joinWith "\n" contents
1478+ , generated_code_info: Nothing
1479+ , __unknown_fields: []
1480+ }
1481+ where
1482+ mkTypeName :: Array String -> String
1483+ mkTypeName ns = String.joinWith "_" $ map capitalize ns
1484+
1485+ capitalize :: String -> String
1486+ capitalize s = String.toUpper (String.take 1 s) <> String.drop 1 s
1487+
1488+ decapitalize :: String -> String
1489+ decapitalize s = String.toLower (String.take 1 s) <> String.drop 1 s
1490+
1491+ -- | underscores and primes are not allowed in module names
1492+ -- | https://github.com/purescript/documentation/blob/master/errors/ErrorParsingModule.md
1493+ mkModuleName :: String -> String
1494+ mkModuleName n = capitalize $ illegalDelete $ underscoreToUpper n
1495+ where
1496+ underscoreToUpper :: String -> String
1497+ underscoreToUpper = case String.Regex.regex "_([a-z])" flag of
1498+ Left _ -> identity
1499+ Right patt -> String.Regex.replace' patt toUpper
1500+
1501+ toUpper _ [ Just x ] = String.toUpper x
1502+
1503+ toUpper x _ = x
1504+
1505+ flag =
1506+ String.Regex.Flags.RegexFlags
1507+ { global: true
1508+ , ignoreCase: false
1509+ , multiline: false
1510+ , sticky: false
1511+ , unicode: true
1512+ , dotAll: true
1513+ }
1514+
1515+ illegalDelete :: String -> String
1516+ illegalDelete =
1517+ String.replaceAll (String.Pattern.Pattern "_") (String.Pattern.Replacement "")
1518+ <<< String.replaceAll (String.Pattern.Pattern "'") (String.Pattern.Replacement "1")
1519+
1520+ -- | Pull all of the enums out of of the nested messages and bring them
1521+ -- | to the top, with their namespace.
1522+ flattenEnums :: NameSpace -> Path -> Array DescriptorProto -> Array (Resp ScopedEnum)
1523+ flattenEnums namespace path msgarray = concatMapWithIndex go msgarray
1524+ where
1525+ go :: Int -> DescriptorProto -> Array (Resp ScopedEnum)
1526+ go i (DescriptorProto { name: Just msgName, nested_type, enum_type: msgEnums }) =
1527+ (Right <$> mapWithIndex (\i' e -> ScopedEnum (namespace <> [ msgName ]) (path <> [i,4,i']) e) msgEnums)
1528+ <> flattenEnums (namespace <> [ msgName ]) (path <> [i,3]) nested_type
1529+
1530+ go _ _ = [ Left "Failed flattenEnums missing DescriptorProto name" ]
1531+
1532+ -- The `oneof_decl` array annotated with which fields belong to it,
1533+ -- excluding optional synthetic Oneofs.
1534+ selectOneofFields :: Array OneofDescriptorProto -> Array FieldDescriptorProto -> Array (Tuple OneofDescriptorProto (Array FieldDescriptorProto))
1535+ selectOneofFields oneof_decl field =
1536+ catMaybes
1537+ $ flip Array.mapWithIndex oneof_decl \i o -> do
1538+ let
1539+ fields =
1540+ flip Array.filter field
1541+ $ case _ of
1542+ (FieldDescriptorProto { oneof_index: Just j })
1543+ | i == j -> true
1544+ _ -> false
1545+ case fields of
1546+ [ FieldDescriptorProto { proto3_optional: Just true } ] -> Nothing
1547+ _ -> Just $ Tuple o fields
1548+
1549+ genEnumExport :: ScopedEnum -> Resp String
1550+ genEnumExport (ScopedEnum namespace _ (EnumDescriptorProto { name: Just eName })) = Right $ (mkTypeName $ namespace <> [ eName ]) <> "(..)"
1551+
1552+ genEnumExport _ = Left "Failed genEnumExport missing EnumDescriptorProto name"
1553+
1554+ -- | Pull all of the nested messages out of of the messages and bring them
1555+ -- | to the top, with their namespace.
1556+ flattenMessages :: NameSpace -> Path -> Array DescriptorProto -> Array (Resp ScopedMsg)
1557+ flattenMessages namespace path msgarray = concatMapWithIndex go msgarray
1558+ where
1559+ go :: Int -> DescriptorProto -> Array (Resp ScopedMsg)
1560+ go i (DescriptorProto r@{ name: Just msgName, nested_type }) =
1561+ [ Right $ ScopedMsg namespace (path <> [i]) (DescriptorProto r) ]
1562+ <> flattenMessages (namespace <> [ msgName ]) (path <> [i,3]) nested_type
1563+
1564+ go _ _ = [ Left "Failed flattenMessages missing DescriptorProto name" ]
1565+
1566+ -- https://protobuf.dev/programming-guides/proto3#oneof_features
1567+ -- “A oneof cannot be repeated.”
1568+ -- See also genFieldRecord
1569+ genFieldRecordOneof :: NameSpace -> (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) -> Resp String
1570+ genFieldRecordOneof nameSpace (Tuple (OneofDescriptorProto { name: Just fname }) _) =
1571+ Right
1572+ $ decapitalize fname
1573+ <> " :: Prelude.Maybe "
1574+ <> (String.joinWith "_" $ map capitalize $ nameSpace <> [ fname ])
1575+
1576+ genFieldRecordOneof _ _ = Left "Failed genFieldRecordOneof missing OneofDescriptorProto name"
1577+
1578+ genFieldDefault :: FieldDescriptorProto -> Resp String
1579+ genFieldDefault ( FieldDescriptorProto
1580+ { name: Just name'
1581+ , label: Just flabel
1582+ }
1583+ ) = Right $ fname <> ": " <> dtype flabel
1584+ where
1585+ fname = decapitalize name'
1586+
1587+ dtype FieldDescriptorProto_Label_LABEL_REPEATED = "[]"
1588+
1589+ dtype _ = "Prelude.Nothing"
1590+
1591+ genFieldDefault _ = Left "Failed genFieldDefault missing FieldDescriptorProto name or label"
1592+
1593+ -- https://protobuf.dev/programming-guides/proto3#oneof_features
1594+ -- “A oneof cannot be repeated.”
1595+ genFieldDefaultOneof :: (Tuple OneofDescriptorProto (Array FieldDescriptorProto)) -> Resp String
1596+ genFieldDefaultOneof (Tuple (OneofDescriptorProto { name: Just oname }) _) = Right $ decapitalize oname <> ": Prelude.Nothing"
1597+
1598+ genFieldDefaultOneof _ = Left "Failed genFieldDefaultOneof missing name"
1599+
1600+concatMapWithIndex :: forall a b. (Int -> a -> Array b) -> Array a -> Array b
1601+concatMapWithIndex f xs = concat $ mapWithIndex f xs
plugin/src/descriptor.Google.Protobuf.pursnew file+3283

This diff is too big to show here.

plugin/src/plugin.Google.Protobuf.Compiler.pursnew file+340

This diff is too big to show here.

plugin/test/README.mdnew file+1

This diff is too big to show here.

plugin/test/Test/Bench.pursnew file+68

This diff is too big to show here.

plugin/test/Test/Main.pursnew file+140

This diff is too big to show here.

test/generated/README.md → plugin/test/Test/generated/README.mdrenamed

The content is the same.

plugin/test/Test/generated/empty.Google.Protobuf.pursnew file+61

This diff is too big to show here.

plugin/test/Test/generated/msg1.Pack.pursnew file+188

This diff is too big to show here.

plugin/test/Test/generated/msg2.Pack.pursnew file+227

This diff is too big to show here.

plugin/test/Test/generated/msg3.Pack3.pursnew file+120

This diff is too big to show here.

plugin/test/Test/generated/msg4.Pack4.pursnew file+212

This diff is too big to show here.

plugin/test/Test/generated/msg5.Pack5.pursnew file+232

This diff is too big to show here.

plugin/test/Test/generated/msg5_1.Pack5.pursnew file+58

This diff is too big to show here.

plugin/test/Test/generated/msg6.Pack6.pursnew file+64

This diff is too big to show here.

plugin/test/Test/generated/msg7.Pack7.pursnew file+58

This diff is too big to show here.

test/msg1.proto → plugin/test/msg1.protorenamed+1−1

This diff is too big to show here.

test/msg2.proto → plugin/test/msg2.protorenamed+1−1

This diff is too big to show here.

plugin/test/msg3.protonew file+16

This diff is too big to show here.

test/msg4.proto → plugin/test/msg4.protorenamed−5

This diff is too big to show here.

test/msg5.proto → plugin/test/msg5.protorenamed

The content is the same.

plugin/test/msg5_1.protonew file+11

This diff is too big to show here.

plugin/test/msg6.protonew file+15

This diff is too big to show here.

plugin/test/msg7.protonew file+13

This diff is too big to show here.

psc-package.jsondeleted−22

This diff is too big to show here.

shell.nixdeleted−37

This diff is too big to show here.

spago.dhalldeleted−20

This diff is too big to show here.

src/Protobuf/Common.pursdeleted−62

This diff is too big to show here.

src/Protobuf/Decode.pursdeleted−156

This diff is too big to show here.

src/Protobuf/Decode32.pursdeleted−83

This diff is too big to show here.

src/Protobuf/Decode64.pursdeleted−116

This diff is too big to show here.

src/Protobuf/Encode.pursdeleted−247

This diff is too big to show here.

src/Protobuf/Encode32.pursdeleted−71

This diff is too big to show here.

src/Protobuf/Encode64.pursdeleted−92

This diff is too big to show here.

src/Protobuf/Runtime.pursdeleted−196

This diff is too big to show here.

src/ProtocPlugin/Main.pursdeleted−994

This diff is too big to show here.

src/ProtocPlugin/descriptor.Google.Protobuf.pursdeleted−1659

This diff is too big to show here.

src/ProtocPlugin/plugin.Google.Protobuf.Compiler.pursdeleted−214

This diff is too big to show here.

test.dhalldeleted−23

This diff is too big to show here.

test/Main.pursdeleted−116

This diff is too big to show here.

test/generated/.gitignoredeleted−1

This diff is too big to show here.

test/msg3.protodeleted−16

This diff is too big to show here.