diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0e8e90f3..5cb1e561 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,14 +19,14 @@ Building and testing this project requires `node`, `npm`, `protoc`, `make`, `git`, and `go`. - `go` is required for the Twirp transport client compatibility test suite -- `protoc` is required for test fixtures +- `protoc` is required for compiling .proto files. The entire project can be built by running `make`, but if you do not have all required tooling installed, you can still build all of the TypeScript packages. Not all packages are public, or even JavaScript projects. There are also examples, -benchmarks and fixtures in the `packages/` directory. They can be built with their +benchmarks and Protobuf files in the `packages/` directory. They can be built with their respective Makefiles. @@ -92,21 +92,21 @@ run the plugin during testing without invoking protoc. All protobuf plugins work with `CodeGeneratorRequest` and `CodeGeneratorResponse` messages (defined in `google/protobuf/compiler/plugin.proto`). -The protocol buffer compiler parses .proto files and creates a `CodeGeneratorRequest`, -then passes it to a plugin. Because invoking protoc during testing is difficult, -we generate a `FileDescriptorSet` in `packages/test-fixtures/all.descriptorset` -ahead of time. The `FileDescriptorSet` contains all information necessary to -create the `CodeGeneratorRequest`s we need for testing the plugin. +A protocol buffer compiler parses .proto files and creates a `CodeGeneratorRequest`, +then passes it to a plugin. Because invoking a compiler during testing is difficult, +we generate a `FileDescriptorSet` ahead of time. The `FileDescriptorSet` contains all +information necessary to create the `CodeGeneratorRequest`s we need for testing +the plugin. `packages/plugin` and `packages/plugin-framework` are both tested using the -`FileDescriptorSet`. In `spec/helpers.ts`, the function `getFixtureCodeGeneratorRequest` -can be used to create a `CodeGeneratorRequest` from the fixture file descriptors. +`FileDescriptorSet`. In `spec/helpers.ts`, the function `getCodeGeneratorRequest` +can be used to create a `CodeGeneratorRequest` from the file descriptors. The plugin itself has only very basic test coverage. We generate TypeScript -(in memory) for all .proto files in `packages/test-fixture` and compile the +(in memory) for all .proto files in `packages/proto` and compile the generated code using the TypeScript Compiler API, checking for static errors. -Adding a feature or fixing a bug in the plugin can cumbersome. Instead of +Adding a feature or fixing a bug in the plugin can be cumbersome. Instead of building the plugin and running it with protoc, you can let a test case spit out the generated code for you. `spec/protobufts-plugin.spec.ts` contains the necessary code to do this (commented out). If you enable the code, you can simply diff --git a/MANUAL.md b/MANUAL.md index 8d354fb4..46635e95 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -1034,7 +1034,7 @@ operations. and methods and will add them to the reflection information. For example, consider the following service definition in -[service-annotated.proto](./packages/test-fixtures/service-annotated.proto): +[service-annotated.proto](./packages/proto/service-annotated.proto): ```proto // import the proto that extends google.protobuf.MethodOptions @@ -1078,7 +1078,7 @@ console.log(AnnotatedService.options); ``` Because the option "google.api.http" is actually a message -(see [annotations.proto](./packages/test-fixtures/google/api/annotations.proto)), +(see [annotations.proto](./packages/proto/google/api/annotations.proto)), you can parse the message with this convenience method: diff --git a/README.md b/README.md index a47e05c3..38d3aef1 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ official [language guide](https://developers.google.com/protocol-buffers/docs/ov - `npm install @protobuf-ts/plugin` > installs the plugin and the compiler "protoc" -- download the example file [msg-readme.proto](https://raw.githubusercontent.com/timostamm/protobuf-ts/master/packages/test-fixtures/msg-readme.proto) and place it into a `protos/` directory +- download the example file [msg-readme.proto](https://raw.githubusercontent.com/timostamm/protobuf-ts/main/packages/proto/msg-readme.proto) and place it into a `protos/` directory - `npx protoc --ts_out . --proto_path protos protos/msg-readme.proto` > generates msg-readme.ts @@ -95,7 +95,7 @@ Read the [MANUAL](MANUAL.md) to learn more. - The files [plugin.ts](./packages/plugin-framework/src/google/protobuf/compiler/plugin.ts) and [descriptor.ts](./packages/plugin-framework/src/google/protobuf/descriptor.ts) are Copyright 2008 Google Inc., licensed under BSD-3-Clause - The [gRPC status codes](./packages/grpcweb-transport/src/goog-grpc-status-code.ts) are Copyright 2016 gRPC authors, licensed under Apache-2.0. - The [Twirp error codes](./packages/twirp-transport/src/twitch-twirp-error-code.ts) are Copyright 2018 Twitch Interactive, Inc., licensed under Apache-2.0. -- The proto files in [test-fixtures/google](./packages/test-fixtures/google) and [test-conformance/proto](./packages/test-conformance/proto) are Copyright Google Inc. / Google LLC, licensed under Apache-2.0 / BSD-3-Clause. +- The proto files in [proto/google](./packages/proto/google) and [test-conformance/proto](./packages/test-conformance/proto) are Copyright Google Inc. / Google LLC, licensed under Apache-2.0 / BSD-3-Clause. - All other files are licensed under Apache-2.0, see [LICENSE](./LICENSE). diff --git a/packages/README.md b/packages/README.md index c6539a9f..eef13896 100644 --- a/packages/README.md +++ b/packages/README.md @@ -32,5 +32,5 @@ - [example-node-grpc-transport-client](./example-node-grpc-transport-client) - a gRPC client using @protobuf-ts/grpc-transport, running in Node.JS - [example-node-twirp-transport-client](./example-node-twirp-transport-client) - a Twirp client using @protobuf-ts/twirp-transport, running in Node.JS - [example-browser-grpcweb-transport-client](example-browser-grpcweb-transport-client) - a gRPC-web client using @protobuf-ts/grpcweb-transport, running in the web browser -- [test-fixtures](./test-fixtures) - example .proto files and test fixtures +- [proto](./proto) - example .proto files - [benchmarks](./benchmarks) - code size and performance benchmarks diff --git a/packages/benchmarks/Makefile b/packages/benchmarks/Makefile index 1add33da..7d803478 100644 --- a/packages/benchmarks/Makefile +++ b/packages/benchmarks/Makefile @@ -1,6 +1,6 @@ .PHONY: default perf code-size testees-generate testees-webpack -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto PROTOS := $(shell find ${PROTO_PATH} -name '*.proto') TESTEES := $(shell find ./testees -type d -maxdepth 1 -mindepth 1) diff --git a/packages/benchmarks/testees/google-protobuf/Makefile b/packages/benchmarks/testees/google-protobuf/Makefile index 0712a073..6290c382 100644 --- a/packages/benchmarks/testees/google-protobuf/Makefile +++ b/packages/benchmarks/testees/google-protobuf/Makefile @@ -1,6 +1,6 @@ .PHONY: generate webpack tsc -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "import_style=commonjs,binary" diff --git a/packages/benchmarks/testees/pbf/Makefile b/packages/benchmarks/testees/pbf/Makefile index c65cb9ad..741cc8f6 100644 --- a/packages/benchmarks/testees/pbf/Makefile +++ b/packages/benchmarks/testees/pbf/Makefile @@ -1,6 +1,6 @@ .PHONY: generate webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "" diff --git a/packages/benchmarks/testees/protobuf-ts.size-bigint/Makefile b/packages/benchmarks/testees/protobuf-ts.size-bigint/Makefile index e113e0f7..b74c7a28 100644 --- a/packages/benchmarks/testees/protobuf-ts.size-bigint/Makefile +++ b/packages/benchmarks/testees/protobuf-ts.size-bigint/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "force_optimize_code_size,long_type_bigint" diff --git a/packages/benchmarks/testees/protobuf-ts.size/Makefile b/packages/benchmarks/testees/protobuf-ts.size/Makefile index e12d4cdf..f5eb2aef 100644 --- a/packages/benchmarks/testees/protobuf-ts.size/Makefile +++ b/packages/benchmarks/testees/protobuf-ts.size/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "force_optimize_code_size,long_type_string" diff --git a/packages/benchmarks/testees/protobuf-ts.speed-bigint/Makefile b/packages/benchmarks/testees/protobuf-ts.speed-bigint/Makefile index cb48cfbd..dc583de9 100644 --- a/packages/benchmarks/testees/protobuf-ts.speed-bigint/Makefile +++ b/packages/benchmarks/testees/protobuf-ts.speed-bigint/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "force_optimize_speed,long_type_bigint" diff --git a/packages/benchmarks/testees/protobuf-ts.speed/Makefile b/packages/benchmarks/testees/protobuf-ts.speed/Makefile index e3ec3d8a..e84708b1 100644 --- a/packages/benchmarks/testees/protobuf-ts.speed/Makefile +++ b/packages/benchmarks/testees/protobuf-ts.speed/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "force_optimize_speed,long_type_string" diff --git a/packages/benchmarks/testees/protobufjs/Makefile b/packages/benchmarks/testees/protobufjs/Makefile index a54ef553..34a21d10 100644 --- a/packages/benchmarks/testees/protobufjs/Makefile +++ b/packages/benchmarks/testees/protobufjs/Makefile @@ -1,6 +1,6 @@ .PHONY: generate webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "" diff --git a/packages/benchmarks/testees/ts-proto.default/Makefile b/packages/benchmarks/testees/ts-proto.default/Makefile index 02d33931..cff9246e 100644 --- a/packages/benchmarks/testees/ts-proto.default/Makefile +++ b/packages/benchmarks/testees/ts-proto.default/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "forceLong=string" diff --git a/packages/benchmarks/testees/ts-proto.no-json/Makefile b/packages/benchmarks/testees/ts-proto.no-json/Makefile index 71c4be28..16bc9e12 100644 --- a/packages/benchmarks/testees/ts-proto.no-json/Makefile +++ b/packages/benchmarks/testees/ts-proto.no-json/Makefile @@ -1,6 +1,6 @@ .PHONY: generate tsc webpack -PROTO_PATH = ../../../test-fixtures +PROTO_PATH = ../../../proto PROTOS := ${PROTO_PATH}/google/protobuf/descriptor.proto OPTIONS := "outputJsonMethods=false,forceLong=string" diff --git a/packages/example-go-twirp-server/Makefile b/packages/example-go-twirp-server/Makefile index cb727085..3e2f89fd 100644 --- a/packages/example-go-twirp-server/Makefile +++ b/packages/example-go-twirp-server/Makefile @@ -1,5 +1,5 @@ .PHONY: server install generate -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto server: diff --git a/packages/example-node-twirp-transport-client/Makefile b/packages/example-node-twirp-transport-client/Makefile index 45ae5da9..80072bee 100644 --- a/packages/example-node-twirp-transport-client/Makefile +++ b/packages/example-node-twirp-transport-client/Makefile @@ -1,5 +1,5 @@ .PHONY: default npm-install generate run-client -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto default: npm-install generate run-client diff --git a/packages/plugin-framework/.gitignore b/packages/plugin-framework/.gitignore index 08260d17..a1e69cd3 100644 --- a/packages/plugin-framework/.gitignore +++ b/packages/plugin-framework/.gitignore @@ -4,3 +4,4 @@ /build/**/*.js /build/**/*.ts.map /build/**/*.js.map +*.codegenreq diff --git a/packages/plugin-framework/Makefile b/packages/plugin-framework/Makefile index 88c1c2e2..ae742de1 100644 --- a/packages/plugin-framework/Makefile +++ b/packages/plugin-framework/Makefile @@ -1,5 +1,5 @@ .PHONY: default build clean test -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto PROTOS := $(shell find ${PROTO_PATH} -name '*.proto') SPECS := $(shell find spec -name '*.spec.ts') @@ -16,10 +16,10 @@ build: clean: @find build \( -name '*.js' -or -name '*.map' -or -name '*.ts' \) -delete; @find build -type d ! -path build -delete - @find ../test-fixtures \( -name '*.codegenreq' -or -name '*.descriptorset' \) -delete; + @rm -f all.codegenreq @echo "'${@}' done" -test: ${PROTO_PATH}/all.descriptorset +test: @echo "'${@}' ..." @./node_modules/.bin/ts-node \ --project tsconfig.test.json \ @@ -38,18 +38,7 @@ bootstrap: google/protobuf/descriptor.proto \ google/protobuf/compiler/plugin.proto -${PROTO_PATH}/all.descriptorset: $(PROTOS) - @protoc \ - --descriptor_set_out=${@} \ - --proto_path=${PROTO_PATH} \ - --proto_path ../plugin/ \ - --include_source_info \ - --include_imports \ - --experimental_allow_proto3_optional \ - $^ - @echo "'${@}' done" - -${PROTO_PATH}/all.codegenreq: $(PROTOS) +all.codegenreq: $(PROTOS) @protoc \ --dump_out=. \ --plugin=./bin/protoc-gen-dump \ diff --git a/packages/plugin-framework/karma.conf.js b/packages/plugin-framework/karma.conf.js index 5cf2ec89..21205dfe 100644 --- a/packages/plugin-framework/karma.conf.js +++ b/packages/plugin-framework/karma.conf.js @@ -10,7 +10,6 @@ module.exports = function (config) { files: [ "spec/**/*.ts", "src/**/*.ts", - "../test-fixtures/*.ts", ], exclude: [ "spec/support/reporter.ts", diff --git a/packages/plugin/.gitignore b/packages/plugin/.gitignore index 08260d17..eb1e9519 100644 --- a/packages/plugin/.gitignore +++ b/packages/plugin/.gitignore @@ -4,3 +4,6 @@ /build/**/*.js /build/**/*.ts.map /build/**/*.js.map +*.descriptorset +*.codegenreq + diff --git a/packages/plugin/Makefile b/packages/plugin/Makefile index 21c687de..d0367ffb 100644 --- a/packages/plugin/Makefile +++ b/packages/plugin/Makefile @@ -1,5 +1,5 @@ .PHONY: default build clean test -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto PROTOS := $(shell find ${PROTO_PATH} -name '*.proto') SPECS := $(shell find spec -name '*.spec.ts') @@ -13,17 +13,18 @@ build: clean: @find build \( -name '*.js' -or -name '*.map' -or -name '*.ts' \) -delete; @find build -type d ! -path build -delete - @find ../test-fixtures \( -name '*.codegenreq' -or -name '*.descriptorset' \) -delete; + @rm -f all.descriptorset + @rm -f all.codegenreq @echo "'${@}' done" -test: ${PROTO_PATH}/all.descriptorset +test: all.descriptorset @./node_modules/.bin/ts-node \ --project tsconfig.test.json \ --require tsconfig-paths/register \ ./node_modules/.bin/jasmine --helper="spec/support/reporter.ts" \ $(SPECS) -${PROTO_PATH}/all.descriptorset: $(PROTOS) +all.descriptorset: $(PROTOS) @protoc \ --descriptor_set_out ${@} \ --proto_path ${PROTO_PATH} \ @@ -34,7 +35,7 @@ ${PROTO_PATH}/all.descriptorset: $(PROTOS) $^ @echo "'${@}' done" -${PROTO_PATH}/all.codegenreq: $(PROTOS) +all.codegenreq: $(PROTOS) @protoc \ --dump_out=. \ --plugin=./bin/protoc-gen-dump \ diff --git a/packages/plugin/spec/interpreter.spec.ts b/packages/plugin/spec/interpreter.spec.ts index dcb9434c..de5d19d5 100644 --- a/packages/plugin/spec/interpreter.spec.ts +++ b/packages/plugin/spec/interpreter.spec.ts @@ -1,4 +1,4 @@ -import {getFixtureFileDescriptor} from "./support/helpers"; +import {getFileDescriptor} from "./support/helpers"; import {DescriptorRegistry} from "@protobuf-ts/plugin-framework"; import {Interpreter} from "../src/interpreter"; import * as rt from "@protobuf-ts/runtime"; @@ -8,7 +8,7 @@ describe('interpreter', function () { it('recognizes field option jstype', function () { [rt.LongType.NUMBER, rt.LongType.STRING, rt.LongType.BIGINT].forEach(normalLongType => { - const registry = DescriptorRegistry.createFrom(getFixtureFileDescriptor("msg-longs.proto")); + const registry = DescriptorRegistry.createFrom(getFileDescriptor("msg-longs.proto")); const interpreter = new Interpreter(registry, { normalLongType, synthesizeEnumZeroValue: 'UNSPECIFIED$', diff --git a/packages/plugin/spec/protobufts-plugin-long.spec.ts b/packages/plugin/spec/protobufts-plugin-long.spec.ts index ae3478a8..cac19d2d 100644 --- a/packages/plugin/spec/protobufts-plugin-long.spec.ts +++ b/packages/plugin/spec/protobufts-plugin-long.spec.ts @@ -1,4 +1,4 @@ -import {getFixtureCodeGeneratorRequest} from "./support/helpers"; +import {getCodeGeneratorRequest} from "./support/helpers"; import {ProtobuftsPlugin} from "../src/protobufts-plugin"; import {GeneratedFile} from "@protobuf-ts/plugin-framework/src"; @@ -14,7 +14,7 @@ const stringSnippets = [ // BinaryWriter '/* fixed64 fixed64_field_min_str = 11 [jstype = JS_STRING]; */', 'if (message.fixed64FieldMinStr !== "0")', -]; +]; const bigintSnippets = [ // Message @@ -47,7 +47,7 @@ const numberSnippets = [ describe('Generated code for long type', function () { describe('Default to string', () => { let file: string; - + beforeAll(() => { file = generateTypescript('long_type_string').getContent(); }); @@ -77,7 +77,7 @@ describe('Generated code for long type', function () { describe('Default to bigint', () => { let file: string; - + beforeAll(() => { file = generateTypescript('long_type_bigint').getContent(); }); @@ -103,11 +103,11 @@ describe('Generated code for long type', function () { expectContainAll(file, bigintSnippets); expectContainAll(file, numberSnippets); }); - }); + }); describe('Default to number', () => { let file: string; - + beforeAll(() => { file = generateTypescript('long_type_number').getContent(); }); @@ -133,14 +133,14 @@ describe('Generated code for long type', function () { expectContainAll(file, bigintSnippets); expectContainAll(file, numberSnippets); }); - }); + }); }); -// Generate typescript code for msg-longs.proto. +// Generate typescript code for msg-longs.proto. // The `parameter` is forwarded to the request. function generateTypescript(parameter: string): GeneratedFile { let plugin = new ProtobuftsPlugin('test'); - let request = getFixtureCodeGeneratorRequest({ + let request = getCodeGeneratorRequest({ parameter, includeFiles: [ 'msg-longs.proto' ] }); diff --git a/packages/plugin/spec/protobufts-plugin.spec.ts b/packages/plugin/spec/protobufts-plugin.spec.ts index 1d2b0fea..da004f03 100644 --- a/packages/plugin/spec/protobufts-plugin.spec.ts +++ b/packages/plugin/spec/protobufts-plugin.spec.ts @@ -1,4 +1,4 @@ -import {getFixtureCodeGeneratorRequest} from "./support/helpers"; +import {getCodeGeneratorRequest} from "./support/helpers"; import {ProtobuftsPlugin} from "../src/protobufts-plugin"; import * as ts from "typescript"; import {setupCompiler} from "@protobuf-ts/plugin-framework"; @@ -7,7 +7,7 @@ import {OutFile} from "../src/out-file"; describe('protobuftsPlugin', function () { let plugin = new ProtobuftsPlugin('test'); - let request = getFixtureCodeGeneratorRequest({ + let request = getCodeGeneratorRequest({ parameter: 'long_type_string', // fileToGenerate: [ // 'msg-annotated.proto', @@ -52,11 +52,11 @@ describe('protobuftsPlugin', function () { // } - describe('generates valid typescript for every fixture .proto', function () { + describe('generates valid typescript for every .proto', function () { if (generatedFiles.length === 0) { - it('Fixture .protos available', function () { - pending('No fixture .proto available!'); + it('.protos available', function () { + pending('No .proto available!'); }); return; } diff --git a/packages/plugin/spec/support/helpers.ts b/packages/plugin/spec/support/helpers.ts index f7536b27..d7f25ade 100644 --- a/packages/plugin/spec/support/helpers.ts +++ b/packages/plugin/spec/support/helpers.ts @@ -1,10 +1,10 @@ import {CodeGeneratorRequest, FileDescriptorProto, FileDescriptorSet} from "@protobuf-ts/plugin-framework"; -import {join, normalize} from "path"; +import {normalize} from "path"; import {existsSync, readFileSync} from "fs"; -const fixtureDescriptorSetPath = normalize(join(__dirname, '../../../test-fixtures/all.descriptorset')); -let fixtureDescriptorSet: FileDescriptorSet; +const descriptorSetPath = normalize('./all.descriptorset'); +let descriptorSet: FileDescriptorSet; interface MakeCodeGeneratorRequestOptions { @@ -21,10 +21,10 @@ interface MakeCodeGeneratorRequestOptions { * To work correctly, the descriptor set must be generated with the protoc * options --include_source_info and --include_imports. */ -export function getFixtureCodeGeneratorRequest(options: MakeCodeGeneratorRequestOptions): CodeGeneratorRequest { +export function getCodeGeneratorRequest(options: MakeCodeGeneratorRequestOptions): CodeGeneratorRequest { // read the pre-generated descriptor set - let allFiles = readFixtureDescriptorSet(); + let allFiles = readDescriptorSet(); const availableFilenames = allFiles.map(x => x.name).filter(x => x !== undefined) as string[]; // create request @@ -37,7 +37,7 @@ export function getFixtureCodeGeneratorRequest(options: MakeCodeGeneratorRequest // check if demand is satisfied const missingFileToGenerate = request.fileToGenerate.filter(n => !request.protoFile.some(f => f.name === n)); if (missingFileToGenerate.length > 0) { - let msg = `You requested ${missingFileToGenerate.length} files to generate that are not available in ${fixtureDescriptorSetPath}:\n`; + let msg = `You requested ${missingFileToGenerate.length} files to generate that are not available in ${descriptorSetPath}:\n`; msg += missingFileToGenerate.join('\n'); msg += "\n\navailable files: " @@ -46,7 +46,7 @@ export function getFixtureCodeGeneratorRequest(options: MakeCodeGeneratorRequest } const missingIncludes = (options.includeFiles ?? []).filter(n => !request.protoFile.some(f => f.name === n)); if (missingIncludes.length > 0) { - let msg = `You requested to include ${missingIncludes.length} files that are not available in ${fixtureDescriptorSetPath}:\n`; + let msg = `You requested to include ${missingIncludes.length} files that are not available in ${descriptorSetPath}:\n`; msg += missingIncludes.join('\n'); throw msg; } @@ -58,26 +58,26 @@ export function getFixtureCodeGeneratorRequest(options: MakeCodeGeneratorRequest /** * Get a FileDescriptorProto from a pre-generated descriptor set. */ -export function getFixtureFileDescriptor(protoFile: string): FileDescriptorProto { - let allFiles = readFixtureDescriptorSet(); +export function getFileDescriptor(protoFile: string): FileDescriptorProto { + let allFiles = readDescriptorSet(); const file = allFiles.find(f => protoFile === f.name); if (file === undefined) { - throw new Error(`Missing file: ${protoFile} in ${fixtureDescriptorSetPath}`); + throw new Error(`Missing file: ${protoFile} in ${descriptorSetPath}`); } return FileDescriptorProto.create(file); } -function readFixtureDescriptorSet(): FileDescriptorProto[] { - if (!fixtureDescriptorSet) { - if (!existsSync(fixtureDescriptorSetPath)) { - const reason = `Did not find '${fixtureDescriptorSetPath}'. \n` - + `The file has to be generated by by protoc and contain a serialized FileDescriptorSet of all fixtures .protos.` +function readDescriptorSet(): FileDescriptorProto[] { + if (!descriptorSet) { + if (!existsSync(descriptorSetPath)) { + const reason = `Did not find '${descriptorSetPath}'. \n` + + `The file has to be generated by a protobuf compiler and contain a serialized FileDescriptorSet of all .protos in packages/proto.` pending(reason); throw reason; } - const bytes = readFileSync(fixtureDescriptorSetPath); - fixtureDescriptorSet = FileDescriptorSet.fromBinary(bytes); + const bytes = readFileSync(descriptorSetPath); + descriptorSet = FileDescriptorSet.fromBinary(bytes); } - return FileDescriptorSet.create(fixtureDescriptorSet).file; + return FileDescriptorSet.create(descriptorSet).file; } diff --git a/packages/test-fixtures/README.md b/packages/proto/README.md similarity index 50% rename from packages/test-fixtures/README.md rename to packages/proto/README.md index bc40fb66..a1b12cd3 100644 --- a/packages/test-fixtures/README.md +++ b/packages/proto/README.md @@ -1,8 +1,8 @@ -@protobuf-ts/test-fixtures +@protobuf-ts/proto ========================== -Test fixtures and example .proto files for unit tests, interop tests, -conformance tests, examples and benchmarks. +A directory of .proto files for unit tests, interop tests, +conformance tests, examples and benchmarks. -The proto files in [google/](./google) are Copyright Google Inc. / +The proto files in [google/](./google) are Copyright Google Inc. / Google LLC, licensed under Apache-2.0 / BSD-3-Clause. diff --git a/packages/test-fixtures/comments.proto b/packages/proto/comments.proto similarity index 100% rename from packages/test-fixtures/comments.proto rename to packages/proto/comments.proto diff --git a/packages/test-fixtures/deprecation-explicit.proto b/packages/proto/deprecation-explicit.proto similarity index 100% rename from packages/test-fixtures/deprecation-explicit.proto rename to packages/proto/deprecation-explicit.proto diff --git a/packages/test-fixtures/deprecation-implicit.proto b/packages/proto/deprecation-implicit.proto similarity index 100% rename from packages/test-fixtures/deprecation-implicit.proto rename to packages/proto/deprecation-implicit.proto diff --git a/packages/test-fixtures/empty-file.proto b/packages/proto/empty-file.proto similarity index 100% rename from packages/test-fixtures/empty-file.proto rename to packages/proto/empty-file.proto diff --git a/packages/test-fixtures/enum-annotated.proto b/packages/proto/enum-annotated.proto similarity index 100% rename from packages/test-fixtures/enum-annotated.proto rename to packages/proto/enum-annotated.proto diff --git a/packages/test-fixtures/exclude-options.proto b/packages/proto/exclude-options.proto similarity index 100% rename from packages/test-fixtures/exclude-options.proto rename to packages/proto/exclude-options.proto diff --git a/packages/test-fixtures/google/api/annotations.proto b/packages/proto/google/api/annotations.proto similarity index 100% rename from packages/test-fixtures/google/api/annotations.proto rename to packages/proto/google/api/annotations.proto diff --git a/packages/test-fixtures/google/api/http.proto b/packages/proto/google/api/http.proto similarity index 100% rename from packages/test-fixtures/google/api/http.proto rename to packages/proto/google/api/http.proto diff --git a/packages/test-fixtures/google/protobuf/any.proto b/packages/proto/google/protobuf/any.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/any.proto rename to packages/proto/google/protobuf/any.proto diff --git a/packages/test-fixtures/google/protobuf/any_test.proto b/packages/proto/google/protobuf/any_test.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/any_test.proto rename to packages/proto/google/protobuf/any_test.proto diff --git a/packages/test-fixtures/google/protobuf/api.proto b/packages/proto/google/protobuf/api.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/api.proto rename to packages/proto/google/protobuf/api.proto diff --git a/packages/test-fixtures/google/protobuf/compiler/plugin.proto b/packages/proto/google/protobuf/compiler/plugin.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/compiler/plugin.proto rename to packages/proto/google/protobuf/compiler/plugin.proto diff --git a/packages/test-fixtures/google/protobuf/descriptor.proto b/packages/proto/google/protobuf/descriptor.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/descriptor.proto rename to packages/proto/google/protobuf/descriptor.proto diff --git a/packages/test-fixtures/google/protobuf/duration.proto b/packages/proto/google/protobuf/duration.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/duration.proto rename to packages/proto/google/protobuf/duration.proto diff --git a/packages/test-fixtures/google/protobuf/empty.proto b/packages/proto/google/protobuf/empty.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/empty.proto rename to packages/proto/google/protobuf/empty.proto diff --git a/packages/test-fixtures/google/protobuf/field_mask.proto b/packages/proto/google/protobuf/field_mask.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/field_mask.proto rename to packages/proto/google/protobuf/field_mask.proto diff --git a/packages/test-fixtures/google/protobuf/map_lite_unittest.proto b/packages/proto/google/protobuf/map_lite_unittest.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/map_lite_unittest.proto rename to packages/proto/google/protobuf/map_lite_unittest.proto diff --git a/packages/test-fixtures/google/protobuf/map_proto2_unittest.proto b/packages/proto/google/protobuf/map_proto2_unittest.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/map_proto2_unittest.proto rename to packages/proto/google/protobuf/map_proto2_unittest.proto diff --git a/packages/test-fixtures/google/protobuf/map_unittest.proto b/packages/proto/google/protobuf/map_unittest.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/map_unittest.proto rename to packages/proto/google/protobuf/map_unittest.proto diff --git a/packages/test-fixtures/google/protobuf/source_context.proto b/packages/proto/google/protobuf/source_context.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/source_context.proto rename to packages/proto/google/protobuf/source_context.proto diff --git a/packages/test-fixtures/google/protobuf/struct.proto b/packages/proto/google/protobuf/struct.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/struct.proto rename to packages/proto/google/protobuf/struct.proto diff --git a/packages/test-fixtures/google/protobuf/test_messages_proto2.proto b/packages/proto/google/protobuf/test_messages_proto2.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/test_messages_proto2.proto rename to packages/proto/google/protobuf/test_messages_proto2.proto diff --git a/packages/test-fixtures/google/protobuf/test_messages_proto3.proto b/packages/proto/google/protobuf/test_messages_proto3.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/test_messages_proto3.proto rename to packages/proto/google/protobuf/test_messages_proto3.proto diff --git a/packages/test-fixtures/google/protobuf/testdata/bad_utf8_string b/packages/proto/google/protobuf/testdata/bad_utf8_string similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/bad_utf8_string rename to packages/proto/google/protobuf/testdata/bad_utf8_string diff --git a/packages/test-fixtures/google/protobuf/testdata/golden_message b/packages/proto/google/protobuf/testdata/golden_message similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/golden_message rename to packages/proto/google/protobuf/testdata/golden_message diff --git a/packages/test-fixtures/google/protobuf/testdata/golden_message_maps b/packages/proto/google/protobuf/testdata/golden_message_maps similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/golden_message_maps rename to packages/proto/google/protobuf/testdata/golden_message_maps diff --git a/packages/test-fixtures/google/protobuf/testdata/golden_message_oneof_implemented b/packages/proto/google/protobuf/testdata/golden_message_oneof_implemented similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/golden_message_oneof_implemented rename to packages/proto/google/protobuf/testdata/golden_message_oneof_implemented diff --git a/packages/test-fixtures/google/protobuf/testdata/golden_message_proto3 b/packages/proto/google/protobuf/testdata/golden_message_proto3 similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/golden_message_proto3 rename to packages/proto/google/protobuf/testdata/golden_message_proto3 diff --git a/packages/test-fixtures/google/protobuf/testdata/golden_packed_fields_message b/packages/proto/google/protobuf/testdata/golden_packed_fields_message similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/golden_packed_fields_message rename to packages/proto/google/protobuf/testdata/golden_packed_fields_message diff --git a/packages/test-fixtures/google/protobuf/testdata/map_test_data.txt b/packages/proto/google/protobuf/testdata/map_test_data.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/map_test_data.txt rename to packages/proto/google/protobuf/testdata/map_test_data.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_data.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_data.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_pointy.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_data_pointy.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_pointy.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_data_pointy.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_extensions_data.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_extensions_data.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_extensions_data.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_extensions_data.txt diff --git a/packages/test-fixtures/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt b/packages/proto/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt similarity index 100% rename from packages/test-fixtures/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt rename to packages/proto/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt diff --git a/packages/test-fixtures/google/protobuf/timestamp.proto b/packages/proto/google/protobuf/timestamp.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/timestamp.proto rename to packages/proto/google/protobuf/timestamp.proto diff --git a/packages/test-fixtures/google/protobuf/type.proto b/packages/proto/google/protobuf/type.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/type.proto rename to packages/proto/google/protobuf/type.proto diff --git a/packages/test-fixtures/google/protobuf/unittest.proto b/packages/proto/google/protobuf/unittest.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest.proto rename to packages/proto/google/protobuf/unittest.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_arena.proto b/packages/proto/google/protobuf/unittest_arena.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_arena.proto rename to packages/proto/google/protobuf/unittest_arena.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_custom_options.proto b/packages/proto/google/protobuf/unittest_custom_options.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_custom_options.proto rename to packages/proto/google/protobuf/unittest_custom_options.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_drop_unknown_fields.proto b/packages/proto/google/protobuf/unittest_drop_unknown_fields.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_drop_unknown_fields.proto rename to packages/proto/google/protobuf/unittest_drop_unknown_fields.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_embed_optimize_for.proto b/packages/proto/google/protobuf/unittest_embed_optimize_for.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_embed_optimize_for.proto rename to packages/proto/google/protobuf/unittest_embed_optimize_for.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_empty.proto b/packages/proto/google/protobuf/unittest_empty.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_empty.proto rename to packages/proto/google/protobuf/unittest_empty.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_enormous_descriptor.proto b/packages/proto/google/protobuf/unittest_enormous_descriptor.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_enormous_descriptor.proto rename to packages/proto/google/protobuf/unittest_enormous_descriptor.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_import.proto b/packages/proto/google/protobuf/unittest_import.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_import.proto rename to packages/proto/google/protobuf/unittest_import.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_import_lite.proto b/packages/proto/google/protobuf/unittest_import_lite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_import_lite.proto rename to packages/proto/google/protobuf/unittest_import_lite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_import_public.proto b/packages/proto/google/protobuf/unittest_import_public.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_import_public.proto rename to packages/proto/google/protobuf/unittest_import_public.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_import_public_lite.proto b/packages/proto/google/protobuf/unittest_import_public_lite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_import_public_lite.proto rename to packages/proto/google/protobuf/unittest_import_public_lite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_lazy_dependencies.proto b/packages/proto/google/protobuf/unittest_lazy_dependencies.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_lazy_dependencies.proto rename to packages/proto/google/protobuf/unittest_lazy_dependencies.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_lazy_dependencies_custom_option.proto b/packages/proto/google/protobuf/unittest_lazy_dependencies_custom_option.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_lazy_dependencies_custom_option.proto rename to packages/proto/google/protobuf/unittest_lazy_dependencies_custom_option.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_lazy_dependencies_enum.proto b/packages/proto/google/protobuf/unittest_lazy_dependencies_enum.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_lazy_dependencies_enum.proto rename to packages/proto/google/protobuf/unittest_lazy_dependencies_enum.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_lite.proto b/packages/proto/google/protobuf/unittest_lite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_lite.proto rename to packages/proto/google/protobuf/unittest_lite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_lite_imports_nonlite.proto b/packages/proto/google/protobuf/unittest_lite_imports_nonlite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_lite_imports_nonlite.proto rename to packages/proto/google/protobuf/unittest_lite_imports_nonlite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_mset.proto b/packages/proto/google/protobuf/unittest_mset.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_mset.proto rename to packages/proto/google/protobuf/unittest_mset.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_mset_wire_format.proto b/packages/proto/google/protobuf/unittest_mset_wire_format.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_mset_wire_format.proto rename to packages/proto/google/protobuf/unittest_mset_wire_format.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_no_field_presence.proto b/packages/proto/google/protobuf/unittest_no_field_presence.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_no_field_presence.proto rename to packages/proto/google/protobuf/unittest_no_field_presence.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_no_generic_services.proto b/packages/proto/google/protobuf/unittest_no_generic_services.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_no_generic_services.proto rename to packages/proto/google/protobuf/unittest_no_generic_services.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_optimize_for.proto b/packages/proto/google/protobuf/unittest_optimize_for.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_optimize_for.proto rename to packages/proto/google/protobuf/unittest_optimize_for.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_preserve_unknown_enum.proto b/packages/proto/google/protobuf/unittest_preserve_unknown_enum.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_preserve_unknown_enum.proto rename to packages/proto/google/protobuf/unittest_preserve_unknown_enum.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_preserve_unknown_enum2.proto b/packages/proto/google/protobuf/unittest_preserve_unknown_enum2.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_preserve_unknown_enum2.proto rename to packages/proto/google/protobuf/unittest_preserve_unknown_enum2.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_proto3.proto b/packages/proto/google/protobuf/unittest_proto3.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_proto3.proto rename to packages/proto/google/protobuf/unittest_proto3.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_proto3_arena.proto b/packages/proto/google/protobuf/unittest_proto3_arena.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_proto3_arena.proto rename to packages/proto/google/protobuf/unittest_proto3_arena.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_proto3_arena_lite.proto b/packages/proto/google/protobuf/unittest_proto3_arena_lite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_proto3_arena_lite.proto rename to packages/proto/google/protobuf/unittest_proto3_arena_lite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_proto3_lite.proto b/packages/proto/google/protobuf/unittest_proto3_lite.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_proto3_lite.proto rename to packages/proto/google/protobuf/unittest_proto3_lite.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_proto3_optional.proto b/packages/proto/google/protobuf/unittest_proto3_optional.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_proto3_optional.proto rename to packages/proto/google/protobuf/unittest_proto3_optional.proto diff --git a/packages/test-fixtures/google/protobuf/unittest_well_known_types.proto b/packages/proto/google/protobuf/unittest_well_known_types.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/unittest_well_known_types.proto rename to packages/proto/google/protobuf/unittest_well_known_types.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/anys.proto b/packages/proto/google/protobuf/util/internal/testdata/anys.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/anys.proto rename to packages/proto/google/protobuf/util/internal/testdata/anys.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/books.proto.disabled b/packages/proto/google/protobuf/util/internal/testdata/books.proto.disabled similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/books.proto.disabled rename to packages/proto/google/protobuf/util/internal/testdata/books.proto.disabled diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/default_value.proto b/packages/proto/google/protobuf/util/internal/testdata/default_value.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/default_value.proto rename to packages/proto/google/protobuf/util/internal/testdata/default_value.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/default_value_test.proto b/packages/proto/google/protobuf/util/internal/testdata/default_value_test.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/default_value_test.proto rename to packages/proto/google/protobuf/util/internal/testdata/default_value_test.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/field_mask.proto b/packages/proto/google/protobuf/util/internal/testdata/field_mask.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/field_mask.proto rename to packages/proto/google/protobuf/util/internal/testdata/field_mask.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/maps.proto b/packages/proto/google/protobuf/util/internal/testdata/maps.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/maps.proto rename to packages/proto/google/protobuf/util/internal/testdata/maps.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/oneofs.proto b/packages/proto/google/protobuf/util/internal/testdata/oneofs.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/oneofs.proto rename to packages/proto/google/protobuf/util/internal/testdata/oneofs.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/proto3.proto b/packages/proto/google/protobuf/util/internal/testdata/proto3.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/proto3.proto rename to packages/proto/google/protobuf/util/internal/testdata/proto3.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/struct.proto b/packages/proto/google/protobuf/util/internal/testdata/struct.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/struct.proto rename to packages/proto/google/protobuf/util/internal/testdata/struct.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/timestamp_duration.proto b/packages/proto/google/protobuf/util/internal/testdata/timestamp_duration.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/timestamp_duration.proto rename to packages/proto/google/protobuf/util/internal/testdata/timestamp_duration.proto diff --git a/packages/test-fixtures/google/protobuf/util/internal/testdata/wrappers.proto b/packages/proto/google/protobuf/util/internal/testdata/wrappers.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/internal/testdata/wrappers.proto rename to packages/proto/google/protobuf/util/internal/testdata/wrappers.proto diff --git a/packages/test-fixtures/google/protobuf/util/json_format.proto b/packages/proto/google/protobuf/util/json_format.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/json_format.proto rename to packages/proto/google/protobuf/util/json_format.proto diff --git a/packages/test-fixtures/google/protobuf/util/json_format_proto3.proto b/packages/proto/google/protobuf/util/json_format_proto3.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/json_format_proto3.proto rename to packages/proto/google/protobuf/util/json_format_proto3.proto diff --git a/packages/test-fixtures/google/protobuf/util/message_differencer_unittest.proto b/packages/proto/google/protobuf/util/message_differencer_unittest.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/util/message_differencer_unittest.proto rename to packages/proto/google/protobuf/util/message_differencer_unittest.proto diff --git a/packages/test-fixtures/google/protobuf/wrappers.proto b/packages/proto/google/protobuf/wrappers.proto similarity index 100% rename from packages/test-fixtures/google/protobuf/wrappers.proto rename to packages/proto/google/protobuf/wrappers.proto diff --git a/packages/test-fixtures/google/rpc/README.md b/packages/proto/google/rpc/README.md similarity index 100% rename from packages/test-fixtures/google/rpc/README.md rename to packages/proto/google/rpc/README.md diff --git a/packages/test-fixtures/google/rpc/code.proto b/packages/proto/google/rpc/code.proto similarity index 100% rename from packages/test-fixtures/google/rpc/code.proto rename to packages/proto/google/rpc/code.proto diff --git a/packages/test-fixtures/google/rpc/context/attribute_context.proto b/packages/proto/google/rpc/context/attribute_context.proto similarity index 100% rename from packages/test-fixtures/google/rpc/context/attribute_context.proto rename to packages/proto/google/rpc/context/attribute_context.proto diff --git a/packages/test-fixtures/google/rpc/error_details.proto b/packages/proto/google/rpc/error_details.proto similarity index 100% rename from packages/test-fixtures/google/rpc/error_details.proto rename to packages/proto/google/rpc/error_details.proto diff --git a/packages/test-fixtures/google/rpc/status.proto b/packages/proto/google/rpc/status.proto similarity index 100% rename from packages/test-fixtures/google/rpc/status.proto rename to packages/proto/google/rpc/status.proto diff --git a/packages/test-fixtures/google/type/README.md b/packages/proto/google/type/README.md similarity index 100% rename from packages/test-fixtures/google/type/README.md rename to packages/proto/google/type/README.md diff --git a/packages/test-fixtures/google/type/calendar_period.proto b/packages/proto/google/type/calendar_period.proto similarity index 100% rename from packages/test-fixtures/google/type/calendar_period.proto rename to packages/proto/google/type/calendar_period.proto diff --git a/packages/test-fixtures/google/type/color.proto b/packages/proto/google/type/color.proto similarity index 100% rename from packages/test-fixtures/google/type/color.proto rename to packages/proto/google/type/color.proto diff --git a/packages/test-fixtures/google/type/date.proto b/packages/proto/google/type/date.proto similarity index 100% rename from packages/test-fixtures/google/type/date.proto rename to packages/proto/google/type/date.proto diff --git a/packages/test-fixtures/google/type/datetime.proto b/packages/proto/google/type/datetime.proto similarity index 100% rename from packages/test-fixtures/google/type/datetime.proto rename to packages/proto/google/type/datetime.proto diff --git a/packages/test-fixtures/google/type/dayofweek.proto b/packages/proto/google/type/dayofweek.proto similarity index 100% rename from packages/test-fixtures/google/type/dayofweek.proto rename to packages/proto/google/type/dayofweek.proto diff --git a/packages/test-fixtures/google/type/expr.proto b/packages/proto/google/type/expr.proto similarity index 100% rename from packages/test-fixtures/google/type/expr.proto rename to packages/proto/google/type/expr.proto diff --git a/packages/test-fixtures/google/type/fraction.proto b/packages/proto/google/type/fraction.proto similarity index 100% rename from packages/test-fixtures/google/type/fraction.proto rename to packages/proto/google/type/fraction.proto diff --git a/packages/test-fixtures/google/type/latlng.proto b/packages/proto/google/type/latlng.proto similarity index 100% rename from packages/test-fixtures/google/type/latlng.proto rename to packages/proto/google/type/latlng.proto diff --git a/packages/test-fixtures/google/type/money.proto b/packages/proto/google/type/money.proto similarity index 100% rename from packages/test-fixtures/google/type/money.proto rename to packages/proto/google/type/money.proto diff --git a/packages/test-fixtures/google/type/month.proto b/packages/proto/google/type/month.proto similarity index 100% rename from packages/test-fixtures/google/type/month.proto rename to packages/proto/google/type/month.proto diff --git a/packages/test-fixtures/google/type/postal_address.proto b/packages/proto/google/type/postal_address.proto similarity index 100% rename from packages/test-fixtures/google/type/postal_address.proto rename to packages/proto/google/type/postal_address.proto diff --git a/packages/test-fixtures/google/type/quaternion.proto b/packages/proto/google/type/quaternion.proto similarity index 100% rename from packages/test-fixtures/google/type/quaternion.proto rename to packages/proto/google/type/quaternion.proto diff --git a/packages/test-fixtures/google/type/timeofday.proto b/packages/proto/google/type/timeofday.proto similarity index 100% rename from packages/test-fixtures/google/type/timeofday.proto rename to packages/proto/google/type/timeofday.proto diff --git a/packages/test-fixtures/msg-annotated-annotation.proto b/packages/proto/msg-annotated-annotation.proto similarity index 100% rename from packages/test-fixtures/msg-annotated-annotation.proto rename to packages/proto/msg-annotated-annotation.proto diff --git a/packages/test-fixtures/msg-annotated.proto b/packages/proto/msg-annotated.proto similarity index 100% rename from packages/test-fixtures/msg-annotated.proto rename to packages/proto/msg-annotated.proto diff --git a/packages/test-fixtures/msg-enum.proto b/packages/proto/msg-enum.proto similarity index 100% rename from packages/test-fixtures/msg-enum.proto rename to packages/proto/msg-enum.proto diff --git a/packages/test-fixtures/msg-json-names.proto b/packages/proto/msg-json-names.proto similarity index 100% rename from packages/test-fixtures/msg-json-names.proto rename to packages/proto/msg-json-names.proto diff --git a/packages/test-fixtures/msg-longs.proto b/packages/proto/msg-longs.proto similarity index 100% rename from packages/test-fixtures/msg-longs.proto rename to packages/proto/msg-longs.proto diff --git a/packages/test-fixtures/msg-maps.proto b/packages/proto/msg-maps.proto similarity index 100% rename from packages/test-fixtures/msg-maps.proto rename to packages/proto/msg-maps.proto diff --git a/packages/test-fixtures/msg-message.proto b/packages/proto/msg-message.proto similarity index 100% rename from packages/test-fixtures/msg-message.proto rename to packages/proto/msg-message.proto diff --git a/packages/test-fixtures/msg-nesting.proto b/packages/proto/msg-nesting.proto similarity index 100% rename from packages/test-fixtures/msg-nesting.proto rename to packages/proto/msg-nesting.proto diff --git a/packages/test-fixtures/msg-no-package.proto b/packages/proto/msg-no-package.proto similarity index 100% rename from packages/test-fixtures/msg-no-package.proto rename to packages/proto/msg-no-package.proto diff --git a/packages/test-fixtures/msg-oneofs.proto b/packages/proto/msg-oneofs.proto similarity index 100% rename from packages/test-fixtures/msg-oneofs.proto rename to packages/proto/msg-oneofs.proto diff --git a/packages/test-fixtures/msg-proto2-optionals.proto b/packages/proto/msg-proto2-optionals.proto similarity index 100% rename from packages/test-fixtures/msg-proto2-optionals.proto rename to packages/proto/msg-proto2-optionals.proto diff --git a/packages/test-fixtures/msg-proto2-packed.proto b/packages/proto/msg-proto2-packed.proto similarity index 100% rename from packages/test-fixtures/msg-proto2-packed.proto rename to packages/proto/msg-proto2-packed.proto diff --git a/packages/test-fixtures/msg-proto3-optionals.proto b/packages/proto/msg-proto3-optionals.proto similarity index 100% rename from packages/test-fixtures/msg-proto3-optionals.proto rename to packages/proto/msg-proto3-optionals.proto diff --git a/packages/test-fixtures/msg-proto3-packed.proto b/packages/proto/msg-proto3-packed.proto similarity index 100% rename from packages/test-fixtures/msg-proto3-packed.proto rename to packages/proto/msg-proto3-packed.proto diff --git a/packages/test-fixtures/msg-readme.proto b/packages/proto/msg-readme.proto similarity index 100% rename from packages/test-fixtures/msg-readme.proto rename to packages/proto/msg-readme.proto diff --git a/packages/test-fixtures/msg-scalar.proto b/packages/proto/msg-scalar.proto similarity index 100% rename from packages/test-fixtures/msg-scalar.proto rename to packages/proto/msg-scalar.proto diff --git a/packages/test-fixtures/msg-self-reference.proto b/packages/proto/msg-self-reference.proto similarity index 100% rename from packages/test-fixtures/msg-self-reference.proto rename to packages/proto/msg-self-reference.proto diff --git a/packages/test-fixtures/msg-sub-package.proto b/packages/proto/msg-sub-package.proto similarity index 100% rename from packages/test-fixtures/msg-sub-package.proto rename to packages/proto/msg-sub-package.proto diff --git a/packages/test-fixtures/name-clash.proto b/packages/proto/name-clash.proto similarity index 100% rename from packages/test-fixtures/name-clash.proto rename to packages/proto/name-clash.proto diff --git a/packages/test-fixtures/optimize-for-code-size.proto b/packages/proto/optimize-for-code-size.proto similarity index 100% rename from packages/test-fixtures/optimize-for-code-size.proto rename to packages/proto/optimize-for-code-size.proto diff --git a/packages/test-fixtures/optimize-for-speed.proto b/packages/proto/optimize-for-speed.proto similarity index 100% rename from packages/test-fixtures/optimize-for-speed.proto rename to packages/proto/optimize-for-speed.proto diff --git a/packages/test-fixtures/service-annotated.proto b/packages/proto/service-annotated.proto similarity index 100% rename from packages/test-fixtures/service-annotated.proto rename to packages/proto/service-annotated.proto diff --git a/packages/test-fixtures/service-clash.client.proto b/packages/proto/service-clash.client.proto similarity index 100% rename from packages/test-fixtures/service-clash.client.proto rename to packages/proto/service-clash.client.proto diff --git a/packages/test-fixtures/service-clash.proto b/packages/proto/service-clash.proto similarity index 100% rename from packages/test-fixtures/service-clash.proto rename to packages/proto/service-clash.proto diff --git a/packages/test-fixtures/service-empty.proto b/packages/proto/service-empty.proto similarity index 100% rename from packages/test-fixtures/service-empty.proto rename to packages/proto/service-empty.proto diff --git a/packages/test-fixtures/service-example.proto b/packages/proto/service-example.proto similarity index 100% rename from packages/test-fixtures/service-example.proto rename to packages/proto/service-example.proto diff --git a/packages/test-fixtures/service-style-all.proto b/packages/proto/service-style-all.proto similarity index 100% rename from packages/test-fixtures/service-style-all.proto rename to packages/proto/service-style-all.proto diff --git a/packages/test-fixtures/service-style-none.proto b/packages/proto/service-style-none.proto similarity index 100% rename from packages/test-fixtures/service-style-none.proto rename to packages/proto/service-style-none.proto diff --git a/packages/test-fixtures/service-twirp-example.proto b/packages/proto/service-twirp-example.proto similarity index 100% rename from packages/test-fixtures/service-twirp-example.proto rename to packages/proto/service-twirp-example.proto diff --git a/packages/test-fixtures/wkt-any.proto b/packages/proto/wkt-any.proto similarity index 100% rename from packages/test-fixtures/wkt-any.proto rename to packages/proto/wkt-any.proto diff --git a/packages/test-fixtures/wkt-duration.proto b/packages/proto/wkt-duration.proto similarity index 100% rename from packages/test-fixtures/wkt-duration.proto rename to packages/proto/wkt-duration.proto diff --git a/packages/test-fixtures/wkt-empty.proto b/packages/proto/wkt-empty.proto similarity index 100% rename from packages/test-fixtures/wkt-empty.proto rename to packages/proto/wkt-empty.proto diff --git a/packages/test-fixtures/wkt-field-mask.proto b/packages/proto/wkt-field-mask.proto similarity index 100% rename from packages/test-fixtures/wkt-field-mask.proto rename to packages/proto/wkt-field-mask.proto diff --git a/packages/test-fixtures/wkt-struct.proto b/packages/proto/wkt-struct.proto similarity index 100% rename from packages/test-fixtures/wkt-struct.proto rename to packages/proto/wkt-struct.proto diff --git a/packages/test-fixtures/wkt-timestamp.proto b/packages/proto/wkt-timestamp.proto similarity index 100% rename from packages/test-fixtures/wkt-timestamp.proto rename to packages/proto/wkt-timestamp.proto diff --git a/packages/test-fixtures/wkt-wrappers.proto b/packages/proto/wkt-wrappers.proto similarity index 100% rename from packages/test-fixtures/wkt-wrappers.proto rename to packages/proto/wkt-wrappers.proto diff --git a/packages/test-conformance/package-lock.json b/packages/test-conformance/package-lock.json index 1e112c8f..19f7467c 100644 --- a/packages/test-conformance/package-lock.json +++ b/packages/test-conformance/package-lock.json @@ -1,1098 +1,959 @@ { - "name": "@protobuf-ts/test-conformance", - "version": "2.9.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@protobuf-ts/test-conformance", - "version": "2.9.0", - "license": "Apache-2.0", - "devDependencies": { - "@bufbuild/buf": "^1.15.0-1", - "@protobuf-ts/plugin": "^2.9.0", - "@protobuf-ts/runtime": "^2.9.0", - "tsx": "^3.12.7", - "typescript": "3.8.3" - } - }, - "node_modules/@bufbuild/buf": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.15.0-1.tgz", - "integrity": "sha512-j+mkNd9kM+2b9JacmZNBxTkbOXtLUltzv0inWBYRqd4dJ+EwAR/CDfK6OXvia94aJsKWy8YKSgLu19VlTYSh1Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "buf": "bin/buf", - "protoc-gen-buf-breaking": "bin/protoc-gen-buf-breaking", - "protoc-gen-buf-lint": "bin/protoc-gen-buf-lint" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@bufbuild/buf-darwin-arm64": "1.15.0-1", - "@bufbuild/buf-darwin-x64": "1.15.0-1", - "@bufbuild/buf-linux-aarch64": "1.15.0-1", - "@bufbuild/buf-linux-x64": "1.15.0-1", - "@bufbuild/buf-win32-arm64": "1.15.0-1", - "@bufbuild/buf-win32-x64": "1.15.0-1" - } - }, - "node_modules/@bufbuild/buf-darwin-arm64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.15.0-1.tgz", - "integrity": "sha512-KV3rvScwjMCcj0DSkmx6Ejk8YF7LtnqA3jSokeYbGaLLfSvPXu4q9d0I2pq+jaYIA8RfbMerAqzR8MccdY4Vqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@bufbuild/buf-darwin-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.15.0-1.tgz", - "integrity": "sha512-hSEK9TIGmTA58PhUsvcuhF9LcmZ3mZedPgWT8cAeGZYcNJd1mkUEzsWsqnYYGZRe1QvOPZW1BsPIayWFBrlBMQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@bufbuild/buf-linux-aarch64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.15.0-1.tgz", - "integrity": "sha512-Ppa5mNy3z5cmTPo18Sc5xUIPfRBpa/Bc9VyqtUqwMJGtTQ1fC+JJ9LFUL8UxXcvdVRcErxXNyd6oGEZzOoLFFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@bufbuild/buf-linux-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.15.0-1.tgz", - "integrity": "sha512-6QtcPOf6D3cXGAhMIhCkOlveLc19nXFCteUktuK73Ls8XDOLuhef4cEfb/Gh7RQCq6IyfFyzoEzb0cWybXnBbQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@bufbuild/buf-win32-arm64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.15.0-1.tgz", - "integrity": "sha512-h356aHM1BvHKjxrs9GjeuDxljqJDNtv8NhzssR3kD4ZkRjZYpMhc8YzpnodY3W520W9/6Q7k7CuVd2vhib1Fyg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@bufbuild/buf-win32-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.15.0-1.tgz", - "integrity": "sha512-dc1dBFDTNF/3ulr7rejsX/lBb2eqAPZtHI3w6YUQaXTkhmQtNOe45QkaOYnj4UFj6sBVI53WeAisNf3Wg+SUFQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "node_modules/@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "dev": true, - "dependencies": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", - "dev": true, - "dependencies": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", - "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", - "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", - "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", - "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", - "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", - "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", - "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", - "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", - "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", - "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", - "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", - "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", - "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", - "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", - "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", - "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", - "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", - "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", - "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", - "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", - "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", - "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@protobuf-ts/plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.0.tgz", - "integrity": "sha512-SYHWyvobfYcm1tq5O9DVU0vPYLhm66l83ImGLZBME1bjtyVSZ06aVrAXr6mJrwAjmVBDN9TeoPqstk48zpMHjA==", - "dev": true, - "dependencies": { - "@protobuf-ts/plugin-framework": "^2.9.0", - "@protobuf-ts/protoc": "^2.9.0", - "@protobuf-ts/runtime": "^2.9.0", - "@protobuf-ts/runtime-rpc": "^2.9.0", - "typescript": "^3.9" - }, - "bin": { - "protoc-gen-dump": "bin/protoc-gen-dump", - "protoc-gen-ts": "bin/protoc-gen-ts" - } - }, - "node_modules/@protobuf-ts/plugin-framework": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.0.tgz", - "integrity": "sha512-/fgpwEgYeiazEpkp9S+iaxVXd6LCkfd2iCfsvHiiSz94DatwZGkhv/85ciq2vcZVwSeEagKoSKeinnQWYvTnxw==", - "dev": true, - "dependencies": { - "@protobuf-ts/runtime": "^2.9.0", - "typescript": "^3.9" - } - }, - "node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@protobuf-ts/plugin/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@protobuf-ts/protoc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.0.tgz", - "integrity": "sha512-8mQmw+OVqrpaHgmErle8heE5Z1ktX2vmWJmvFORSTcHxMfqHLv8RKTRroC9pkBQRgUaSGSXmy7n4ItdZnz41dw==", - "dev": true, - "bin": { - "protoc": "protoc.js" - } - }, - "node_modules/@protobuf-ts/runtime": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.0.tgz", - "integrity": "sha512-DnJtLZFMglADv9jiawBmg0RaET4a6fNSAaAHuU6Ovw2ZhJ23ehIY0NrlYLS0Lc8HRH0S5rkLI1QF1A1h8uKUnA==", - "dev": true - }, - "node_modules/@protobuf-ts/runtime-rpc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.0.tgz", - "integrity": "sha512-h2S86+u2cNJACjzbBubbjKmNrnXkTmJ9yJHW4t7ZVS9xdV1C68blsVIh3Su4ghR8Nlj0459FuIUTsjWR8hA/7g==", - "dev": true, - "dependencies": { - "@protobuf-ts/runtime": "^2.9.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", - "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.18", - "@esbuild/android-arm64": "0.17.18", - "@esbuild/android-x64": "0.17.18", - "@esbuild/darwin-arm64": "0.17.18", - "@esbuild/darwin-x64": "0.17.18", - "@esbuild/freebsd-arm64": "0.17.18", - "@esbuild/freebsd-x64": "0.17.18", - "@esbuild/linux-arm": "0.17.18", - "@esbuild/linux-arm64": "0.17.18", - "@esbuild/linux-ia32": "0.17.18", - "@esbuild/linux-loong64": "0.17.18", - "@esbuild/linux-mips64el": "0.17.18", - "@esbuild/linux-ppc64": "0.17.18", - "@esbuild/linux-riscv64": "0.17.18", - "@esbuild/linux-s390x": "0.17.18", - "@esbuild/linux-x64": "0.17.18", - "@esbuild/netbsd-x64": "0.17.18", - "@esbuild/openbsd-x64": "0.17.18", - "@esbuild/sunos-x64": "0.17.18", - "@esbuild/win32-arm64": "0.17.18", - "@esbuild/win32-ia32": "0.17.18", - "@esbuild/win32-x64": "0.17.18" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-tsconfig": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz", - "integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", - "dev": true, - "dependencies": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5" - }, - "bin": { - "tsx": "dist/cli.js" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - } - }, - "dependencies": { - "@bufbuild/buf": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.15.0-1.tgz", - "integrity": "sha512-j+mkNd9kM+2b9JacmZNBxTkbOXtLUltzv0inWBYRqd4dJ+EwAR/CDfK6OXvia94aJsKWy8YKSgLu19VlTYSh1Q==", - "dev": true, - "requires": { - "@bufbuild/buf-darwin-arm64": "1.15.0-1", - "@bufbuild/buf-darwin-x64": "1.15.0-1", - "@bufbuild/buf-linux-aarch64": "1.15.0-1", - "@bufbuild/buf-linux-x64": "1.15.0-1", - "@bufbuild/buf-win32-arm64": "1.15.0-1", - "@bufbuild/buf-win32-x64": "1.15.0-1" - } - }, - "@bufbuild/buf-darwin-arm64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.15.0-1.tgz", - "integrity": "sha512-KV3rvScwjMCcj0DSkmx6Ejk8YF7LtnqA3jSokeYbGaLLfSvPXu4q9d0I2pq+jaYIA8RfbMerAqzR8MccdY4Vqw==", - "dev": true, - "optional": true - }, - "@bufbuild/buf-darwin-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.15.0-1.tgz", - "integrity": "sha512-hSEK9TIGmTA58PhUsvcuhF9LcmZ3mZedPgWT8cAeGZYcNJd1mkUEzsWsqnYYGZRe1QvOPZW1BsPIayWFBrlBMQ==", - "dev": true, - "optional": true - }, - "@bufbuild/buf-linux-aarch64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.15.0-1.tgz", - "integrity": "sha512-Ppa5mNy3z5cmTPo18Sc5xUIPfRBpa/Bc9VyqtUqwMJGtTQ1fC+JJ9LFUL8UxXcvdVRcErxXNyd6oGEZzOoLFFQ==", - "dev": true, - "optional": true - }, - "@bufbuild/buf-linux-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.15.0-1.tgz", - "integrity": "sha512-6QtcPOf6D3cXGAhMIhCkOlveLc19nXFCteUktuK73Ls8XDOLuhef4cEfb/Gh7RQCq6IyfFyzoEzb0cWybXnBbQ==", - "dev": true, - "optional": true - }, - "@bufbuild/buf-win32-arm64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.15.0-1.tgz", - "integrity": "sha512-h356aHM1BvHKjxrs9GjeuDxljqJDNtv8NhzssR3kD4ZkRjZYpMhc8YzpnodY3W520W9/6Q7k7CuVd2vhib1Fyg==", - "dev": true, - "optional": true - }, - "@bufbuild/buf-win32-x64": { - "version": "1.15.0-1", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.15.0-1.tgz", - "integrity": "sha512-dc1dBFDTNF/3ulr7rejsX/lBb2eqAPZtHI3w6YUQaXTkhmQtNOe45QkaOYnj4UFj6sBVI53WeAisNf3Wg+SUFQ==", - "dev": true, - "optional": true - }, - "@esbuild-kit/cjs-loader": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", - "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", - "dev": true, - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "@esbuild-kit/core-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", - "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", - "dev": true, - "requires": { - "esbuild": "~0.17.6", - "source-map-support": "^0.5.21" - } - }, - "@esbuild-kit/esm-loader": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", - "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", - "dev": true, - "requires": { - "@esbuild-kit/core-utils": "^3.0.0", - "get-tsconfig": "^4.4.0" - } - }, - "@esbuild/android-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", - "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", - "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", - "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", - "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", - "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", - "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", - "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", - "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", - "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", - "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", - "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", - "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", - "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", - "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", - "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", - "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", - "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", - "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", - "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", - "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", - "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", - "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", - "dev": true, - "optional": true - }, - "@protobuf-ts/plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.0.tgz", - "integrity": "sha512-SYHWyvobfYcm1tq5O9DVU0vPYLhm66l83ImGLZBME1bjtyVSZ06aVrAXr6mJrwAjmVBDN9TeoPqstk48zpMHjA==", - "dev": true, - "requires": { - "@protobuf-ts/plugin-framework": "^2.9.0", - "@protobuf-ts/protoc": "^2.9.0", - "@protobuf-ts/runtime": "^2.9.0", - "@protobuf-ts/runtime-rpc": "^2.9.0", - "typescript": "^3.9" - }, - "dependencies": { - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true - } - } - }, - "@protobuf-ts/plugin-framework": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.0.tgz", - "integrity": "sha512-/fgpwEgYeiazEpkp9S+iaxVXd6LCkfd2iCfsvHiiSz94DatwZGkhv/85ciq2vcZVwSeEagKoSKeinnQWYvTnxw==", - "dev": true, - "requires": { - "@protobuf-ts/runtime": "^2.9.0", - "typescript": "^3.9" - }, - "dependencies": { - "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true - } - } - }, - "@protobuf-ts/protoc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.0.tgz", - "integrity": "sha512-8mQmw+OVqrpaHgmErle8heE5Z1ktX2vmWJmvFORSTcHxMfqHLv8RKTRroC9pkBQRgUaSGSXmy7n4ItdZnz41dw==", - "dev": true - }, - "@protobuf-ts/runtime": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.0.tgz", - "integrity": "sha512-DnJtLZFMglADv9jiawBmg0RaET4a6fNSAaAHuU6Ovw2ZhJ23ehIY0NrlYLS0Lc8HRH0S5rkLI1QF1A1h8uKUnA==", - "dev": true - }, - "@protobuf-ts/runtime-rpc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.0.tgz", - "integrity": "sha512-h2S86+u2cNJACjzbBubbjKmNrnXkTmJ9yJHW4t7ZVS9xdV1C68blsVIh3Su4ghR8Nlj0459FuIUTsjWR8hA/7g==", - "dev": true, - "requires": { - "@protobuf-ts/runtime": "^2.9.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "esbuild": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", - "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.18", - "@esbuild/android-arm64": "0.17.18", - "@esbuild/android-x64": "0.17.18", - "@esbuild/darwin-arm64": "0.17.18", - "@esbuild/darwin-x64": "0.17.18", - "@esbuild/freebsd-arm64": "0.17.18", - "@esbuild/freebsd-x64": "0.17.18", - "@esbuild/linux-arm": "0.17.18", - "@esbuild/linux-arm64": "0.17.18", - "@esbuild/linux-ia32": "0.17.18", - "@esbuild/linux-loong64": "0.17.18", - "@esbuild/linux-mips64el": "0.17.18", - "@esbuild/linux-ppc64": "0.17.18", - "@esbuild/linux-riscv64": "0.17.18", - "@esbuild/linux-s390x": "0.17.18", - "@esbuild/linux-x64": "0.17.18", - "@esbuild/netbsd-x64": "0.17.18", - "@esbuild/openbsd-x64": "0.17.18", - "@esbuild/sunos-x64": "0.17.18", - "@esbuild/win32-arm64": "0.17.18", - "@esbuild/win32-ia32": "0.17.18", - "@esbuild/win32-x64": "0.17.18" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "get-tsconfig": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz", - "integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "tsx": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", - "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", - "dev": true, - "requires": { - "@esbuild-kit/cjs-loader": "^2.4.2", - "@esbuild-kit/core-utils": "^3.0.0", - "@esbuild-kit/esm-loader": "^2.5.5", - "fsevents": "~2.3.2" - } - }, - "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", - "dev": true - } - } + "name": "@protobuf-ts/test-conformance", + "version": "2.9.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@protobuf-ts/test-conformance", + "version": "2.9.0", + "license": "Apache-2.0", + "devDependencies": { + "@bufbuild/buf": "^1.15.0-1", + "tsx": "^3.12.7", + "typescript": "3.8.3" + } + }, + "node_modules/@bufbuild/buf": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.15.0-1.tgz", + "integrity": "sha512-j+mkNd9kM+2b9JacmZNBxTkbOXtLUltzv0inWBYRqd4dJ+EwAR/CDfK6OXvia94aJsKWy8YKSgLu19VlTYSh1Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "buf": "bin/buf", + "protoc-gen-buf-breaking": "bin/protoc-gen-buf-breaking", + "protoc-gen-buf-lint": "bin/protoc-gen-buf-lint" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@bufbuild/buf-darwin-arm64": "1.15.0-1", + "@bufbuild/buf-darwin-x64": "1.15.0-1", + "@bufbuild/buf-linux-aarch64": "1.15.0-1", + "@bufbuild/buf-linux-x64": "1.15.0-1", + "@bufbuild/buf-win32-arm64": "1.15.0-1", + "@bufbuild/buf-win32-x64": "1.15.0-1" + } + }, + "node_modules/@bufbuild/buf-darwin-arm64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.15.0-1.tgz", + "integrity": "sha512-KV3rvScwjMCcj0DSkmx6Ejk8YF7LtnqA3jSokeYbGaLLfSvPXu4q9d0I2pq+jaYIA8RfbMerAqzR8MccdY4Vqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-darwin-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.15.0-1.tgz", + "integrity": "sha512-hSEK9TIGmTA58PhUsvcuhF9LcmZ3mZedPgWT8cAeGZYcNJd1mkUEzsWsqnYYGZRe1QvOPZW1BsPIayWFBrlBMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-aarch64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.15.0-1.tgz", + "integrity": "sha512-Ppa5mNy3z5cmTPo18Sc5xUIPfRBpa/Bc9VyqtUqwMJGtTQ1fC+JJ9LFUL8UxXcvdVRcErxXNyd6oGEZzOoLFFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.15.0-1.tgz", + "integrity": "sha512-6QtcPOf6D3cXGAhMIhCkOlveLc19nXFCteUktuK73Ls8XDOLuhef4cEfb/Gh7RQCq6IyfFyzoEzb0cWybXnBbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-arm64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.15.0-1.tgz", + "integrity": "sha512-h356aHM1BvHKjxrs9GjeuDxljqJDNtv8NhzssR3kD4ZkRjZYpMhc8YzpnodY3W520W9/6Q7k7CuVd2vhib1Fyg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.15.0-1.tgz", + "integrity": "sha512-dc1dBFDTNF/3ulr7rejsX/lBb2eqAPZtHI3w6YUQaXTkhmQtNOe45QkaOYnj4UFj6sBVI53WeAisNf3Wg+SUFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "dev": true, + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "dev": true, + "dependencies": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "dev": true, + "dependencies": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz", + "integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "dev": true, + "dependencies": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5" + }, + "bin": { + "tsx": "dist/cli.js" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "@bufbuild/buf": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.15.0-1.tgz", + "integrity": "sha512-j+mkNd9kM+2b9JacmZNBxTkbOXtLUltzv0inWBYRqd4dJ+EwAR/CDfK6OXvia94aJsKWy8YKSgLu19VlTYSh1Q==", + "dev": true, + "requires": { + "@bufbuild/buf-darwin-arm64": "1.15.0-1", + "@bufbuild/buf-darwin-x64": "1.15.0-1", + "@bufbuild/buf-linux-aarch64": "1.15.0-1", + "@bufbuild/buf-linux-x64": "1.15.0-1", + "@bufbuild/buf-win32-arm64": "1.15.0-1", + "@bufbuild/buf-win32-x64": "1.15.0-1" + } + }, + "@bufbuild/buf-darwin-arm64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.15.0-1.tgz", + "integrity": "sha512-KV3rvScwjMCcj0DSkmx6Ejk8YF7LtnqA3jSokeYbGaLLfSvPXu4q9d0I2pq+jaYIA8RfbMerAqzR8MccdY4Vqw==", + "dev": true, + "optional": true + }, + "@bufbuild/buf-darwin-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.15.0-1.tgz", + "integrity": "sha512-hSEK9TIGmTA58PhUsvcuhF9LcmZ3mZedPgWT8cAeGZYcNJd1mkUEzsWsqnYYGZRe1QvOPZW1BsPIayWFBrlBMQ==", + "dev": true, + "optional": true + }, + "@bufbuild/buf-linux-aarch64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.15.0-1.tgz", + "integrity": "sha512-Ppa5mNy3z5cmTPo18Sc5xUIPfRBpa/Bc9VyqtUqwMJGtTQ1fC+JJ9LFUL8UxXcvdVRcErxXNyd6oGEZzOoLFFQ==", + "dev": true, + "optional": true + }, + "@bufbuild/buf-linux-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.15.0-1.tgz", + "integrity": "sha512-6QtcPOf6D3cXGAhMIhCkOlveLc19nXFCteUktuK73Ls8XDOLuhef4cEfb/Gh7RQCq6IyfFyzoEzb0cWybXnBbQ==", + "dev": true, + "optional": true + }, + "@bufbuild/buf-win32-arm64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.15.0-1.tgz", + "integrity": "sha512-h356aHM1BvHKjxrs9GjeuDxljqJDNtv8NhzssR3kD4ZkRjZYpMhc8YzpnodY3W520W9/6Q7k7CuVd2vhib1Fyg==", + "dev": true, + "optional": true + }, + "@bufbuild/buf-win32-x64": { + "version": "1.15.0-1", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.15.0-1.tgz", + "integrity": "sha512-dc1dBFDTNF/3ulr7rejsX/lBb2eqAPZtHI3w6YUQaXTkhmQtNOe45QkaOYnj4UFj6sBVI53WeAisNf3Wg+SUFQ==", + "dev": true, + "optional": true + }, + "@esbuild-kit/cjs-loader": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", + "integrity": "sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==", + "dev": true, + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild-kit/core-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.1.0.tgz", + "integrity": "sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==", + "dev": true, + "requires": { + "esbuild": "~0.17.6", + "source-map-support": "^0.5.21" + } + }, + "@esbuild-kit/esm-loader": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.5.5.tgz", + "integrity": "sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==", + "dev": true, + "requires": { + "@esbuild-kit/core-utils": "^3.0.0", + "get-tsconfig": "^4.4.0" + } + }, + "@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "dev": true, + "optional": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "get-tsconfig": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz", + "integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "tsx": { + "version": "3.12.7", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.12.7.tgz", + "integrity": "sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==", + "dev": true, + "requires": { + "@esbuild-kit/cjs-loader": "^2.4.2", + "@esbuild-kit/core-utils": "^3.0.0", + "@esbuild-kit/esm-loader": "^2.5.5", + "fsevents": "~2.3.2" + } + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + } + } } diff --git a/packages/test-fixtures/.gitignore b/packages/test-fixtures/.gitignore deleted file mode 100644 index 720fe750..00000000 --- a/packages/test-fixtures/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.codegenreq -*.descriptorset -/node_modules diff --git a/packages/test-fixtures/deprecation-explicit.fixture.ts b/packages/test-fixtures/deprecation-explicit.fixture.ts deleted file mode 100644 index f2ee1cb1..00000000 --- a/packages/test-fixtures/deprecation-explicit.fixture.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type {Fixture} from "./index"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.DeprecatedMessage', - deprecated: 'explicit', - fields: [ - {no: 1, name: "field", kind: "scalar", T: 9 /*string*/}, - ], -}); - - -f.push({ - typeName: 'spec.DeprecatedFieldMessage', - deprecatedFields: ['deprecated_field'], - fields: [ - {no: 1, name: "deprecated_field", kind: "scalar", T: 9 /*string*/}, - {no: 2, name: "current_field", kind: "scalar", T: 9 /*string*/}, - ], -}); - diff --git a/packages/test-fixtures/deprecation-implicit.fixture.ts b/packages/test-fixtures/deprecation-implicit.fixture.ts deleted file mode 100644 index 18b4565f..00000000 --- a/packages/test-fixtures/deprecation-implicit.fixture.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type {Fixture} from "./index"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.ImplicitlyDeprecatedMessage', - deprecated: 'implicit', - fields: [], -}); - diff --git a/packages/test-fixtures/index.ts b/packages/test-fixtures/index.ts deleted file mode 100644 index 09466e5d..00000000 --- a/packages/test-fixtures/index.ts +++ /dev/null @@ -1,559 +0,0 @@ -import msgOneofs from './msg-oneofs.fixtures' -import msgScalar from './msg-scalar.fixtures' -import msgEnum from './msg-enum.fixtures' -import msgJsonNames from './msg-json-names.fixtures' -import msgProto2Optionals from './msg-proto2-optionals.fixtures' -import msgProto3Optionals from './msg-proto3-optionals.fixtures' -import msgMessage from './msg-message.fixtures' -import deprecationExplicit from './deprecation-explicit.fixture' -import deprecationImplicit from './deprecation-implicit.fixture' -import {FieldInfo, MessageInfo, normalizeFieldInfo, PartialFieldInfo} from "@protobuf-ts/runtime"; - -/** - * A fixture for a message type. - */ -export interface Fixture { - /** - * type name of the message - */ - typeName: string; - - /** - * Is this message deprecated? - * - * If so, is it explicitly deprecated by the user - * or implicitly deprecated, for example because - * the parent file is deprecated. - * - * Omitting this property means the type is *not* - * deprecated. - */ - deprecated?: 'explicit' | 'implicit'; - - /** - * Are there any fields explicitly marked deprecated? - */ - deprecatedFields?: string[]; - - /** - * Field info for the message. Must be valid. - */ - fields: PartialFieldInfo[]; - - /** - * Generic messages conforming to the field info above. - * Must be valid. - */ - messages?: { - /** - * Special case: Must contain valid default data - * conforming to the field info above. - * - * If "json.default" is present, it must be - * equivalent to this message. - */ - default: UnknownMessage; - - /** - * Any other case. But must still be valid. - * - * If a corresponding key exists in "json", it must - * be the representation of this message. - */ - [key: string]: UnknownMessage; - }; - - /** - * Can be any data. The only rule is that it has to - * break the contract of the message in some way. - */ - invalidMessages?: { - [key: string]: unknown; - }, - - /** - * Example JSON representations. - * Must be valid. - */ - json?: { - /** - * Special case: If present, must contain - * valid default data. - * - * If "message.default" is present, it must be - * equivalent to this representation. - */ - default: JsonObject; - - /** - * Any other case. But must still be valid. - * - * If a corresponding key exists in "messages", this - * JSON must be a valid representation of it. - */ - [key: string]: JsonObject; - }; - - /** - * Expectations for reading specific JSON fields. - */ - jsonReads?: { - [fieldName: string]: { - [key: string]: { - input: JsonValue | undefined; - expect: unknown; - }; - }; - }, - - /** - * Expectations for reading specific JSON fields. - */ - jsonReadErrors?: { - [fieldName: string]: { - [key: string]: { - input: JsonValue; - expect: RegExp; - }; - }; - }, - - /** - * Expectations for writing specific JSON fields. - */ - jsonWrites?: { - [fieldName: string]: { - [key: string]: { - input: unknown; - expect: JsonValue | undefined; - options?: object; - }; - }; - }, - -} - - -interface JsonReadFixture { - fieldName: string; - key: string; - input: JsonValue | undefined; - expect: unknown; -} - -interface JsonReadErrorFixture { - fieldName: string; - key: string; - input: JsonValue; - expect: RegExp; -} - -interface JsonWriteFixture { - fieldName: string; - key: string; - input: unknown; - expect: JsonValue | undefined; - options?: object; -} - -/** - * Generic protobuf message data. - */ -interface UnknownMessage { - [k: string]: any; -} - -/** - * Represents any possible JSON value. - */ -type JsonValue = number | string | boolean | null | JsonObject | JsonValue[]; - -/** - * Represents a JSON object. - */ -type JsonObject = { [k: string]: JsonValue }; - - -class FixtureRegistry { - - private readonly list: Fixture[] = []; - private readonly map = new Map(); - private readonly jsonStringCache = new Map(); - - - register(fixture: Fixture | Fixture[]): void { - let source = Array.isArray(fixture) ? fixture : [fixture]; - for (let item of source) { - this.validateFixture(item); - if (this.map.has(item.typeName)) { - throw new Error(`There already is a fixture for "${item.typeName}" registered.`); - } - this.map.set(item.typeName, item); - this.list.push(item); - } - } - - - private validateFixture(fixture: Fixture): void { - const checks = { - "typeName ok": fixture.typeName.trim().length > 0, - - "field names unique": fixture.fields - .every((value, index, array) => - array.findIndex(f => f.name === value.name) === index - ), - "deprecated fields exist": fixture.deprecatedFields - ? fixture.deprecatedFields.every(fn => fixture.fields.some(fi => fi.name === fn)) - : true, - - "jsonRead field names exist": fixture.jsonReads - ? Object.keys(fixture.jsonReads).every(fn => fixture.fields.some(fi => fi.name === fn)) - : true, - - "jsonReadError field names exist": fixture.jsonReadErrors - ? Object.keys(fixture.jsonReadErrors).every(fn => fixture.fields.some(fi => fi.name === fn)) - : true, - - "jsonWrite field names exist": fixture.jsonWrites - ? Object.keys(fixture.jsonWrites).every(fn => fixture.fields.some(fi => fi.name === fn)) - : true, - }; - for (let [k, v] of Object.entries(checks)) { - if (!v) throw new Error(`Fixture "${fixture.typeName}" violated "${k}"`); - } - } - - - usingTypeNames(fn: (typeName: string) => void) { - for (let f of this.list) { - fn(f.typeName); - } - } - - - usingDeprecation(fn: (typeName: string, explicitlyDeprecated: boolean, implicitlyDeprecated: boolean, deprecatedFieldNames: string[]) => void): void { - for (let f of this.list) { - let d = this.getDeprecation(f.typeName); - fn(f.typeName, d.explicitlyDeprecated, d.implicitlyDeprecated, d.deprecatedFieldNames); - } - } - - - /** - * If a fixture has a message and a json under the same key, - * return them as pairs. - */ - usingPairs(fn: (typeName: string, key: string, msg: UnknownMessage, json: JsonObject) => void): void { - for (let f of this.list) { - for (let p of this.listPairs(f.typeName)) { - fn(f.typeName, p[0], p[1], p[2]); - } - } - } - - - usingMessages(fn: (typeName: string, key: string, msg: UnknownMessage) => void): void { - for (let f of this.list) { - for (let [k, g] of this.listMessages(f.typeName)) { - fn(f.typeName, k, g); - } - } - } - - - usingInvalidMessages(fn: (typeName: string, key: string, msg: unknown) => void): void { - for (let f of this.list) { - for (let [k, g] of this.listInvalidMessages(f.typeName)) { - fn(f.typeName, k, g); - } - } - } - - - usingJson(fn: (typeName: string, key: string, json: JsonObject) => void): void { - for (let f of this.list) { - for (let [k, j] of this.listJson(f.typeName)) { - fn(f.typeName, k, j); - } - } - } - - usingJsonReads(fn: (typeName: string, field: FieldInfo, key: string, input: JsonObject, exp: UnknownMessage, defaults: UnknownMessage) => void): void { - for (let fix of this.list) { - for (let jsonFix of this.listJsonReads(fix.typeName)) { - - let field = this.makeMessageField(fix, jsonFix.fieldName); - if (!field) throw new Error(`Fixture ${fix.typeName} "jsonReads.${jsonFix.key}.fieldName" refers to field "${jsonFix.fieldName}" which does not exist.`); - - let defaults = this.makeSingleFieldDefaults(fix, jsonFix.fieldName); - if (!defaults) throw new Error(`Fixture ${fix.typeName} "jsonReads.${jsonFix.key}" requires the fixture have a "messages.default".`); - - let input: JsonObject = {}; - if (jsonFix.input !== undefined) input[field.jsonName] = jsonFix.input; - let expect: UnknownMessage = {[field.localName]: jsonFix.expect}; - fn(fix.typeName, field, jsonFix.key, input, expect, defaults); - } - } - } - - - usingJsonReadErrors(fn: (typeName: string, field: FieldInfo, key: string, input: JsonObject, expect: RegExp, defaults: UnknownMessage) => void): void { - for (let fix of this.list) { - for (let jsonFix of this.listJsonReadErrors(fix.typeName)) { - - let field = this.makeMessageField(fix, jsonFix.fieldName); - if (!field) throw new Error(`Fixture ${fix.typeName} "jsonReadErrors.${jsonFix.key}.fieldName" refers to field "${jsonFix.fieldName}" which does not exist.`); - - let defaults = this.makeSingleFieldDefaults(fix, jsonFix.fieldName); - if (!defaults) throw new Error(`Fixture ${fix.typeName} "jsonReadErrors.${jsonFix.key}" requires the fixture have a "messages.default".`); - - let input: JsonObject = {[field.jsonName]: jsonFix.input}; - fn(fix.typeName, field, jsonFix.key, input, jsonFix.expect, defaults); - } - } - } - - - usingJsonWrites(fn: (typeName: string, field: FieldInfo, key: string, input: UnknownMessage, expect: JsonObject, opt: any) => void): void { - for (let fix of this.list) { - for (let jsonFix of this.listJsonWrites(fix.typeName)) { - - let field = this.makeMessageField(fix, jsonFix.fieldName); - if (!field) throw new Error(`Fixture ${fix.typeName} "jsonReadErrors.${jsonFix.key}.fieldName" refers to field "${jsonFix.fieldName}" which does not exist.`); - - let input: UnknownMessage = {[field.localName]: jsonFix.input}; - let expect: JsonObject = {}; - if (jsonFix.expect !== undefined) expect[field.jsonName] = jsonFix.expect; - fn(fix.typeName, field, jsonFix.key, input, expect, jsonFix.options ?? {}); - } - } - } - - - hasFixture(typeName: string): boolean { - return this.map.has(typeName); - } - - - getFieldsRaw(type: string): PartialFieldInfo[] { - let fix = this.getFix(type); - return this.cloneGeneric(fix.fields); - } - - - getFieldsNormalized(type: string): FieldInfo[] { - let fix = this.getFix(type); - return this.cloneGeneric(fix.fields).map(f => normalizeFieldInfo(f)); - } - - - getDeprecation(type: string) { - let fix = this.getFix(type); - return { - explicitlyDeprecated: fix.deprecated === "explicit", - implicitlyDeprecated: fix.deprecated === "implicit", - deprecatedFieldNames: fix.deprecatedFields ? fix.deprecatedFields.concat() : [] - }; - } - - - /** - * Return message info with normalized fields for given fixture. - */ - makeMessageInfo(type: string): MessageInfo { - let fix = this.getFix(type); - return { - typeName: fix.typeName, - fields: this.getFieldsNormalized(type), - options: {} - } - } - - getMessage(type: string, key: string): UnknownMessage { - let fix = this.getFix(type); - if (!fix.messages) throw new Error(`Fixture for "${type}" has no messages.`); - let data = fix.messages[key]; - if (!data) throw new Error(`Fixture for "${type}" has no messages with key "${key}".`); - return this.cloneGeneric(data); - } - - getInvalidMessage(type: string, key: string): unknown { - let fix = this.getFix(type); - if (!fix.invalidMessages) throw new Error(`Fixture for "${type}" has no invalidMessages.`); - let data = fix.invalidMessages[key]; - if (!data) throw new Error(`Fixture for "${type}" has no invalidMessages with key "${key}".`); - return this.cloneGeneric(data); - } - - - listMessages(type: string): [string, UnknownMessage][] { - let fix = this.getFix(type); - if (!fix.messages) return []; - return Object.keys(fix.messages).map(key => [key, this.getMessage(type, key)]); - } - - listInvalidMessages(type: string): [string, unknown][] { - let fix = this.getFix(type); - if (!fix.invalidMessages) return []; - return Object.keys(fix.invalidMessages).map(key => [key, this.getInvalidMessage(type, key)]); - } - - - getJson(type: string, key: string): JsonObject { - let fix = this.getFix(type); - if (!fix.json) throw new Error(`Fixture for "${type}" has no json data.`); - let data = fix.json[key]; - if (!data) throw new Error(`Fixture for "${type}" has no json data with key "${key}".`); - return this.cloneJson(data); - } - - - listJson(type: string): [string, JsonObject][] { - let fix = this.getFix(type); - if (!fix.json) return []; - return Object.keys(fix.json).map(key => [key, this.getJson(type, key)]); - } - - - /** - * Returns pairs of "message" and "json" with matching keys. - */ - listPairs(type: string): [string, UnknownMessage, JsonObject][] { - let - fix = this.getFix(type), - om = fix.messages, - oj = fix.json, - pairs: [string, UnknownMessage, JsonObject][] = []; - if (om && oj) { - for (let key of Object.keys(om)) { - if (!oj.hasOwnProperty(key)) continue; - pairs.push([key, this.getMessage(fix.typeName, key), this.getJson(fix.typeName, key)]); - } - } - return pairs; - } - - - listJsonReads(type: string): JsonReadFixture[] { - let fix = this.getFix(type); - if (!fix.jsonReads) return []; - let r: JsonReadFixture[] = []; - for (let [fieldName, specs] of Object.entries(fix.jsonReads)) { - for (let [key, spec] of Object.entries(specs)) { - r.push({ - key, - fieldName, - input: spec.input === undefined ? undefined : this.cloneJson(spec.input), - expect: this.cloneGeneric(spec.expect) - } as JsonReadFixture); - } - } - return r; - } - - - listJsonReadErrors(type: string): JsonReadErrorFixture[] { - let fix = this.getFix(type); - if (!fix.jsonReadErrors) return []; - let r: JsonReadErrorFixture[] = []; - for (let [fieldName, specs] of Object.entries(fix.jsonReadErrors)) { - for (let [key, spec] of Object.entries(specs)) { - r.push({ - key, - fieldName, - input: this.cloneJson(spec.input), - expect: spec.expect, - } as JsonReadErrorFixture); - } - } - return r; - } - - - listJsonWrites(type: string): JsonWriteFixture[] { - let fix = this.getFix(type); - if (!fix.jsonWrites) return []; - let r: JsonWriteFixture[] = []; - for (let [fieldName, specs] of Object.entries(fix.jsonWrites)) { - for (let [key, spec] of Object.entries(specs)) { - r.push({ - key, - fieldName, - input: this.cloneGeneric(spec.input), - expect: spec.expect === undefined ? undefined : this.cloneJson(spec.expect), - options: this.cloneGeneric(spec.options), - } as JsonWriteFixture); - } - } - return r; - } - - - private makeMessageField(type: string | Fixture, fieldName: string): FieldInfo | undefined { - let fix = this.getFix(type); - let fieldPart = fix.fields.find(f => f.name === fieldName); - return fieldPart ? normalizeFieldInfo(fieldPart) : undefined; - } - - - private makeSingleFieldDefaults(type: string | Fixture, fieldName: string): UnknownMessage | undefined { - let fix = this.getFix(type); - let defaults = this.cloneGeneric(fix.messages?.default); - if (!defaults) return undefined; - for (let f of this.getFieldsNormalized(fix.typeName).filter(f => f.name !== fieldName)) { - delete defaults[f.localName]; - } - return defaults; - } - - - private getFix(type: string | Fixture): Fixture { - let n = typeof type == "string" ? type : type.typeName; - let f = this.map.get(n); - if (!f) throw new Error(); - return f; - } - - - private cloneJson(jsonVal: T): T { - let jsonStr = this.jsonStringCache.get(jsonVal); - if (!jsonStr) { - jsonStr = JSON.stringify(jsonVal); - this.jsonStringCache.set(jsonVal, jsonStr); - } - return JSON.parse(jsonStr) as T; - } - - - private cloneGeneric(v: T): T { - if (v instanceof Uint8Array) { - return v.slice() as unknown as T; - } else if (Array.isArray(v)) { - return v.map(i => this.cloneGeneric(i)) as unknown as T; - } else if (typeof v == "object" && v !== null) { - let c: any = {}; - for (let k of Object.keys(v)) { - c[k] = this.cloneGeneric((v as any)[k]); - } - return c; - } else { - return v; - } - } - - -} - - -export const fixtures = new FixtureRegistry(); -fixtures.register(msgOneofs); -fixtures.register(msgScalar); -fixtures.register(msgEnum); -fixtures.register(msgJsonNames); -fixtures.register(msgProto2Optionals); -fixtures.register(msgProto3Optionals); -fixtures.register(msgMessage); -fixtures.register(deprecationExplicit); -fixtures.register(deprecationImplicit); - - diff --git a/packages/test-fixtures/msg-enum.fixtures.ts b/packages/test-fixtures/msg-enum.fixtures.ts deleted file mode 100644 index 6f4de005..00000000 --- a/packages/test-fixtures/msg-enum.fixtures.ts +++ /dev/null @@ -1,90 +0,0 @@ -import type {Fixture} from "./index"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: "spec.EnumFieldMessage", - fields: [ - {no: 1, name: "enum_field", kind: "enum", T: () => [".spec.SimpleEnum", SimpleEnum]}, - { - no: 2, - name: "repeated_enum_field", - repeat: 1, - kind: "enum", - T: () => [".spec.SimpleEnum", SimpleEnum] - }, - {no: 3, name: "alias_enum_field", kind: "enum", T: () => [".spec.AliasEnum", AliasEnum]}, - {no: 4, name: "prefix_enum_field", kind: "enum", T: () => [".spec.PrefixEnum", PrefixEnum, "PREFIX_ENUM_"]}, - ], - messages: { - "default": { - enumField: 0, - repeatedEnumField: [], - aliasEnumField: 0, - prefixEnumField: 0, - }, - "example": { - enumField: 1, - repeatedEnumField: [0, 1, 2], - aliasEnumField: 1, - prefixEnumField: 2, - }, - }, - json: { - "default": {}, - "nulls equalling defaults": { - enumField: null, - repeatedEnumField: null, - aliasEnumField: null, - prefixEnumField: null, - }, - "example": { - enumField: "YES", - repeatedEnumField: ["ANY", "YES", "NO"], - aliasEnumField: "C", - prefixEnumField: "PREFIX_ENUM_NO", - }, - }, - jsonReads: { - "enum_field": { - "1 reads as 1": {input: 1, expect: 1}, - "\"YES\" reads as 1": {input: "YES", expect: 1}, - }, - }, - jsonReadErrors: { - "repeated_enum_field": { - "null fails to parse": { - input: [null], - expect: /Cannot parse JSON null for / - } - }, - }, - jsonWrites: { - "enum_field": { - "enumAsInteger:true": {input: 1, expect: 1, options: {enumAsInteger: true}}, - "emitDefaultValues:true": {input: 0, expect: "ANY", options: {emitDefaultValues: true}}, - "emitDefaultValues:false": {input: 0, expect: undefined, options: {emitDefaultValues: false}}, - }, - }, - -}); - - -enum SimpleEnum { - ANY = 0, - YES = 1, - NO = 2, -} - -enum AliasEnum { - A = 0, - B = 1, - C = 1, -} - -enum PrefixEnum { - ANY = 0, - YES = 1, - NO = 2, -} diff --git a/packages/test-fixtures/msg-json-names.fixtures.ts b/packages/test-fixtures/msg-json-names.fixtures.ts deleted file mode 100644 index 1b897697..00000000 --- a/packages/test-fixtures/msg-json-names.fixtures.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type {Fixture} from "./index"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.JsonNamesMessage', - fields: [ - {no: 1, name: "scalar_field", jsonName: "scalarFieldJsonName", kind: "scalar", T: 9 /*string*/}, - { - no: 2, - name: "repeated_scalar_field", - jsonName: "repeatedScalarFieldJsonName", - kind: "scalar", - T: 9 /*string*/, - repeat: 2 /*UNPACKED*/ - } - ], - messages: { - 'default': { - scalarField: "", - repeatedScalarField: [] - }, - 'example': { - scalarField: "hello", - repeatedScalarField: ["hello", "world"] - }, - }, - json: { - 'default': {}, - 'example': { - 'scalarFieldJsonName': "hello", - 'repeatedScalarFieldJsonName': ["hello", "world"] - }, - }, -}); - diff --git a/packages/test-fixtures/msg-message.fixtures.ts b/packages/test-fixtures/msg-message.fixtures.ts deleted file mode 100644 index b234d500..00000000 --- a/packages/test-fixtures/msg-message.fixtures.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type {Fixture} from "./index"; -import {MessageType} from "@protobuf-ts/runtime"; - - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.MessageFieldMessage', - fields: [ - {no: 1, name: "message_field", kind: "message", T: () => MessageFieldMessage_TestMessage}, - { - no: 2, - name: "repeated_message_field", - repeat: 1, - kind: "message", - T: () => MessageFieldMessage_TestMessage - } - ], - messages: { - 'default': { - repeatedMessageField: [], - }, - 'example': { - messageField: {name: "test"}, - repeatedMessageField: [{name: "a"}, {name: "b"}], - }, - }, - json: { - 'default': {}, - }, - jsonReadErrors: { - "repeated_message_field": { - "null fails to parse": { - input: [null], - expect: /Cannot parse JSON null for / - } - }, - }, - - -}); - - -const MessageFieldMessage_TestMessage = new MessageType("spec.MessageFieldMessage.TestMessage", [ - {no: 1, name: "name", kind: "scalar", T: 9 /*string*/} -]); diff --git a/packages/test-fixtures/msg-oneofs.fixtures.ts b/packages/test-fixtures/msg-oneofs.fixtures.ts deleted file mode 100644 index 12671c6b..00000000 --- a/packages/test-fixtures/msg-oneofs.fixtures.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type {Fixture} from "./index"; -import {MessageType} from "@protobuf-ts/runtime"; - - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.OneofScalarMemberMessage', - fields: [ - {no: 1, name: "value", oneof: "result", kind: "scalar", T: 5 /*int32*/}, - {no: 2, name: "error", oneof: "result", kind: "scalar", T: 9 /*string*/} - ], - messages: { - 'default': { - result: {oneofKind: undefined} - }, - 'err': { - result: {oneofKind: 'error', error: 'hello'} - }, - }, - json: { - 'default': {}, - 'err': {error: 'hello'}, - 'null reads to ""': {error: null}, - }, -}); - -f.push({ - typeName: 'spec.OneofMessageMemberMessage', - fields: [ - {no: 1, name: "a", oneof: "objects", kind: "message", T: () => OneofMessageMemberMessage_TestMessageA}, - {no: 2, name: "b", oneof: "objects", kind: "message", T: () => OneofMessageMemberMessage_TestMessageB} - ], - messages: { - 'default': { - objects: {oneofKind: undefined} - }, - 'a': { - objects: {oneofKind: 'a', a: {name: 'A'}} - }, - }, - json: { - 'default': {}, - 'a': {a: {name: 'A'}} - }, -}); - - -export const OneofMessageMemberMessage_TestMessageA = new MessageType("spec.OneofMessageMemberMessage.TestMessageA", [ - {no: 1, name: "name", kind: "scalar", T: 9 /*string*/} -]); -export const OneofMessageMemberMessage_TestMessageB = new MessageType("spec.OneofMessageMemberMessage.TestMessageB", [ - {no: 1, name: "name", kind: "scalar", T: 9 /*string*/} -]); diff --git a/packages/test-fixtures/msg-proto2-optionals.fixtures.ts b/packages/test-fixtures/msg-proto2-optionals.fixtures.ts deleted file mode 100644 index 6a1ba0ae..00000000 --- a/packages/test-fixtures/msg-proto2-optionals.fixtures.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type {Fixture} from "./index"; -import {MessageType} from "@protobuf-ts/runtime"; - - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.Proto2OptionalsMessage', - fields: [ - {no: 1, name: "string_field", opt: true, kind: "scalar", T: 9 /*string*/}, - {no: 2, name: "bytes_field", opt: true, kind: "scalar", T: 12 /*bytes*/}, - {no: 3, name: "enum_field", opt: true, kind: "enum", T: () => ["spec.Proto2OptionalsMessage.TestEnum", Proto2OptionalsMessage_TestEnum]}, - {no: 4, name: "message_field", kind: "message", T: () => Proto2OptionalsMessage_TestMessage} - ], - messages: { - 'default': { - }, - 'empty': { - stringField: "", - bytesField: new Uint8Array(0), - enumField: 0, - messageField: {field: ""}, - }, - }, - json: { - 'default': {}, - 'empty': { - stringField: "", - bytesField: "", - enumField: 'ANY', - messageField: {}, - }, - }, - jsonReads: { - 'string_field': { - 'null reads to "" like regular oneof': { input: null, expect: ""}, - 'undefined reads to undefined like regular oneof': { input: undefined, expect: undefined}, - } - }, - jsonWrites: { - 'string_field': { - 'undefined writes to undefined like regular oneof': { input: undefined, expect: undefined}, - } - }, -}); - - -const Proto2OptionalsMessage_TestMessage = new MessageType("spec.Proto2OptionalsMessage.TestMessage", [ - {no: 1, name: "field", kind: "scalar", T: 9 /*string*/} -]); - -enum Proto2OptionalsMessage_TestEnum { - ANY = 0, - YES = 1, - NO = 2, -} - diff --git a/packages/test-fixtures/msg-proto3-optionals.fixtures.ts b/packages/test-fixtures/msg-proto3-optionals.fixtures.ts deleted file mode 100644 index d12982b7..00000000 --- a/packages/test-fixtures/msg-proto3-optionals.fixtures.ts +++ /dev/null @@ -1,70 +0,0 @@ -import type {Fixture} from "./index"; -import {MessageType} from "@protobuf-ts/runtime"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: 'spec.Proto3OptionalsMessage', - fields: [ - {no: 1, name: "string_field", opt: true, kind: "scalar", T: 9 /*string*/}, - {no: 2, name: "bytes_field", opt: true, kind: "scalar", T: 12 /*bytes*/}, - { - no: 3, - name: "enum_field", - opt: true, - kind: "enum", - T: () => ["spec.Proto3OptionalsMessage.TestEnum", Proto3OptionalsMessage_TestEnum] - }, - {no: 4, name: "message_field", kind: "message", T: () => Proto3OptionalsMessage_TestMessage} - ], - messages: { - 'default': { - }, - 'empty': { - stringField: "", - bytesField: new Uint8Array(0), - enumField: 0, - messageField: {field: ""}, - }, - }, - json: { - 'default': {}, - 'empty': { - stringField: "", - bytesField: "", - enumField: 'ANY', - messageField: {}, - }, - }, - jsonReads: { - 'string_field': { - 'null reads to "" like regular oneof': {input: null, expect: ""}, - 'undefined reads to undefined like regular oneof': {input: undefined, expect: undefined}, - }, - 'enum_field': { - 'null reads to 0 like regular oneof': {input: null, expect: 0}, - 'undefined reads to undefined like regular oneof': {input: undefined, expect: undefined}, - }, - }, - jsonWrites: { - 'string_field': { - 'undefined writes to undefined like regular oneof': {input: undefined, expect: undefined}, - }, - 'enum_field': { - 'undefined writes to undefined like regular oneof': {input: undefined, expect: undefined}, - }, - }, -}); - - -const Proto3OptionalsMessage_TestMessage = new MessageType("spec.Proto3OptionalsMessage.TestMessage", [ - {no: 1, name: "field", kind: "scalar", T: 9 /*string*/} -]); - -enum Proto3OptionalsMessage_TestEnum { - ANY = 0, - YES = 1, - NO = 2, -} - diff --git a/packages/test-fixtures/msg-scalar.fixtures.ts b/packages/test-fixtures/msg-scalar.fixtures.ts deleted file mode 100644 index 8bbddcee..00000000 --- a/packages/test-fixtures/msg-scalar.fixtures.ts +++ /dev/null @@ -1,426 +0,0 @@ -import type {Fixture} from "./index"; - -const f: Fixture[] = []; -export default f; - -f.push({ - typeName: "spec.ScalarValuesMessage", - fields: [ - {no: 1, name: "double_field", kind: "scalar", T: 1 /*double*/}, - {no: 2, name: "float_field", kind: "scalar", T: 2 /*float*/}, - {no: 3, name: "int64_field", kind: "scalar", T: 3 /*int64*/}, - {no: 4, name: "uint64_field", kind: "scalar", T: 4 /*uint64*/}, - {no: 5, name: "int32_field", kind: "scalar", T: 5 /*int32*/}, - {no: 6, name: "fixed64_field", kind: "scalar", T: 6 /*fixed64*/}, - {no: 7, name: "fixed32_field", kind: "scalar", T: 7 /*fixed32*/}, - {no: 8, name: "bool_field", kind: "scalar", T: 8 /*bool*/}, - {no: 9, name: "string_field", kind: "scalar", T: 9 /*string*/}, - {no: 11, name: "bytes_field", kind: "scalar", T: 12 /*bytes*/}, - {no: 12, name: "uint32_field", kind: "scalar", T: 13 /*uint32*/}, - {no: 14, name: "sfixed32_field", kind: "scalar", T: 15 /*sfixed32*/}, - {no: 15, name: "sfixed64_field", kind: "scalar", T: 16 /*sfixed64*/}, - {no: 16, name: "sint32_field", kind: "scalar", T: 17 /*sint32*/}, - {no: 17, name: "sint64_field", kind: "scalar", T: 18 /*sint64*/} - ], - messages: { - "default": { - doubleField: 0, - floatField: 0, - int64Field: "0", - uint64Field: "0", - int32Field: 0, - fixed64Field: "0", - fixed32Field: 0, - boolField: false, - stringField: "", - bytesField: new Uint8Array(0), - uint32Field: 0, - sfixed32Field: 0, - sfixed64Field: "0", - sint32Field: 0, - sint64Field: "0", - }, - "example": { - doubleField: 0.75, - floatField: -0.75, - int64Field: "-1", - uint64Field: "1", - int32Field: -123, - fixed64Field: "1", - fixed32Field: 123, - boolField: true, - stringField: "hello world", - bytesField: new Uint8Array([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]), - uint32Field: 123, - sfixed32Field: -123, - sfixed64Field: "-1", - sint32Field: -1, - sint64Field: "-1", - }, - }, - json: { - "default": {}, - "example": { - doubleField: 0.75, - floatField: -0.75, - int64Field: "-1", - uint64Field: "1", - int32Field: -123, - fixed64Field: "1", - fixed32Field: 123, - boolField: true, - stringField: "hello world", - bytesField: "aGVsbG8gd29ybGQ=", - uint32Field: 123, - sfixed32Field: -123, - sfixed64Field: "-1", - sint32Field: -1, - sint64Field: "-1" - }, - "nulls equalling defaults": { - doubleField: null, - floatField: null, - int64Field: null, - uint64Field: null, - int32Field: null, - fixed64Field: null, - fixed32Field: null, - boolField: null, - stringField: null, - bytesField: null, - uint32Field: null, - sfixed32Field: null, - sfixed64Field: null, - sint32Field: null, - sint64Field: null, - }, - }, - jsonReads: { - "double_field": { - "key not present": {input: undefined, expect: 0}, - "null": {input: null, expect: 0}, - "NaN": {input: "NaN", expect: Number.NaN}, - "0 string": {input: "0", expect: 0}, - "Infinity": {input: "Infinity", expect: Number.POSITIVE_INFINITY}, - "-Infinity": {input: "-Infinity", expect: Number.NEGATIVE_INFINITY}, - "scientific not.": {input: "5.56789e+0", expect: 5.56789}, - }, - "int64_field": { - "0 as string": {input: "0", expect: "0"}, - "0 as number": {input: 0, expect: "0"}, - }, - "uint64_field": { - "0 as string": {input: "0", expect: "0"}, - "0 as number": {input: 0, expect: "0"}, - }, - "int32_field": { - "0 as string": {input: "0", expect: 0}, - "0 as number": {input: 0, expect: 0}, - }, - "fixed64_field": { - "0 as string": {input: "0", expect: "0"}, - "0 as number": {input: 0, expect: "0"}, - }, - "fixed32_field": { - "0 as string": {input: "0", expect: 0}, - "0 as number": {input: 0, expect: 0}, - }, - "uint32_field": { - "0 as string": {input: "0", expect: 0}, - "0 as number": {input: 0, expect: 0}, - }, - "sfixed32_field": { - "0 as string": {input: "0", expect: 0}, - "0 as number": {input: 0, expect: 0}, - }, - "sfixed64_field": { - "0 as string": {input: "0", expect: "0"}, - "0 as number": {input: 0, expect: "0"}, - }, - "sint32_field": { - "0 as string": {input: "0", expect: 0}, - "0 as number": {input: 0, expect: 0}, - }, - "sint64_field": { - "0 as string": {input: "0", expect: "0"}, - "0 as number": {input: 0, expect: "0"}, - }, - "bool_field": { - "null": {input: null, expect: false}, - "true": {input: true, expect: true}, - "false": {input: false, expect: false}, - }, - "string_field": { - "null": {input: null, expect: ""}, - "hello": {input: "hello", expect: "hello"}, - "empty string": {input: "", expect: ""}, - }, - }, - jsonWrites: { - "double_field": { - "NaN": {input: Number.NaN, expect: "NaN"}, - "Infinity": {input: Number.POSITIVE_INFINITY, expect: "Infinity"}, - "-Infinity": {input: Number.NEGATIVE_INFINITY, expect: "-Infinity"}, - "0": {input: 0, expect: undefined}, - "0 with emitDefaultValues:true": {input: 0, expect: 0, options: {emitDefaultValues: true}}, - }, - }, - jsonReadErrors: { - "double_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /.*/}, - "[] value": {input: [], expect: /.*/}, - "{} value": {input: {}, expect: /.*/}, - "true": {input: true, expect: /.*/}, - }, - "int32_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /Cannot parse JSON true/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "{} value": {input: {}, expect: /Cannot parse JSON object/}, - "Infinity": {input: "Infinity", expect: /.*/}, - "-Infinity": {input: "-Infinity", expect: /.*/}, - "NaN": {input: "NaN", expect: /.*/}, - "true": {input: true, expect: /Cannot parse JSON true/}, - "fraction number": {input: 0.5, expect: /.*/}, - "fraction number as string": {input: "0.5", expect: /.*/}, - }, - "uint32_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /Cannot parse JSON true/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "{} value": {input: {}, expect: /Cannot parse JSON object/}, - "Infinity": {input: "Infinity", expect: /.*/}, - "-Infinity": {input: "-Infinity", expect: /.*/}, - "NaN": {input: "NaN", expect: /.*/}, - "true": {input: true, expect: /Cannot parse JSON true/}, - "signed number": {input: -1, expect: /.*/}, - "signed number as string": {input: "-1", expect: /.*/}, - "fraction number": {input: 0.5, expect: /.*/}, - "fraction number as string": {input: "0.5", expect: /.*/}, - }, - "int64_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /Cannot parse JSON true/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "{} value": {input: {}, expect: /Cannot parse JSON object/}, - "Infinity": {input: "Infinity", expect: /.*/}, - "-Infinity": {input: "-Infinity", expect: /.*/}, - "NaN": {input: "NaN", expect: /.*/}, - "true": {input: true, expect: /Cannot parse JSON true/}, - "fraction number": {input: 0.5, expect: /.*/}, - "fraction number as string": {input: "0.5", expect: /.*/}, - }, - "uint64_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /Cannot parse JSON true/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "{} value": {input: {}, expect: /Cannot parse JSON object/}, - "Infinity": {input: "Infinity", expect: /.*/}, - "-Infinity": {input: "-Infinity", expect: /.*/}, - "NaN": {input: "NaN", expect: /.*/}, - "true": {input: true, expect: /Cannot parse JSON true/}, - "signed number": {input: -1, expect: /.*/}, - "signed number as string": {input: "-1", expect: /.*/}, - "fraction number": {input: 0.5, expect: /.*/}, - "fraction number as string": {input: "0.5", expect: /.*/}, - }, - "sint64_field": { - "invalid string": {input: "invalid string", expect: /.*/}, - "empty string": {input: "", expect: /.*/}, - "bool value": {input: true, expect: /Cannot parse JSON true/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "{} value": {input: {}, expect: /Cannot parse JSON object/}, - "Infinity": {input: "Infinity", expect: /.*/}, - "-Infinity": {input: "-Infinity", expect: /.*/}, - "NaN": {input: "NaN", expect: /.*/}, - "true": {input: true, expect: /Cannot parse JSON true/}, - "fraction number": {input: 0.5, expect: /.*/}, - "fraction number as string": {input: "0.5", expect: /.*/}, - }, - "bytes_field": { - "invalid encoding": {input: "invalid encoding !!", expect: /invalid base64 string/}, - "[] value": {input: [], expect: /Cannot parse JSON array/}, - "number value": {input: 123, expect: /.*/}, - }, - "bool_field": { - "empty string": {input: "", expect: /Cannot parse JSON string/}, - "string 'true'": {input: "", expect: /Cannot parse JSON string/}, - }, - }, - invalidMessages: { - "all types wrong": { - doubleField: false, - floatField: false, - int64Field: false, - uint64Field: false, - int32Field: false, - fixed64Field: false, - fixed32Field: false, - boolField: "str", - stringField: false, - bytesField: false, - uint32Field: false, - sfixed32Field: false, - sfixed64Field: false, - sint32Field: false, - sint64Field: false, - }, - }, -}); - -f.push({ - typeName: "spec.RepeatedScalarValuesMessage", - fields: [ - {no: 1, name: "double_field", kind: "scalar", T: 1 /*double*/, repeat: 1}, - {no: 2, name: "float_field", kind: "scalar", T: 2 /*float*/, repeat: 1}, - {no: 3, name: "int64_field", kind: "scalar", T: 3 /*int64*/, repeat: 1}, - {no: 4, name: "uint64_field", kind: "scalar", T: 4 /*uint64*/, repeat: 1}, - {no: 5, name: "int32_field", kind: "scalar", T: 5 /*int32*/, repeat: 1}, - {no: 6, name: "fixed64_field", kind: "scalar", T: 6 /*fixed64*/, repeat: 1}, - {no: 7, name: "fixed32_field", kind: "scalar", T: 7 /*fixed32*/, repeat: 1}, - {no: 8, name: "bool_field", kind: "scalar", T: 8 /*bool*/, repeat: 1}, - {no: 9, name: "string_field", kind: "scalar", T: 9 /*string*/, repeat: 2}, - {no: 11, name: "bytes_field", kind: "scalar", T: 12 /*bytes*/, repeat: 2}, - {no: 12, name: "uint32_field", kind: "scalar", T: 13 /*uint32*/, repeat: 1}, - {no: 14, name: "sfixed32_field", kind: "scalar", T: 15 /*sfixed32*/, repeat: 1}, - {no: 15, name: "sfixed64_field", kind: "scalar", T: 16 /*sfixed64*/, repeat: 1}, - {no: 16, name: "sint32_field", kind: "scalar", T: 17 /*sint32*/, repeat: 1}, - {no: 17, name: "sint64_field", kind: "scalar", T: 18 /*sint64*/, repeat: 1} - ], - messages: { - "default": { - doubleField: [], - floatField: [], - int64Field: [], - uint64Field: [], - int32Field: [], - fixed64Field: [], - fixed32Field: [], - boolField: [], - stringField: [], - bytesField: [], - uint32Field: [], - sfixed32Field: [], - sfixed64Field: [], - sint32Field: [], - sint64Field: [] - }, - "example": { - doubleField: [0.75, 0, 1], - floatField: [0.75, -0.75], - int64Field: [ - "-1", - "-2" - ], - uint64Field: [ - "1", - "2" - ], - int32Field: [-123, 500], - fixed64Field: [ - "1", - "99" - ], - fixed32Field: [123, 999], - boolField: [true, false, true], - stringField: ["hello", "world"], - bytesField: [ - new Uint8Array([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]) - ], - uint32Field: [123, 123], - sfixed32Field: [-123, -123, -123], - sfixed64Field: [ - "-1", - "-2", - "100", - ], - sint32Field: [-1, -2, 999], - sint64Field: [ - "-1", - "-99", - "99", - ] - }, - }, - json: { - "default": {}, - "example": { - doubleField: [0.75, 0, 1], - floatField: [0.75, -0.75], - int64Field: ["-1", "-2"], - uint64Field: ["1", "2"], - int32Field: [-123, 500], - fixed64Field: ["1", "99"], - fixed32Field: [123, 999], - boolField: [true, false, true], - stringField: ["hello", "world"], - bytesField: ["aGVsbG8gd29ybGQ="], - uint32Field: [123, 123], - sfixed32Field: [-123, -123, -123], - sfixed64Field: ["-1", "-2", "100"], - sint32Field: [-1, -2, 999], - sint64Field: ["-1", "-99", "99"] - }, - "nulls equalling defaults": { - doubleField: null, - floatField: null, - int64Field: null, - uint64Field: null, - int32Field: null, - fixed64Field: null, - fixed32Field: null, - boolField: null, - stringField: null, - bytesField: null, - uint32Field: null, - sfixed32Field: null, - sfixed64Field: null, - sint32Field: null, - sint64Field: null, - }, - }, - jsonReads: {}, - jsonReadErrors: { - "string_field": { - "wrong type item": {input: [123], expect: /.*/}, - }, - "double_field": { - "null fails to parse": { - input: [null], - expect: /Cannot parse JSON null for / - } - }, - }, - jsonWrites: { - "string_field": { - "emitDefaultValues:true": { input: [], expect: [], options: {emitDefaultValues:true} } - } - }, - invalidMessages: { - "all types wrong": { - doubleField: false, - floatField: false, - int64Field: false, - uint64Field: false, - int32Field: false, - fixed64Field: false, - fixed32Field: false, - boolField: "str", - stringField: false, - bytesField: false, - uint32Field: false, - sfixed32Field: false, - sfixed64Field: false, - sint32Field: false, - sint64Field: false, - }, - } - -}); - diff --git a/packages/test-fixtures/tsconfig.json b/packages/test-fixtures/tsconfig.json deleted file mode 100644 index 82663ee4..00000000 --- a/packages/test-fixtures/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "files": [ - "index.ts" - ], - "compilerOptions": { - "importHelpers": false, - "module": "ES2015", - "target": "ES2015", - "declaration": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "node", - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - - // activated for issue #94 - // svelte requires this option - "importsNotUsedAsValues": "error", - - "lib": [ - "es2017", - "es2015.collection" - ], - "baseUrl": "./", - "paths": { - "@protobuf-ts/runtime": [ - "../runtime/" - ] - } - } -} - diff --git a/packages/test-generated/Makefile b/packages/test-generated/Makefile index 41aaaf05..e2e32a05 100644 --- a/packages/test-generated/Makefile +++ b/packages/test-generated/Makefile @@ -1,6 +1,6 @@ .PHONY: default clean test-runner test-spec test-spec-bigint generate-size generate-speed generate-speed-bigint generate-size-bigint -PROTO_PATH = ../test-fixtures +PROTO_PATH = ../proto PROTOS := $(shell find ${PROTO_PATH} -name '*.proto') SPECS := $(shell find spec -name '*.spec.ts') @@ -78,15 +78,3 @@ generate-speed-bigint: $(PROTOS) --experimental_allow_proto3_optional \ $^ @echo "'${@}' done" - - -${PROTO_PATH}/all.descriptorset: $(PROTOS) - @npx protoc \ - --descriptor_set_out ${@} \ - --proto_path $(PROTO_PATH) \ - --proto_path ../plugin/ \ - --include_source_info \ - --include_imports \ - --experimental_allow_proto3_optional \ - $^ - @echo "'${@}' done"