├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yaml │ └── feature-request.md └── workflows │ ├── bench.yaml │ ├── codeql-analysis.yml │ ├── documentation.yaml │ ├── greetings.disabled │ ├── linter.yaml │ ├── release.yaml │ └── tests.yaml ├── .gitignore ├── .goreleaser.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── api ├── README.md ├── annotations.pb.go └── annotations.proto ├── cmd └── semaphore │ ├── README.md │ ├── daemon │ ├── client.go │ ├── config │ │ ├── README.md │ │ ├── functions.go │ │ └── options.go │ ├── daemon.go │ └── providers │ │ ├── options.go │ │ ├── options_test.go │ │ ├── providers.go │ │ └── providers_test.go │ ├── generate │ ├── generate.go │ ├── graphql │ │ ├── graphql.go │ │ └── query.go │ ├── openapi3 │ │ └── openapi.go │ ├── printer │ │ ├── header.go │ │ └── header_test.go │ └── protobuf │ │ └── protobuf.go │ ├── main.go │ ├── middleware │ └── selector.go │ └── validate │ └── validate.go ├── codecov.yml ├── examples ├── README.md ├── consul │ ├── README.md │ ├── awesome-dogs │ │ ├── consul.d │ │ │ └── awesome-dogs.hcl │ │ └── main.go │ ├── config.hcl │ ├── flow.hcl │ └── schemas │ │ └── dogs.proto ├── custom-functions │ ├── README.md │ ├── flow.hcl │ ├── main.go │ └── proto │ │ ├── api │ │ └── service.proto ├── error-handling │ ├── README.md │ ├── config.hcl │ ├── flow.hcl │ └── proto │ │ ├── api │ │ └── service.proto ├── functions │ ├── config.hcl │ ├── flow.hcl │ └── proto │ │ ├── api │ │ └── service.proto ├── graphql │ ├── Dockerfile │ ├── README.md │ ├── config.hcl │ ├── flow.hcl │ └── proto │ │ ├── api │ │ └── todo.proto ├── grpc │ ├── Makefile │ ├── README.md │ ├── gateway │ │ ├── config.hcl │ │ └── flow.hcl │ ├── proto │ │ ├── api │ │ ├── greeter.pb.go │ │ ├── greeter.proto │ │ └── greeter_grpc.pb.go │ └── service │ │ └── main.go ├── http │ ├── README.md │ ├── config.hcl │ ├── flow.hcl │ └── proto │ │ ├── api │ │ ├── service.proto │ │ └── users.proto ├── multiple-gateways │ ├── README.md │ ├── gateway │ │ ├── config.hcl │ │ └── flow.hcl │ ├── hub │ │ ├── config.hcl │ │ └── flow.hcl │ └── proto │ │ ├── api │ │ ├── hub.proto │ │ └── users.proto └── worldbank │ ├── config.hcl │ ├── flow.hcl │ └── proto │ ├── api │ └── service.proto ├── go.mod ├── go.sum ├── install.sh ├── middleware.go ├── middleware_test.go ├── options.go ├── options_test.go ├── pkg ├── broker │ ├── broker.go │ ├── broker_test.go │ ├── endpoints │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── listeners │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── listeners.go │ │ └── listeners_test.go │ ├── logger │ │ ├── logger.go │ │ └── logger_test.go │ └── manager │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── flow.go │ │ └── options.go ├── checks │ ├── checks.go │ ├── checks_test.go │ ├── errors.go │ └── errors_test.go ├── codec │ ├── codec.go │ ├── json │ │ ├── array.go │ │ ├── decode.go │ │ ├── encode.go │ │ ├── enum.go │ │ ├── errors.go │ │ ├── json.go │ │ ├── json_test.go │ │ ├── object.go │ │ ├── scalar.go │ │ ├── tests │ │ │ ├── complete.hcl │ │ │ ├── mock.hcl │ │ │ └── schema.yaml │ │ ├── types.go │ │ └── types_test.go │ ├── metadata │ │ ├── manager.go │ │ ├── manager_test.go │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── proto │ │ ├── builder.go │ │ ├── errors.go │ │ ├── field.go │ │ ├── message.go │ │ ├── method.go │ │ ├── proto.go │ │ ├── proto_test.go │ │ ├── repeated.go │ │ ├── service.go │ │ ├── service_test.go │ │ └── tests │ │ │ ├── README.md │ │ │ ├── complete.hcl │ │ │ ├── complete.proto │ │ │ ├── mock.hcl │ │ │ └── mock.proto │ ├── tests │ │ ├── assert.go │ │ └── schema.go │ ├── www-form-urlencoded │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── form.go │ │ ├── form_test.go │ │ ├── types.go │ │ └── types_test.go │ └── xml │ │ ├── array.go │ │ ├── decode.go │ │ ├── encode.go │ │ ├── enum.go │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── object.go │ │ ├── scalar.go │ │ ├── xml.go │ │ └── xml_test.go ├── compare │ ├── errors.go │ └── types.go ├── conditions │ ├── conditions.go │ └── conditions_test.go ├── dependencies │ ├── dependencies.go │ ├── dependencies_test.go │ ├── errors.go │ └── errors_test.go ├── discovery │ ├── README.md │ ├── consul │ │ ├── consul.go │ │ ├── consul_test.go │ │ └── watcher.go │ ├── plain_resolver.go │ └── types.go ├── flow │ ├── README.md │ ├── branches.go │ ├── branches_test.go │ ├── caller.go │ ├── caller_test.go │ ├── condition.go │ ├── condition_test.go │ ├── error.go │ ├── error_test.go │ ├── flow.go │ ├── flow_test.go │ ├── node.go │ ├── node_test.go │ ├── processes.go │ ├── processes_test.go │ ├── tracker.go │ └── tracker_test.go ├── functions │ ├── errors.go │ ├── functions.go │ ├── functions_test.go │ ├── lib │ │ ├── jwt │ │ │ ├── auth.go │ │ │ ├── auth_test.go │ │ │ ├── errors.go │ │ │ ├── errors_test.go │ │ │ ├── hmac.go │ │ │ ├── hmac_test.go │ │ │ ├── jwt.go │ │ │ ├── jwt_test.go │ │ │ ├── rsa.go │ │ │ └── rsa_test.go │ │ ├── sprintf │ │ │ ├── detector.go │ │ │ ├── detector_test.go │ │ │ ├── errors.go │ │ │ ├── errors_test.go │ │ │ ├── fmt_float.go │ │ │ ├── fmt_float_test.go │ │ │ ├── fmt_int.go │ │ │ ├── fmt_int_test.go │ │ │ ├── fmt_json.go │ │ │ ├── fmt_json_test.go │ │ │ ├── fmt_string.go │ │ │ ├── fmt_string_test.go │ │ │ ├── formatter.go │ │ │ ├── printer.go │ │ │ ├── printer_test.go │ │ │ ├── scaner_test.go │ │ │ ├── scanner.go │ │ │ ├── sprintf.go │ │ │ ├── sprintf_test.go │ │ │ └── token.go │ │ └── strconcat │ │ │ ├── errors.go │ │ │ └── strconcat.go │ ├── references.go │ └── references_test.go ├── generators │ └── openapi3 │ │ ├── generator.go │ │ ├── openapi.go │ │ ├── openapi_test.go │ │ ├── options.go │ │ ├── tests │ │ ├── __.proto │ │ ├── flow-no-input.hcl │ │ ├── flow-no-output.hcl │ │ ├── grpc.hcl │ │ ├── headers.hcl │ │ ├── methods.hcl │ │ ├── no_ref │ │ │ ├── flow-no-input.yaml │ │ │ ├── flow-no-output.yaml │ │ │ ├── grpc.yaml │ │ │ ├── headers.yaml │ │ │ ├── methods.yaml │ │ │ ├── params.yaml │ │ │ └── simple.yaml │ │ ├── params.hcl │ │ ├── ref │ │ │ ├── flow-no-input.yaml │ │ │ ├── flow-no-output.yaml │ │ │ ├── grpc.yaml │ │ │ ├── headers.yaml │ │ │ ├── methods.yaml │ │ │ ├── params.yaml │ │ │ └── simple.yaml │ │ └── simple.hcl │ │ └── types │ │ ├── types.go │ │ └── types_test.go ├── lookup │ ├── lookup.go │ └── lookup_test.go ├── metrics │ └── prometheus │ │ └── prometheus.go ├── prettyerr │ ├── error.go │ ├── error_test.go │ ├── prettifier.go │ ├── prettifier_test.go │ ├── text_formatter.go │ └── text_formatter_test.go ├── providers │ ├── avros │ │ ├── collect.go │ │ ├── schema.go │ │ └── types.go │ ├── errors.go │ ├── hcl │ │ ├── errors.go │ │ ├── expression.go │ │ ├── expression_test.go │ │ ├── hcl.go │ │ ├── hcl_test.go │ │ ├── intermediate.go │ │ ├── options.go │ │ ├── parameter_map.go │ │ ├── service_discovery.go │ │ ├── services.go │ │ ├── specs.go │ │ ├── specs_test.go │ │ ├── tests │ │ │ ├── basic.pass.hcl │ │ │ ├── before.pass.hcl │ │ │ ├── calls.fail.hcl │ │ │ ├── calls.pass.hcl │ │ │ ├── discovery.pass.hcl │ │ │ ├── endpoints.fail.hcl │ │ │ ├── endpoints.pass.hcl │ │ │ ├── flow_condition.pass.hcl │ │ │ ├── flow_error.pass.hcl │ │ │ ├── flow_node_error.pass.hcl │ │ │ ├── flow_references.pass.hcl │ │ │ ├── flows.fail.hcl │ │ │ ├── flows.pass.hcl │ │ │ ├── global_error.pass.hcl │ │ │ ├── header.pass.hcl │ │ │ ├── include.fail.hcl │ │ │ ├── include.hcl │ │ │ ├── include.pass.hcl │ │ │ ├── input_header.pass.hcl │ │ │ ├── input_options.pass.hcl │ │ │ ├── method.pass.hcl │ │ │ ├── nested.pass.hcl │ │ │ ├── object.pass.hcl │ │ │ ├── options.pass.hcl │ │ │ ├── protobuffers.pass.hcl │ │ │ ├── proxy.fail.hcl │ │ │ ├── proxy.pass.hcl │ │ │ ├── proxy_condition.pass.hcl │ │ │ ├── proxy_error.pass.hcl │ │ │ ├── proxy_input.pass.hcl │ │ │ ├── proxy_node_error.pass.hcl │ │ │ ├── proxy_references.pass.hcl │ │ │ ├── repeated.pass.hcl │ │ │ ├── resource_parameters.pass.hcl │ │ │ ├── resources.pass.hcl │ │ │ ├── rollback.pass.hcl │ │ │ ├── services.fail.hcl │ │ │ └── services.pass.hcl │ │ ├── types.go │ │ └── types_test.go │ ├── json │ │ ├── errors.go │ │ └── json.go │ ├── mock │ │ ├── collect.go │ │ ├── collect_test.go │ │ ├── mock.go │ │ ├── mock_test.go │ │ ├── specs.go │ │ └── tests │ │ │ ├── basic.pass.yaml │ │ │ ├── combination.pass.yaml │ │ │ ├── enum.pass.yaml │ │ │ ├── message.pass.yaml │ │ │ └── repeated.pass.yaml │ ├── openapi3 │ │ ├── fixtures │ │ │ ├── empty.yml │ │ │ └── petstore.yml │ │ ├── resolver.go │ │ ├── resolver_test.go │ │ ├── scanner.go │ │ ├── scanner_test.go │ │ ├── schema.go │ │ └── schema_test.go │ ├── path.go │ ├── path_test.go │ ├── protobuffers │ │ ├── collect.go │ │ ├── labels.go │ │ ├── schema.go │ │ ├── services.go │ │ └── types.go │ ├── providers.go │ ├── providers_test.go │ ├── schemas.go │ └── schemas_test.go ├── references │ ├── enum.go │ ├── errors.go │ ├── errors_test.go │ ├── forwarding │ │ ├── references.go │ │ └── references_test.go │ ├── referenced.go │ ├── referenced_test.go │ ├── references.go │ ├── references_test.go │ ├── store.go │ ├── store_test.go │ ├── tests │ │ ├── basic.fail.hcl │ │ ├── basic.fail.yaml │ │ ├── basic.pass.hcl │ │ ├── basic.pass.yaml │ │ ├── condition.pass.hcl │ │ ├── condition.pass.yaml │ │ ├── condition_resolve.fail.hcl │ │ ├── condition_resolve.fail.yaml │ │ ├── error_flow.fail.hcl │ │ ├── error_flow.fail.yaml │ │ ├── error_flow.pass.hcl │ │ ├── error_flow.pass.yaml │ │ ├── error_global.pass.hcl │ │ ├── error_global.pass.yaml │ │ ├── error_proxy.fail.hcl │ │ ├── error_proxy.fail.yaml │ │ ├── error_proxy.pass.hcl │ │ ├── error_proxy.pass.yaml │ │ ├── flow_on_error_resolve.fail.hcl │ │ ├── flow_on_error_resolve.fail.yaml │ │ ├── flow_output_resolve.fail.hcl │ │ ├── flow_output_resolve.fail.yaml │ │ ├── header.fail.hcl │ │ ├── header.fail.yaml │ │ ├── header.pass.hcl │ │ ├── header.pass.yaml │ │ ├── node_params.pass.hcl │ │ ├── node_params.pass.yaml │ │ ├── node_resolve.fail.hcl │ │ ├── node_resolve.fail.yaml │ │ ├── proxy.pass.hcl │ │ ├── proxy.pass.yaml │ │ ├── proxy_forward_header.fail.hcl │ │ ├── proxy_forward_header.fail.yaml │ │ ├── proxy_forward_header.pass.hcl │ │ ├── proxy_forward_header.pass.yaml │ │ ├── proxy_node_rollback.hcl │ │ ├── proxy_node_rollback.yaml │ │ ├── proxy_params.fail.hcl │ │ ├── proxy_params.fail.yaml │ │ ├── proxy_params.pass.hcl │ │ ├── proxy_params.pass.yaml │ │ ├── repeated.pass.hcl │ │ ├── repeated.pass.yaml │ │ ├── rollback.pass.hcl │ │ ├── rollback.pass.yaml │ │ ├── schema.pass.hcl │ │ └── schema.pass.yaml │ ├── utils.go │ └── utils_test.go ├── specs │ ├── README.md │ ├── discovery.go │ ├── endpoints.go │ ├── endpoints_test.go │ ├── enum.go │ ├── enum_test.go │ ├── errors.go │ ├── flows.go │ ├── flows_test.go │ ├── labels │ │ └── labels.go │ ├── list.go │ ├── list_test.go │ ├── message.go │ ├── message_test.go │ ├── metadata │ │ ├── metadata.go │ │ └── metadata_test.go │ ├── mixed_types.go │ ├── path.go │ ├── path_test.go │ ├── property.go │ ├── property_errors.go │ ├── property_test.go │ ├── reference_test.go │ ├── referene.go │ ├── repeated.go │ ├── repeated_test.go │ ├── scalar.go │ ├── scalar_test.go │ ├── services.go │ ├── services_test.go │ ├── specs.go │ ├── template.go │ ├── template_test.go │ └── types │ │ ├── errors.go │ │ ├── errors_test.go │ │ ├── types.go │ │ └── types_test.go └── transport │ ├── README.md │ ├── endpoint.go │ ├── endpoint_test.go │ ├── error.go │ ├── error_test.go │ ├── graphql │ ├── README.md │ ├── arguments.go │ ├── arguments_test.go │ ├── errors.go │ ├── field.go │ ├── field_test.go │ ├── graphql.go │ ├── graphql_test.go │ ├── object.go │ ├── object_test.go │ ├── options.go │ ├── options_test.go │ ├── response.go │ ├── response_test.go │ └── types.go │ ├── grpc │ ├── README.md │ ├── caller.go │ ├── caller_test.go │ ├── codec.go │ ├── codec_test.go │ ├── codes.go │ ├── codes_test.go │ ├── errors.go │ ├── grpc_test.go │ ├── listener.go │ ├── listener_test.go │ ├── method.go │ ├── options.go │ ├── options_test.go │ ├── reflection.go │ ├── reflection_test.go │ └── utils.go │ ├── http │ ├── README.md │ ├── call.go │ ├── caller.go │ ├── caller_test.go │ ├── content.go │ ├── errors.go │ ├── http.go │ ├── http_test.go │ ├── listener.go │ ├── listener_options.go │ ├── listener_options_test.go │ ├── listener_test.go │ ├── method.go │ ├── middleware.go │ ├── options.go │ ├── options_test.go │ ├── proxy.go │ └── unique.go │ ├── protocol.go │ ├── protocol_test.go │ ├── rewrite.go │ ├── rewrite_test.go │ ├── writer.go │ └── writer_test.go ├── scripts └── build.sh ├── tests └── e2e │ ├── grpc │ ├── Makefile │ ├── flow │ │ ├── echo.hcl │ │ └── echo_intermediate.hcl │ ├── grpc_test.go │ └── proto │ │ ├── api │ │ ├── echo.pb.go │ │ ├── echo.proto │ │ └── echo_grpc.pb.go │ ├── http │ ├── flow │ │ ├── echo.hcl │ │ └── echo_intermediate.hcl │ ├── http_test.go │ └── proto │ │ ├── api │ │ └── echo.proto │ └── instance.go ├── vendor ├── github.com │ ├── BurntSushi │ │ └── toml │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── COMPATIBLE │ │ │ ├── COPYING │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── decode.go │ │ │ ├── decode_meta.go │ │ │ ├── doc.go │ │ │ ├── encode.go │ │ │ ├── encoding_types.go │ │ │ ├── encoding_types_1.1.go │ │ │ ├── lex.go │ │ │ ├── parse.go │ │ │ ├── session.vim │ │ │ ├── type_check.go │ │ │ └── type_fields.go │ ├── Knetic │ │ └── govaluate │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CONTRIBUTORS │ │ │ ├── EvaluableExpression.go │ │ │ ├── EvaluableExpression_sql.go │ │ │ ├── ExpressionToken.go │ │ │ ├── LICENSE │ │ │ ├── MANUAL.md │ │ │ ├── OperatorSymbol.go │ │ │ ├── README.md │ │ │ ├── TokenKind.go │ │ │ ├── evaluationStage.go │ │ │ ├── expressionFunctions.go │ │ │ ├── expressionOutputStream.go │ │ │ ├── lexerState.go │ │ │ ├── lexerStream.go │ │ │ ├── parameters.go │ │ │ ├── parsing.go │ │ │ ├── sanitizedParameters.go │ │ │ ├── stagePlanner.go │ │ │ ├── test.sh │ │ │ └── tokenStream.go │ ├── agext │ │ └── levenshtein │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── DCO │ │ │ ├── LICENSE │ │ │ ├── MAINTAINERS │ │ │ ├── NOTICE │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── levenshtein.go │ │ │ ├── params.go │ │ │ └── test.sh │ ├── apparentlymart │ │ └── go-textseg │ │ │ ├── LICENSE │ │ │ └── textseg │ │ │ ├── all_tokens.go │ │ │ ├── generate.go │ │ │ ├── grapheme_clusters.go │ │ │ ├── grapheme_clusters.rl │ │ │ ├── grapheme_clusters_table.rl │ │ │ ├── tables.go │ │ │ ├── unicode2ragel.rb │ │ │ └── utf8_seqs.go │ ├── armon │ │ └── go-metrics │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── const_unix.go │ │ │ ├── const_windows.go │ │ │ ├── inmem.go │ │ │ ├── inmem_endpoint.go │ │ │ ├── inmem_signal.go │ │ │ ├── metrics.go │ │ │ ├── sink.go │ │ │ ├── start.go │ │ │ ├── statsd.go │ │ │ └── statsite.go │ ├── beorn7 │ │ └── perks │ │ │ ├── LICENSE │ │ │ └── quantile │ │ │ ├── exampledata.txt │ │ │ └── stream.go │ ├── cespare │ │ └── xxhash │ │ │ └── v2 │ │ │ ├── .travis.yml │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── xxhash.go │ │ │ ├── xxhash_amd64.go │ │ │ ├── xxhash_amd64.s │ │ │ ├── xxhash_other.go │ │ │ ├── xxhash_safe.go │ │ │ └── xxhash_unsafe.go │ ├── davecgh │ │ └── go-spew │ │ │ ├── LICENSE │ │ │ └── spew │ │ │ ├── bypass.go │ │ │ ├── bypasssafe.go │ │ │ ├── common.go │ │ │ ├── config.go │ │ │ ├── doc.go │ │ │ ├── dump.go │ │ │ ├── format.go │ │ │ └── spew.go │ ├── dgrijalva │ │ └── jwt-go │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── MIGRATION_GUIDE.md │ │ │ ├── README.md │ │ │ ├── VERSION_HISTORY.md │ │ │ ├── claims.go │ │ │ ├── doc.go │ │ │ ├── ecdsa.go │ │ │ ├── ecdsa_utils.go │ │ │ ├── errors.go │ │ │ ├── hmac.go │ │ │ ├── map_claims.go │ │ │ ├── none.go │ │ │ ├── parser.go │ │ │ ├── rsa.go │ │ │ ├── rsa_pss.go │ │ │ ├── rsa_utils.go │ │ │ ├── signing_method.go │ │ │ └── token.go │ ├── fatih │ │ └── color │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── color.go │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ └── go.sum │ ├── francoispqt │ │ └── gojay │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── Gopkg.lock │ │ │ ├── Gopkg.toml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── decode.go │ │ │ ├── decode_array.go │ │ │ ├── decode_bool.go │ │ │ ├── decode_embedded_json.go │ │ │ ├── decode_interface.go │ │ │ ├── decode_number.go │ │ │ ├── decode_number_float.go │ │ │ ├── decode_number_int.go │ │ │ ├── decode_number_uint.go │ │ │ ├── decode_object.go │ │ │ ├── decode_pool.go │ │ │ ├── decode_slice.go │ │ │ ├── decode_sqlnull.go │ │ │ ├── decode_stream.go │ │ │ ├── decode_stream_pool.go │ │ │ ├── decode_string.go │ │ │ ├── decode_string_unicode.go │ │ │ ├── decode_time.go │ │ │ ├── decode_unsafe.go │ │ │ ├── encode.go │ │ │ ├── encode_array.go │ │ │ ├── encode_bool.go │ │ │ ├── encode_builder.go │ │ │ ├── encode_embedded_json.go │ │ │ ├── encode_interface.go │ │ │ ├── encode_null.go │ │ │ ├── encode_number.go │ │ │ ├── encode_number_float.go │ │ │ ├── encode_number_int.go │ │ │ ├── encode_number_uint.go │ │ │ ├── encode_object.go │ │ │ ├── encode_pool.go │ │ │ ├── encode_slice.go │ │ │ ├── encode_sqlnull.go │ │ │ ├── encode_stream.go │ │ │ ├── encode_stream_pool.go │ │ │ ├── encode_string.go │ │ │ ├── encode_time.go │ │ │ ├── errors.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── gojay.go │ │ │ └── gojay.png │ ├── getkin │ │ └── kin-openapi │ │ │ ├── LICENSE │ │ │ ├── jsoninfo │ │ │ ├── doc.go │ │ │ ├── field_info.go │ │ │ ├── marshal.go │ │ │ ├── marshal_ref.go │ │ │ ├── strict_struct.go │ │ │ ├── type_info.go │ │ │ ├── unmarshal.go │ │ │ └── unsupported_properties_error.go │ │ │ └── openapi3 │ │ │ ├── callback.go │ │ │ ├── components.go │ │ │ ├── content.go │ │ │ ├── discriminator.go │ │ │ ├── doc.go │ │ │ ├── encoding.go │ │ │ ├── examples.go │ │ │ ├── extension.go │ │ │ ├── external_docs.go │ │ │ ├── header.go │ │ │ ├── info.go │ │ │ ├── link.go │ │ │ ├── media_type.go │ │ │ ├── operation.go │ │ │ ├── parameter.go │ │ │ ├── path_item.go │ │ │ ├── paths.go │ │ │ ├── refs.go │ │ │ ├── request_body.go │ │ │ ├── response.go │ │ │ ├── schema.go │ │ │ ├── schema_formats.go │ │ │ ├── security_requirements.go │ │ │ ├── security_scheme.go │ │ │ ├── serialization_method.go │ │ │ ├── server.go │ │ │ ├── swagger.go │ │ │ ├── swagger_loader.go │ │ │ └── tag.go │ ├── ghodss │ │ └── yaml │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── fields.go │ │ │ └── yaml.go │ ├── go-test │ │ └── deep │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CHANGES.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── deep.go │ │ │ ├── go.mod │ │ │ └── go.sum │ ├── golang │ │ └── protobuf │ │ │ ├── AUTHORS │ │ │ ├── CONTRIBUTORS │ │ │ ├── LICENSE │ │ │ ├── jsonpb │ │ │ ├── decode.go │ │ │ ├── encode.go │ │ │ └── json.go │ │ │ ├── proto │ │ │ ├── buffer.go │ │ │ ├── defaults.go │ │ │ ├── deprecated.go │ │ │ ├── discard.go │ │ │ ├── extensions.go │ │ │ ├── properties.go │ │ │ ├── proto.go │ │ │ ├── registry.go │ │ │ ├── text_decode.go │ │ │ ├── text_encode.go │ │ │ ├── wire.go │ │ │ └── wrappers.go │ │ │ ├── protoc-gen-go │ │ │ ├── descriptor │ │ │ │ └── descriptor.pb.go │ │ │ └── plugin │ │ │ │ └── plugin.pb.go │ │ │ └── ptypes │ │ │ ├── any.go │ │ │ ├── any │ │ │ └── any.pb.go │ │ │ ├── doc.go │ │ │ ├── duration.go │ │ │ ├── duration │ │ │ └── duration.pb.go │ │ │ ├── empty │ │ │ └── empty.pb.go │ │ │ ├── struct │ │ │ └── struct.pb.go │ │ │ ├── timestamp.go │ │ │ ├── timestamp │ │ │ └── timestamp.pb.go │ │ │ └── wrappers │ │ │ └── wrappers.pb.go │ ├── google │ │ └── go-cmp │ │ │ ├── LICENSE │ │ │ └── cmp │ │ │ ├── compare.go │ │ │ ├── export_panic.go │ │ │ ├── export_unsafe.go │ │ │ ├── internal │ │ │ ├── diff │ │ │ │ ├── debug_disable.go │ │ │ │ ├── debug_enable.go │ │ │ │ └── diff.go │ │ │ ├── flags │ │ │ │ ├── flags.go │ │ │ │ ├── toolchain_legacy.go │ │ │ │ └── toolchain_recent.go │ │ │ ├── function │ │ │ │ └── func.go │ │ │ └── value │ │ │ │ ├── name.go │ │ │ │ ├── pointer_purego.go │ │ │ │ ├── pointer_unsafe.go │ │ │ │ ├── sort.go │ │ │ │ └── zero.go │ │ │ ├── options.go │ │ │ ├── path.go │ │ │ ├── report.go │ │ │ ├── report_compare.go │ │ │ ├── report_references.go │ │ │ ├── report_reflect.go │ │ │ ├── report_slices.go │ │ │ ├── report_text.go │ │ │ └── report_value.go │ ├── graphql-go │ │ └── graphql │ │ │ ├── .gitignore │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── definition.go │ │ │ ├── directives.go │ │ │ ├── executor.go │ │ │ ├── extensions.go │ │ │ ├── go.mod │ │ │ ├── gqlerrors │ │ │ ├── error.go │ │ │ ├── formatted.go │ │ │ ├── located.go │ │ │ ├── sortutil.go │ │ │ └── syntax.go │ │ │ ├── graphql.go │ │ │ ├── introspection.go │ │ │ ├── kitchen-sink.graphql │ │ │ ├── language │ │ │ ├── ast │ │ │ │ ├── arguments.go │ │ │ │ ├── definitions.go │ │ │ │ ├── directives.go │ │ │ │ ├── document.go │ │ │ │ ├── location.go │ │ │ │ ├── name.go │ │ │ │ ├── node.go │ │ │ │ ├── selections.go │ │ │ │ ├── type_definitions.go │ │ │ │ ├── types.go │ │ │ │ └── values.go │ │ │ ├── kinds │ │ │ │ └── kinds.go │ │ │ ├── lexer │ │ │ │ └── lexer.go │ │ │ ├── location │ │ │ │ └── location.go │ │ │ ├── parser │ │ │ │ └── parser.go │ │ │ ├── printer │ │ │ │ └── printer.go │ │ │ ├── source │ │ │ │ └── source.go │ │ │ ├── typeInfo │ │ │ │ └── type_info.go │ │ │ └── visitor │ │ │ │ └── visitor.go │ │ │ ├── located.go │ │ │ ├── rules.go │ │ │ ├── rules_overlapping_fields_can_be_merged.go │ │ │ ├── scalars.go │ │ │ ├── schema-kitchen-sink.graphql │ │ │ ├── schema.go │ │ │ ├── type_info.go │ │ │ ├── types.go │ │ │ ├── util.go │ │ │ ├── validator.go │ │ │ └── values.go │ ├── hashicorp │ │ ├── consul │ │ │ └── api │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── acl.go │ │ │ │ ├── agent.go │ │ │ │ ├── api.go │ │ │ │ ├── catalog.go │ │ │ │ ├── config_entry.go │ │ │ │ ├── config_entry_discoverychain.go │ │ │ │ ├── config_entry_gateways.go │ │ │ │ ├── connect.go │ │ │ │ ├── connect_ca.go │ │ │ │ ├── connect_intention.go │ │ │ │ ├── coordinate.go │ │ │ │ ├── debug.go │ │ │ │ ├── discovery_chain.go │ │ │ │ ├── event.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── health.go │ │ │ │ ├── kv.go │ │ │ │ ├── lock.go │ │ │ │ ├── namespace.go │ │ │ │ ├── operator.go │ │ │ │ ├── operator_area.go │ │ │ │ ├── operator_autopilot.go │ │ │ │ ├── operator_keyring.go │ │ │ │ ├── operator_license.go │ │ │ │ ├── operator_raft.go │ │ │ │ ├── operator_segment.go │ │ │ │ ├── prepared_query.go │ │ │ │ ├── raw.go │ │ │ │ ├── semaphore.go │ │ │ │ ├── session.go │ │ │ │ ├── snapshot.go │ │ │ │ ├── status.go │ │ │ │ ├── txn.go │ │ │ │ └── watch │ │ │ │ ├── funcs.go │ │ │ │ ├── plan.go │ │ │ │ └── watch.go │ │ ├── go-cleanhttp │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── cleanhttp.go │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ └── handlers.go │ │ ├── go-hclog │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── colorize_unix.go │ │ │ ├── colorize_windows.go │ │ │ ├── context.go │ │ │ ├── global.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── interceptlogger.go │ │ │ ├── intlogger.go │ │ │ ├── logger.go │ │ │ ├── nulllogger.go │ │ │ ├── stacktrace.go │ │ │ ├── stdlog.go │ │ │ └── writer.go │ │ ├── go-immutable-radix │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── edges.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── iradix.go │ │ │ ├── iter.go │ │ │ ├── node.go │ │ │ └── raw_iter.go │ │ ├── go-rootcerts │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── rootcerts.go │ │ │ ├── rootcerts_base.go │ │ │ └── rootcerts_darwin.go │ │ ├── golang-lru │ │ │ ├── LICENSE │ │ │ └── simplelru │ │ │ │ ├── lru.go │ │ │ │ └── lru_interface.go │ │ ├── hcl │ │ │ └── v2 │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── appveyor.yml │ │ │ │ ├── diagnostic.go │ │ │ │ ├── diagnostic_text.go │ │ │ │ ├── didyoumean.go │ │ │ │ ├── doc.go │ │ │ │ ├── eval_context.go │ │ │ │ ├── expr_call.go │ │ │ │ ├── expr_list.go │ │ │ │ ├── expr_map.go │ │ │ │ ├── expr_unwrap.go │ │ │ │ ├── ext │ │ │ │ └── customdecode │ │ │ │ │ ├── README.md │ │ │ │ │ ├── customdecode.go │ │ │ │ │ └── expression_type.go │ │ │ │ ├── go.mod │ │ │ │ ├── go.sum │ │ │ │ ├── gohcl │ │ │ │ ├── decode.go │ │ │ │ ├── doc.go │ │ │ │ ├── encode.go │ │ │ │ ├── schema.go │ │ │ │ └── types.go │ │ │ │ ├── hclsyntax │ │ │ │ ├── diagnostics.go │ │ │ │ ├── didyoumean.go │ │ │ │ ├── doc.go │ │ │ │ ├── expression.go │ │ │ │ ├── expression_ops.go │ │ │ │ ├── expression_template.go │ │ │ │ ├── expression_vars.go │ │ │ │ ├── file.go │ │ │ │ ├── generate.go │ │ │ │ ├── keywords.go │ │ │ │ ├── navigation.go │ │ │ │ ├── node.go │ │ │ │ ├── parser.go │ │ │ │ ├── parser_template.go │ │ │ │ ├── parser_traversal.go │ │ │ │ ├── peeker.go │ │ │ │ ├── public.go │ │ │ │ ├── scan_string_lit.go │ │ │ │ ├── scan_string_lit.rl │ │ │ │ ├── scan_tokens.go │ │ │ │ ├── scan_tokens.rl │ │ │ │ ├── spec.md │ │ │ │ ├── structure.go │ │ │ │ ├── structure_at_pos.go │ │ │ │ ├── token.go │ │ │ │ ├── token_type_string.go │ │ │ │ ├── unicode2ragel.rb │ │ │ │ ├── unicode_derived.rl │ │ │ │ ├── variables.go │ │ │ │ └── walk.go │ │ │ │ ├── hclwrite │ │ │ │ ├── ast.go │ │ │ │ ├── ast_attribute.go │ │ │ │ ├── ast_block.go │ │ │ │ ├── ast_body.go │ │ │ │ ├── ast_expression.go │ │ │ │ ├── doc.go │ │ │ │ ├── format.go │ │ │ │ ├── generate.go │ │ │ │ ├── native_node_sorter.go │ │ │ │ ├── node.go │ │ │ │ ├── parser.go │ │ │ │ ├── public.go │ │ │ │ └── tokens.go │ │ │ │ ├── merged.go │ │ │ │ ├── ops.go │ │ │ │ ├── pos.go │ │ │ │ ├── pos_scanner.go │ │ │ │ ├── schema.go │ │ │ │ ├── spec.md │ │ │ │ ├── static_expr.go │ │ │ │ ├── structure.go │ │ │ │ ├── structure_at_pos.go │ │ │ │ ├── traversal.go │ │ │ │ └── traversal_for_expr.go │ │ └── serf │ │ │ ├── LICENSE │ │ │ └── coordinate │ │ │ ├── client.go │ │ │ ├── config.go │ │ │ ├── coordinate.go │ │ │ └── phantom.go │ ├── inconshreveable │ │ └── mousetrap │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── trap_others.go │ │ │ ├── trap_windows.go │ │ │ └── trap_windows_1.4.go │ ├── jhump │ │ └── protoreflect │ │ │ ├── LICENSE │ │ │ ├── codec │ │ │ ├── codec.go │ │ │ ├── decode_fields.go │ │ │ ├── doc.go │ │ │ └── encode_fields.go │ │ │ ├── desc │ │ │ ├── builder │ │ │ │ ├── builder.go │ │ │ │ ├── doc.go │ │ │ │ ├── enum.go │ │ │ │ ├── field.go │ │ │ │ ├── file.go │ │ │ │ ├── message.go │ │ │ │ ├── resolver.go │ │ │ │ ├── service.go │ │ │ │ └── types.go │ │ │ ├── convert.go │ │ │ ├── descriptor.go │ │ │ ├── descriptor_no_unsafe.go │ │ │ ├── descriptor_unsafe.go │ │ │ ├── doc.go │ │ │ ├── imports.go │ │ │ ├── internal │ │ │ │ ├── proto3_optional.go │ │ │ │ ├── source_info.go │ │ │ │ └── util.go │ │ │ ├── load.go │ │ │ ├── protoparse │ │ │ │ ├── .gitignore │ │ │ │ ├── ast.go │ │ │ │ ├── descriptor_protos.go │ │ │ │ ├── doc.go │ │ │ │ ├── errors.go │ │ │ │ ├── lexer.go │ │ │ │ ├── linker.go │ │ │ │ ├── options.go │ │ │ │ ├── parser.go │ │ │ │ ├── proto.y │ │ │ │ ├── proto.y.go │ │ │ │ ├── resolve_files.go │ │ │ │ ├── source_code_info.go │ │ │ │ ├── std_imports.go │ │ │ │ ├── test-source-info.txt │ │ │ │ └── validate.go │ │ │ └── protoprint │ │ │ │ ├── doc.go │ │ │ │ └── print.go │ │ │ ├── dynamic │ │ │ ├── binary.go │ │ │ ├── doc.go │ │ │ ├── dynamic_message.go │ │ │ ├── equal.go │ │ │ ├── extension.go │ │ │ ├── extension_registry.go │ │ │ ├── indent.go │ │ │ ├── json.go │ │ │ ├── maps_1.11.go │ │ │ ├── maps_1.12.go │ │ │ ├── merge.go │ │ │ ├── message_factory.go │ │ │ └── text.go │ │ │ └── internal │ │ │ ├── codec │ │ │ ├── buffer.go │ │ │ ├── decode.go │ │ │ └── encode.go │ │ │ ├── standard_files.go │ │ │ └── unrecognized.go │ ├── julienschmidt │ │ └── httprouter │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── path.go │ │ │ ├── router.go │ │ │ └── tree.go │ ├── mattn │ │ ├── go-colorable │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── colorable_appengine.go │ │ │ ├── colorable_others.go │ │ │ ├── colorable_windows.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── go.test.sh │ │ │ └── noncolorable.go │ │ └── go-isatty │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── go.test.sh │ │ │ ├── isatty_bsd.go │ │ │ ├── isatty_others.go │ │ │ ├── isatty_plan9.go │ │ │ ├── isatty_solaris.go │ │ │ ├── isatty_tcgets.go │ │ │ ├── isatty_windows.go │ │ │ └── renovate.json │ ├── matttproud │ │ └── golang_protobuf_extensions │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── pbutil │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ └── encode.go │ ├── mitchellh │ │ ├── go-homedir │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ └── homedir.go │ │ ├── go-wordwrap │ │ │ ├── LICENSE.md │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ └── wordwrap.go │ │ └── mapstructure │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── decode_hooks.go │ │ │ ├── error.go │ │ │ ├── go.mod │ │ │ └── mapstructure.go │ ├── pmezard │ │ └── go-difflib │ │ │ ├── LICENSE │ │ │ └── difflib │ │ │ └── difflib.go │ ├── prometheus │ │ ├── client_golang │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── prometheus │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── build_info.go │ │ │ │ ├── build_info_pre_1.12.go │ │ │ │ ├── collector.go │ │ │ │ ├── counter.go │ │ │ │ ├── desc.go │ │ │ │ ├── doc.go │ │ │ │ ├── expvar_collector.go │ │ │ │ ├── fnv.go │ │ │ │ ├── gauge.go │ │ │ │ ├── go_collector.go │ │ │ │ ├── histogram.go │ │ │ │ ├── internal │ │ │ │ └── metric.go │ │ │ │ ├── labels.go │ │ │ │ ├── metric.go │ │ │ │ ├── observer.go │ │ │ │ ├── process_collector.go │ │ │ │ ├── process_collector_other.go │ │ │ │ ├── process_collector_windows.go │ │ │ │ ├── promhttp │ │ │ │ ├── delegator.go │ │ │ │ ├── http.go │ │ │ │ ├── instrument_client.go │ │ │ │ └── instrument_server.go │ │ │ │ ├── registry.go │ │ │ │ ├── summary.go │ │ │ │ ├── timer.go │ │ │ │ ├── untyped.go │ │ │ │ ├── value.go │ │ │ │ ├── vec.go │ │ │ │ └── wrap.go │ │ ├── client_model │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── go │ │ │ │ └── metrics.pb.go │ │ ├── common │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ ├── expfmt │ │ │ │ ├── decode.go │ │ │ │ ├── encode.go │ │ │ │ ├── expfmt.go │ │ │ │ ├── fuzz.go │ │ │ │ ├── text_create.go │ │ │ │ └── text_parse.go │ │ │ ├── internal │ │ │ │ └── bitbucket.org │ │ │ │ │ └── ww │ │ │ │ │ └── goautoneg │ │ │ │ │ ├── README.txt │ │ │ │ │ └── autoneg.go │ │ │ └── model │ │ │ │ ├── alert.go │ │ │ │ ├── fingerprinting.go │ │ │ │ ├── fnv.go │ │ │ │ ├── labels.go │ │ │ │ ├── labelset.go │ │ │ │ ├── metric.go │ │ │ │ ├── model.go │ │ │ │ ├── signature.go │ │ │ │ ├── silence.go │ │ │ │ ├── time.go │ │ │ │ └── value.go │ │ └── procfs │ │ │ ├── .gitignore │ │ │ ├── .golangci.yml │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── MAINTAINERS.md │ │ │ ├── Makefile │ │ │ ├── Makefile.common │ │ │ ├── NOTICE │ │ │ ├── README.md │ │ │ ├── arp.go │ │ │ ├── buddyinfo.go │ │ │ ├── cpuinfo.go │ │ │ ├── crypto.go │ │ │ ├── doc.go │ │ │ ├── fixtures.ttar │ │ │ ├── fs.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── internal │ │ │ ├── fs │ │ │ │ └── fs.go │ │ │ └── util │ │ │ │ ├── parse.go │ │ │ │ ├── sysreadfile.go │ │ │ │ ├── sysreadfile_compat.go │ │ │ │ └── valueparser.go │ │ │ ├── ipvs.go │ │ │ ├── mdstat.go │ │ │ ├── mountinfo.go │ │ │ ├── mountstats.go │ │ │ ├── net_dev.go │ │ │ ├── net_softnet.go │ │ │ ├── net_unix.go │ │ │ ├── proc.go │ │ │ ├── proc_environ.go │ │ │ ├── proc_fdinfo.go │ │ │ ├── proc_io.go │ │ │ ├── proc_limits.go │ │ │ ├── proc_ns.go │ │ │ ├── proc_psi.go │ │ │ ├── proc_stat.go │ │ │ ├── proc_status.go │ │ │ ├── schedstat.go │ │ │ ├── stat.go │ │ │ ├── ttar │ │ │ ├── vm.go │ │ │ ├── xfrm.go │ │ │ └── zoneinfo.go │ ├── rs │ │ └── cors │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── cors.go │ │ │ ├── go.mod │ │ │ └── utils.go │ ├── spf13 │ │ ├── cobra │ │ │ ├── .gitignore │ │ │ ├── .mailmap │ │ │ ├── .travis.yml │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── args.go │ │ │ ├── bash_completions.go │ │ │ ├── bash_completions.md │ │ │ ├── cobra.go │ │ │ ├── command.go │ │ │ ├── command_notwin.go │ │ │ ├── command_win.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── powershell_completions.go │ │ │ ├── powershell_completions.md │ │ │ ├── shell_completions.go │ │ │ ├── zsh_completions.go │ │ │ └── zsh_completions.md │ │ └── pflag │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bool.go │ │ │ ├── bool_slice.go │ │ │ ├── bytes.go │ │ │ ├── count.go │ │ │ ├── duration.go │ │ │ ├── duration_slice.go │ │ │ ├── flag.go │ │ │ ├── float32.go │ │ │ ├── float32_slice.go │ │ │ ├── float64.go │ │ │ ├── float64_slice.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── golangflag.go │ │ │ ├── int.go │ │ │ ├── int16.go │ │ │ ├── int32.go │ │ │ ├── int32_slice.go │ │ │ ├── int64.go │ │ │ ├── int64_slice.go │ │ │ ├── int8.go │ │ │ ├── int_slice.go │ │ │ ├── ip.go │ │ │ ├── ip_slice.go │ │ │ ├── ipmask.go │ │ │ ├── ipnet.go │ │ │ ├── string.go │ │ │ ├── string_array.go │ │ │ ├── string_slice.go │ │ │ ├── string_to_int.go │ │ │ ├── string_to_int64.go │ │ │ ├── string_to_string.go │ │ │ ├── uint.go │ │ │ ├── uint16.go │ │ │ ├── uint32.go │ │ │ ├── uint64.go │ │ │ ├── uint8.go │ │ │ └── uint_slice.go │ ├── stretchr │ │ └── testify │ │ │ ├── LICENSE │ │ │ └── assert │ │ │ ├── assertion_compare.go │ │ │ ├── assertion_format.go │ │ │ ├── assertion_format.go.tmpl │ │ │ ├── assertion_forward.go │ │ │ ├── assertion_forward.go.tmpl │ │ │ ├── assertions.go │ │ │ ├── doc.go │ │ │ ├── errors.go │ │ │ ├── forward_assertions.go │ │ │ └── http_assertions.go │ └── zclconf │ │ └── go-cty │ │ ├── LICENSE │ │ └── cty │ │ ├── capsule.go │ │ ├── capsule_ops.go │ │ ├── collection.go │ │ ├── convert │ │ ├── compare_types.go │ │ ├── conversion.go │ │ ├── conversion_capsule.go │ │ ├── conversion_collection.go │ │ ├── conversion_dynamic.go │ │ ├── conversion_object.go │ │ ├── conversion_primitive.go │ │ ├── conversion_tuple.go │ │ ├── doc.go │ │ ├── mismatch_msg.go │ │ ├── public.go │ │ ├── sort_types.go │ │ └── unify.go │ │ ├── doc.go │ │ ├── element_iterator.go │ │ ├── error.go │ │ ├── function │ │ ├── argument.go │ │ ├── doc.go │ │ ├── error.go │ │ ├── function.go │ │ ├── stdlib │ │ │ ├── bool.go │ │ │ ├── bytes.go │ │ │ ├── collection.go │ │ │ ├── conversion.go │ │ │ ├── csv.go │ │ │ ├── datetime.go │ │ │ ├── doc.go │ │ │ ├── format.go │ │ │ ├── format_fsm.go │ │ │ ├── format_fsm.rl │ │ │ ├── general.go │ │ │ ├── json.go │ │ │ ├── number.go │ │ │ ├── regexp.go │ │ │ ├── sequence.go │ │ │ ├── set.go │ │ │ └── string.go │ │ └── unpredictable.go │ │ ├── gob.go │ │ ├── gocty │ │ ├── doc.go │ │ ├── helpers.go │ │ ├── in.go │ │ ├── out.go │ │ └── type_implied.go │ │ ├── helper.go │ │ ├── json.go │ │ ├── json │ │ ├── doc.go │ │ ├── marshal.go │ │ ├── simple.go │ │ ├── type.go │ │ ├── type_implied.go │ │ ├── unmarshal.go │ │ └── value.go │ │ ├── list_type.go │ │ ├── map_type.go │ │ ├── marks.go │ │ ├── null.go │ │ ├── object_type.go │ │ ├── path.go │ │ ├── path_set.go │ │ ├── primitive_type.go │ │ ├── set │ │ ├── gob.go │ │ ├── iterator.go │ │ ├── ops.go │ │ ├── rules.go │ │ └── set.go │ │ ├── set_helper.go │ │ ├── set_internals.go │ │ ├── set_type.go │ │ ├── tuple_type.go │ │ ├── type.go │ │ ├── type_conform.go │ │ ├── types_to_register.go │ │ ├── unknown.go │ │ ├── unknown_as_null.go │ │ ├── value.go │ │ ├── value_init.go │ │ ├── value_ops.go │ │ └── walk.go ├── go.uber.org │ ├── atomic │ │ ├── .codecov.yml │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE.txt │ │ ├── Makefile │ │ ├── README.md │ │ ├── atomic.go │ │ ├── error.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── string.go │ │ └── tools.go │ ├── multierr │ │ ├── .codecov.yml │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE.txt │ │ ├── Makefile │ │ ├── README.md │ │ ├── error.go │ │ ├── glide.yaml │ │ ├── go.mod │ │ ├── go.sum │ │ ├── go113.go │ │ └── tools.go │ ├── tools │ │ ├── LICENSE │ │ └── update-license │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── licenses.go │ │ │ └── main.go │ └── zap │ │ ├── .codecov.yml │ │ ├── .gitignore │ │ ├── .readme.tmpl │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── CODE_OF_CONDUCT.md │ │ ├── CONTRIBUTING.md │ │ ├── FAQ.md │ │ ├── LICENSE.txt │ │ ├── Makefile │ │ ├── README.md │ │ ├── array.go │ │ ├── buffer │ │ ├── buffer.go │ │ └── pool.go │ │ ├── checklicense.sh │ │ ├── config.go │ │ ├── doc.go │ │ ├── encoder.go │ │ ├── error.go │ │ ├── field.go │ │ ├── flag.go │ │ ├── glide.yaml │ │ ├── global.go │ │ ├── global_go112.go │ │ ├── global_prego112.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── http_handler.go │ │ ├── internal │ │ ├── bufferpool │ │ │ └── bufferpool.go │ │ ├── color │ │ │ └── color.go │ │ └── exit │ │ │ └── exit.go │ │ ├── level.go │ │ ├── logger.go │ │ ├── options.go │ │ ├── sink.go │ │ ├── stacktrace.go │ │ ├── sugar.go │ │ ├── time.go │ │ ├── tools.go │ │ ├── writer.go │ │ └── zapcore │ │ ├── console_encoder.go │ │ ├── core.go │ │ ├── doc.go │ │ ├── encoder.go │ │ ├── entry.go │ │ ├── error.go │ │ ├── field.go │ │ ├── hook.go │ │ ├── json_encoder.go │ │ ├── level.go │ │ ├── level_strings.go │ │ ├── marshaler.go │ │ ├── memory_encoder.go │ │ ├── sampler.go │ │ ├── tee.go │ │ └── write_syncer.go ├── golang.org │ └── x │ │ ├── lint │ │ ├── .travis.yml │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── go.mod │ │ ├── go.sum │ │ ├── golint │ │ │ ├── golint.go │ │ │ ├── import.go │ │ │ └── importcomment.go │ │ └── lint.go │ │ ├── net │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── http │ │ │ └── httpguts │ │ │ │ ├── guts.go │ │ │ │ └── httplex.go │ │ ├── http2 │ │ │ ├── .gitignore │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── README │ │ │ ├── ciphers.go │ │ │ ├── client_conn_pool.go │ │ │ ├── databuffer.go │ │ │ ├── errors.go │ │ │ ├── flow.go │ │ │ ├── frame.go │ │ │ ├── go111.go │ │ │ ├── gotrack.go │ │ │ ├── headermap.go │ │ │ ├── hpack │ │ │ │ ├── encode.go │ │ │ │ ├── hpack.go │ │ │ │ ├── huffman.go │ │ │ │ └── tables.go │ │ │ ├── http2.go │ │ │ ├── not_go111.go │ │ │ ├── pipe.go │ │ │ ├── server.go │ │ │ ├── transport.go │ │ │ ├── write.go │ │ │ ├── writesched.go │ │ │ ├── writesched_priority.go │ │ │ └── writesched_random.go │ │ ├── idna │ │ │ ├── idna10.0.0.go │ │ │ ├── idna9.0.0.go │ │ │ ├── punycode.go │ │ │ ├── tables10.0.0.go │ │ │ ├── tables11.0.0.go │ │ │ ├── tables12.00.go │ │ │ ├── tables9.0.0.go │ │ │ ├── trie.go │ │ │ └── trieval.go │ │ ├── internal │ │ │ └── timeseries │ │ │ │ └── timeseries.go │ │ └── trace │ │ │ ├── events.go │ │ │ ├── histogram.go │ │ │ └── trace.go │ │ ├── sys │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── unix │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── affinity_linux.go │ │ │ ├── aliases.go │ │ │ ├── asm_aix_ppc64.s │ │ │ ├── asm_darwin_386.s │ │ │ ├── asm_darwin_amd64.s │ │ │ ├── asm_darwin_arm.s │ │ │ ├── asm_darwin_arm64.s │ │ │ ├── asm_dragonfly_amd64.s │ │ │ ├── asm_freebsd_386.s │ │ │ ├── asm_freebsd_amd64.s │ │ │ ├── asm_freebsd_arm.s │ │ │ ├── asm_freebsd_arm64.s │ │ │ ├── asm_linux_386.s │ │ │ ├── asm_linux_amd64.s │ │ │ ├── asm_linux_arm.s │ │ │ ├── asm_linux_arm64.s │ │ │ ├── asm_linux_mips64x.s │ │ │ ├── asm_linux_mipsx.s │ │ │ ├── asm_linux_ppc64x.s │ │ │ ├── asm_linux_riscv64.s │ │ │ ├── asm_linux_s390x.s │ │ │ ├── asm_netbsd_386.s │ │ │ ├── asm_netbsd_amd64.s │ │ │ ├── asm_netbsd_arm.s │ │ │ ├── asm_netbsd_arm64.s │ │ │ ├── asm_openbsd_386.s │ │ │ ├── asm_openbsd_amd64.s │ │ │ ├── asm_openbsd_arm.s │ │ │ ├── asm_openbsd_arm64.s │ │ │ ├── asm_solaris_amd64.s │ │ │ ├── bluetooth_linux.go │ │ │ ├── cap_freebsd.go │ │ │ ├── constants.go │ │ │ ├── dev_aix_ppc.go │ │ │ ├── dev_aix_ppc64.go │ │ │ ├── dev_darwin.go │ │ │ ├── dev_dragonfly.go │ │ │ ├── dev_freebsd.go │ │ │ ├── dev_linux.go │ │ │ ├── dev_netbsd.go │ │ │ ├── dev_openbsd.go │ │ │ ├── dirent.go │ │ │ ├── endian_big.go │ │ │ ├── endian_little.go │ │ │ ├── env_unix.go │ │ │ ├── errors_freebsd_386.go │ │ │ ├── errors_freebsd_amd64.go │ │ │ ├── errors_freebsd_arm.go │ │ │ ├── errors_freebsd_arm64.go │ │ │ ├── fcntl.go │ │ │ ├── fcntl_darwin.go │ │ │ ├── fcntl_linux_32bit.go │ │ │ ├── fdset.go │ │ │ ├── gccgo.go │ │ │ ├── gccgo_c.c │ │ │ ├── gccgo_linux_amd64.go │ │ │ ├── ioctl.go │ │ │ ├── mkall.sh │ │ │ ├── mkerrors.sh │ │ │ ├── pagesize_unix.go │ │ │ ├── pledge_openbsd.go │ │ │ ├── race.go │ │ │ ├── race0.go │ │ │ ├── readdirent_getdents.go │ │ │ ├── readdirent_getdirentries.go │ │ │ ├── sockcmsg_dragonfly.go │ │ │ ├── sockcmsg_linux.go │ │ │ ├── sockcmsg_unix.go │ │ │ ├── sockcmsg_unix_other.go │ │ │ ├── str.go │ │ │ ├── syscall.go │ │ │ ├── syscall_aix.go │ │ │ ├── syscall_aix_ppc.go │ │ │ ├── syscall_aix_ppc64.go │ │ │ ├── syscall_bsd.go │ │ │ ├── syscall_darwin.1_12.go │ │ │ ├── syscall_darwin.1_13.go │ │ │ ├── syscall_darwin.go │ │ │ ├── syscall_darwin_386.1_11.go │ │ │ ├── syscall_darwin_386.go │ │ │ ├── syscall_darwin_amd64.1_11.go │ │ │ ├── syscall_darwin_amd64.go │ │ │ ├── syscall_darwin_arm.1_11.go │ │ │ ├── syscall_darwin_arm.go │ │ │ ├── syscall_darwin_arm64.1_11.go │ │ │ ├── syscall_darwin_arm64.go │ │ │ ├── syscall_darwin_libSystem.go │ │ │ ├── syscall_dragonfly.go │ │ │ ├── syscall_dragonfly_amd64.go │ │ │ ├── syscall_freebsd.go │ │ │ ├── syscall_freebsd_386.go │ │ │ ├── syscall_freebsd_amd64.go │ │ │ ├── syscall_freebsd_arm.go │ │ │ ├── syscall_freebsd_arm64.go │ │ │ ├── syscall_linux.go │ │ │ ├── syscall_linux_386.go │ │ │ ├── syscall_linux_amd64.go │ │ │ ├── syscall_linux_amd64_gc.go │ │ │ ├── syscall_linux_arm.go │ │ │ ├── syscall_linux_arm64.go │ │ │ ├── syscall_linux_gc.go │ │ │ ├── syscall_linux_gc_386.go │ │ │ ├── syscall_linux_gccgo_386.go │ │ │ ├── syscall_linux_gccgo_arm.go │ │ │ ├── syscall_linux_mips64x.go │ │ │ ├── syscall_linux_mipsx.go │ │ │ ├── syscall_linux_ppc64x.go │ │ │ ├── syscall_linux_riscv64.go │ │ │ ├── syscall_linux_s390x.go │ │ │ ├── syscall_linux_sparc64.go │ │ │ ├── syscall_netbsd.go │ │ │ ├── syscall_netbsd_386.go │ │ │ ├── syscall_netbsd_amd64.go │ │ │ ├── syscall_netbsd_arm.go │ │ │ ├── syscall_netbsd_arm64.go │ │ │ ├── syscall_openbsd.go │ │ │ ├── syscall_openbsd_386.go │ │ │ ├── syscall_openbsd_amd64.go │ │ │ ├── syscall_openbsd_arm.go │ │ │ ├── syscall_openbsd_arm64.go │ │ │ ├── syscall_solaris.go │ │ │ ├── syscall_solaris_amd64.go │ │ │ ├── syscall_unix.go │ │ │ ├── syscall_unix_gc.go │ │ │ ├── syscall_unix_gc_ppc64x.go │ │ │ ├── timestruct.go │ │ │ ├── unveil_openbsd.go │ │ │ ├── xattr_bsd.go │ │ │ ├── zerrors_aix_ppc.go │ │ │ ├── zerrors_aix_ppc64.go │ │ │ ├── zerrors_darwin_386.go │ │ │ ├── zerrors_darwin_amd64.go │ │ │ ├── zerrors_darwin_arm.go │ │ │ ├── zerrors_darwin_arm64.go │ │ │ ├── zerrors_dragonfly_amd64.go │ │ │ ├── zerrors_freebsd_386.go │ │ │ ├── zerrors_freebsd_amd64.go │ │ │ ├── zerrors_freebsd_arm.go │ │ │ ├── zerrors_freebsd_arm64.go │ │ │ ├── zerrors_linux.go │ │ │ ├── zerrors_linux_386.go │ │ │ ├── zerrors_linux_amd64.go │ │ │ ├── zerrors_linux_arm.go │ │ │ ├── zerrors_linux_arm64.go │ │ │ ├── zerrors_linux_mips.go │ │ │ ├── zerrors_linux_mips64.go │ │ │ ├── zerrors_linux_mips64le.go │ │ │ ├── zerrors_linux_mipsle.go │ │ │ ├── zerrors_linux_ppc64.go │ │ │ ├── zerrors_linux_ppc64le.go │ │ │ ├── zerrors_linux_riscv64.go │ │ │ ├── zerrors_linux_s390x.go │ │ │ ├── zerrors_linux_sparc64.go │ │ │ ├── zerrors_netbsd_386.go │ │ │ ├── zerrors_netbsd_amd64.go │ │ │ ├── zerrors_netbsd_arm.go │ │ │ ├── zerrors_netbsd_arm64.go │ │ │ ├── zerrors_openbsd_386.go │ │ │ ├── zerrors_openbsd_amd64.go │ │ │ ├── zerrors_openbsd_arm.go │ │ │ ├── zerrors_openbsd_arm64.go │ │ │ ├── zerrors_solaris_amd64.go │ │ │ ├── zptrace_armnn_linux.go │ │ │ ├── zptrace_linux_arm64.go │ │ │ ├── zptrace_mipsnn_linux.go │ │ │ ├── zptrace_mipsnnle_linux.go │ │ │ ├── zptrace_x86_linux.go │ │ │ ├── zsyscall_aix_ppc.go │ │ │ ├── zsyscall_aix_ppc64.go │ │ │ ├── zsyscall_aix_ppc64_gc.go │ │ │ ├── zsyscall_aix_ppc64_gccgo.go │ │ │ ├── zsyscall_darwin_386.1_11.go │ │ │ ├── zsyscall_darwin_386.1_13.go │ │ │ ├── zsyscall_darwin_386.1_13.s │ │ │ ├── zsyscall_darwin_386.go │ │ │ ├── zsyscall_darwin_386.s │ │ │ ├── zsyscall_darwin_amd64.1_11.go │ │ │ ├── zsyscall_darwin_amd64.1_13.go │ │ │ ├── zsyscall_darwin_amd64.1_13.s │ │ │ ├── zsyscall_darwin_amd64.go │ │ │ ├── zsyscall_darwin_amd64.s │ │ │ ├── zsyscall_darwin_arm.1_11.go │ │ │ ├── zsyscall_darwin_arm.1_13.go │ │ │ ├── zsyscall_darwin_arm.1_13.s │ │ │ ├── zsyscall_darwin_arm.go │ │ │ ├── zsyscall_darwin_arm.s │ │ │ ├── zsyscall_darwin_arm64.1_11.go │ │ │ ├── zsyscall_darwin_arm64.1_13.go │ │ │ ├── zsyscall_darwin_arm64.1_13.s │ │ │ ├── zsyscall_darwin_arm64.go │ │ │ ├── zsyscall_darwin_arm64.s │ │ │ ├── zsyscall_dragonfly_amd64.go │ │ │ ├── zsyscall_freebsd_386.go │ │ │ ├── zsyscall_freebsd_amd64.go │ │ │ ├── zsyscall_freebsd_arm.go │ │ │ ├── zsyscall_freebsd_arm64.go │ │ │ ├── zsyscall_linux.go │ │ │ ├── zsyscall_linux_386.go │ │ │ ├── zsyscall_linux_amd64.go │ │ │ ├── zsyscall_linux_arm.go │ │ │ ├── zsyscall_linux_arm64.go │ │ │ ├── zsyscall_linux_mips.go │ │ │ ├── zsyscall_linux_mips64.go │ │ │ ├── zsyscall_linux_mips64le.go │ │ │ ├── zsyscall_linux_mipsle.go │ │ │ ├── zsyscall_linux_ppc64.go │ │ │ ├── zsyscall_linux_ppc64le.go │ │ │ ├── zsyscall_linux_riscv64.go │ │ │ ├── zsyscall_linux_s390x.go │ │ │ ├── zsyscall_linux_sparc64.go │ │ │ ├── zsyscall_netbsd_386.go │ │ │ ├── zsyscall_netbsd_amd64.go │ │ │ ├── zsyscall_netbsd_arm.go │ │ │ ├── zsyscall_netbsd_arm64.go │ │ │ ├── zsyscall_openbsd_386.go │ │ │ ├── zsyscall_openbsd_amd64.go │ │ │ ├── zsyscall_openbsd_arm.go │ │ │ ├── zsyscall_openbsd_arm64.go │ │ │ ├── zsyscall_solaris_amd64.go │ │ │ ├── zsysctl_openbsd_386.go │ │ │ ├── zsysctl_openbsd_amd64.go │ │ │ ├── zsysctl_openbsd_arm.go │ │ │ ├── zsysctl_openbsd_arm64.go │ │ │ ├── zsysnum_darwin_386.go │ │ │ ├── zsysnum_darwin_amd64.go │ │ │ ├── zsysnum_darwin_arm.go │ │ │ ├── zsysnum_darwin_arm64.go │ │ │ ├── zsysnum_dragonfly_amd64.go │ │ │ ├── zsysnum_freebsd_386.go │ │ │ ├── zsysnum_freebsd_amd64.go │ │ │ ├── zsysnum_freebsd_arm.go │ │ │ ├── zsysnum_freebsd_arm64.go │ │ │ ├── zsysnum_linux_386.go │ │ │ ├── zsysnum_linux_amd64.go │ │ │ ├── zsysnum_linux_arm.go │ │ │ ├── zsysnum_linux_arm64.go │ │ │ ├── zsysnum_linux_mips.go │ │ │ ├── zsysnum_linux_mips64.go │ │ │ ├── zsysnum_linux_mips64le.go │ │ │ ├── zsysnum_linux_mipsle.go │ │ │ ├── zsysnum_linux_ppc64.go │ │ │ ├── zsysnum_linux_ppc64le.go │ │ │ ├── zsysnum_linux_riscv64.go │ │ │ ├── zsysnum_linux_s390x.go │ │ │ ├── zsysnum_linux_sparc64.go │ │ │ ├── zsysnum_netbsd_386.go │ │ │ ├── zsysnum_netbsd_amd64.go │ │ │ ├── zsysnum_netbsd_arm.go │ │ │ ├── zsysnum_netbsd_arm64.go │ │ │ ├── zsysnum_openbsd_386.go │ │ │ ├── zsysnum_openbsd_amd64.go │ │ │ ├── zsysnum_openbsd_arm.go │ │ │ ├── zsysnum_openbsd_arm64.go │ │ │ ├── ztypes_aix_ppc.go │ │ │ ├── ztypes_aix_ppc64.go │ │ │ ├── ztypes_darwin_386.go │ │ │ ├── ztypes_darwin_amd64.go │ │ │ ├── ztypes_darwin_arm.go │ │ │ ├── ztypes_darwin_arm64.go │ │ │ ├── ztypes_dragonfly_amd64.go │ │ │ ├── ztypes_freebsd_386.go │ │ │ ├── ztypes_freebsd_amd64.go │ │ │ ├── ztypes_freebsd_arm.go │ │ │ ├── ztypes_freebsd_arm64.go │ │ │ ├── ztypes_linux.go │ │ │ ├── ztypes_linux_386.go │ │ │ ├── ztypes_linux_amd64.go │ │ │ ├── ztypes_linux_arm.go │ │ │ ├── ztypes_linux_arm64.go │ │ │ ├── ztypes_linux_mips.go │ │ │ ├── ztypes_linux_mips64.go │ │ │ ├── ztypes_linux_mips64le.go │ │ │ ├── ztypes_linux_mipsle.go │ │ │ ├── ztypes_linux_ppc64.go │ │ │ ├── ztypes_linux_ppc64le.go │ │ │ ├── ztypes_linux_riscv64.go │ │ │ ├── ztypes_linux_s390x.go │ │ │ ├── ztypes_linux_sparc64.go │ │ │ ├── ztypes_netbsd_386.go │ │ │ ├── ztypes_netbsd_amd64.go │ │ │ ├── ztypes_netbsd_arm.go │ │ │ ├── ztypes_netbsd_arm64.go │ │ │ ├── ztypes_openbsd_386.go │ │ │ ├── ztypes_openbsd_amd64.go │ │ │ ├── ztypes_openbsd_arm.go │ │ │ ├── ztypes_openbsd_arm64.go │ │ │ └── ztypes_solaris_amd64.go │ │ └── windows │ │ │ ├── aliases.go │ │ │ ├── dll_windows.go │ │ │ ├── empty.s │ │ │ ├── env_windows.go │ │ │ ├── eventlog.go │ │ │ ├── exec_windows.go │ │ │ ├── memory_windows.go │ │ │ ├── mkerrors.bash │ │ │ ├── mkknownfolderids.bash │ │ │ ├── mksyscall.go │ │ │ ├── race.go │ │ │ ├── race0.go │ │ │ ├── security_windows.go │ │ │ ├── service.go │ │ │ ├── str.go │ │ │ ├── syscall.go │ │ │ ├── syscall_windows.go │ │ │ ├── types_windows.go │ │ │ ├── types_windows_386.go │ │ │ ├── types_windows_amd64.go │ │ │ ├── types_windows_arm.go │ │ │ ├── zerrors_windows.go │ │ │ ├── zknownfolderids_windows.go │ │ │ └── zsyscall_windows.go │ │ ├── text │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── secure │ │ │ └── bidirule │ │ │ │ ├── bidirule.go │ │ │ │ ├── bidirule10.0.0.go │ │ │ │ └── bidirule9.0.0.go │ │ ├── transform │ │ │ └── transform.go │ │ └── unicode │ │ │ ├── bidi │ │ │ ├── bidi.go │ │ │ ├── bracket.go │ │ │ ├── core.go │ │ │ ├── prop.go │ │ │ ├── tables10.0.0.go │ │ │ ├── tables11.0.0.go │ │ │ ├── tables9.0.0.go │ │ │ └── trieval.go │ │ │ └── norm │ │ │ ├── composition.go │ │ │ ├── forminfo.go │ │ │ ├── input.go │ │ │ ├── iter.go │ │ │ ├── normalize.go │ │ │ ├── readwriter.go │ │ │ ├── tables10.0.0.go │ │ │ ├── tables11.0.0.go │ │ │ ├── tables9.0.0.go │ │ │ ├── transform.go │ │ │ └── trie.go │ │ ├── tools │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── go │ │ │ ├── analysis │ │ │ │ ├── analysis.go │ │ │ │ ├── diagnostic.go │ │ │ │ ├── doc.go │ │ │ │ ├── passes │ │ │ │ │ └── inspect │ │ │ │ │ │ └── inspect.go │ │ │ │ └── validate.go │ │ │ ├── ast │ │ │ │ ├── astutil │ │ │ │ │ ├── enclosing.go │ │ │ │ │ ├── imports.go │ │ │ │ │ ├── rewrite.go │ │ │ │ │ └── util.go │ │ │ │ └── inspector │ │ │ │ │ ├── inspector.go │ │ │ │ │ └── typeof.go │ │ │ ├── buildutil │ │ │ │ ├── allpackages.go │ │ │ │ ├── fakecontext.go │ │ │ │ ├── overlay.go │ │ │ │ ├── tags.go │ │ │ │ └── util.go │ │ │ ├── gcexportdata │ │ │ │ ├── gcexportdata.go │ │ │ │ └── importer.go │ │ │ ├── internal │ │ │ │ ├── cgo │ │ │ │ │ ├── cgo.go │ │ │ │ │ └── cgo_pkgconfig.go │ │ │ │ ├── gcimporter │ │ │ │ │ ├── exportdata.go │ │ │ │ │ ├── gcimporter.go │ │ │ │ │ ├── iexport.go │ │ │ │ │ ├── iimport.go │ │ │ │ │ ├── newInterface10.go │ │ │ │ │ └── newInterface11.go │ │ │ │ └── packagesdriver │ │ │ │ │ └── sizes.go │ │ │ ├── loader │ │ │ │ ├── doc.go │ │ │ │ ├── loader.go │ │ │ │ └── util.go │ │ │ ├── packages │ │ │ │ ├── doc.go │ │ │ │ ├── external.go │ │ │ │ ├── golist.go │ │ │ │ ├── golist_overlay.go │ │ │ │ ├── loadmode_string.go │ │ │ │ ├── packages.go │ │ │ │ └── visit.go │ │ │ └── types │ │ │ │ ├── objectpath │ │ │ │ └── objectpath.go │ │ │ │ └── typeutil │ │ │ │ ├── callee.go │ │ │ │ ├── imports.go │ │ │ │ ├── map.go │ │ │ │ ├── methodsetcache.go │ │ │ │ └── ui.go │ │ └── internal │ │ │ ├── analysisinternal │ │ │ └── analysis.go │ │ │ ├── event │ │ │ ├── core │ │ │ │ ├── event.go │ │ │ │ ├── export.go │ │ │ │ └── fast.go │ │ │ ├── doc.go │ │ │ ├── event.go │ │ │ ├── keys │ │ │ │ ├── keys.go │ │ │ │ └── standard.go │ │ │ └── label │ │ │ │ └── label.go │ │ │ ├── gocommand │ │ │ └── invoke.go │ │ │ └── packagesinternal │ │ │ └── packages.go │ │ └── xerrors │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── README │ │ ├── adaptor.go │ │ ├── codereview.cfg │ │ ├── doc.go │ │ ├── errors.go │ │ ├── fmt.go │ │ ├── format.go │ │ ├── frame.go │ │ ├── go.mod │ │ ├── internal │ │ └── internal.go │ │ └── wrap.go ├── google.golang.org │ ├── genproto │ │ ├── LICENSE │ │ ├── googleapis │ │ │ └── rpc │ │ │ │ └── status │ │ │ │ └── status.pb.go │ │ └── protobuf │ │ │ ├── api │ │ │ └── api.go │ │ │ ├── field_mask │ │ │ └── field_mask.go │ │ │ ├── ptype │ │ │ └── type.go │ │ │ └── source_context │ │ │ └── source_context.go │ ├── grpc │ │ ├── .travis.yml │ │ ├── AUTHORS │ │ ├── CODE-OF-CONDUCT.md │ │ ├── CONTRIBUTING.md │ │ ├── GOVERNANCE.md │ │ ├── LICENSE │ │ ├── MAINTAINERS.md │ │ ├── Makefile │ │ ├── README.md │ │ ├── attributes │ │ │ └── attributes.go │ │ ├── backoff.go │ │ ├── backoff │ │ │ └── backoff.go │ │ ├── balancer.go │ │ ├── balancer │ │ │ ├── balancer.go │ │ │ ├── base │ │ │ │ ├── balancer.go │ │ │ │ └── base.go │ │ │ └── roundrobin │ │ │ │ └── roundrobin.go │ │ ├── balancer_conn_wrappers.go │ │ ├── balancer_v1_wrapper.go │ │ ├── binarylog │ │ │ └── grpc_binarylog_v1 │ │ │ │ └── binarylog.pb.go │ │ ├── call.go │ │ ├── clientconn.go │ │ ├── codec.go │ │ ├── codegen.sh │ │ ├── codes │ │ │ ├── code_string.go │ │ │ └── codes.go │ │ ├── connectivity │ │ │ └── connectivity.go │ │ ├── credentials │ │ │ ├── credentials.go │ │ │ ├── go12.go │ │ │ ├── internal │ │ │ │ ├── syscallconn.go │ │ │ │ └── syscallconn_appengine.go │ │ │ └── tls.go │ │ ├── dialoptions.go │ │ ├── doc.go │ │ ├── encoding │ │ │ ├── encoding.go │ │ │ └── proto │ │ │ │ └── proto.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── grpclog │ │ │ ├── grpclog.go │ │ │ ├── logger.go │ │ │ └── loggerv2.go │ │ ├── install_gae.sh │ │ ├── interceptor.go │ │ ├── internal │ │ │ ├── backoff │ │ │ │ └── backoff.go │ │ │ ├── balancerload │ │ │ │ └── load.go │ │ │ ├── binarylog │ │ │ │ ├── binarylog.go │ │ │ │ ├── binarylog_testutil.go │ │ │ │ ├── env_config.go │ │ │ │ ├── method_logger.go │ │ │ │ ├── regenerate.sh │ │ │ │ ├── sink.go │ │ │ │ └── util.go │ │ │ ├── buffer │ │ │ │ └── unbounded.go │ │ │ ├── channelz │ │ │ │ ├── funcs.go │ │ │ │ ├── types.go │ │ │ │ ├── types_linux.go │ │ │ │ ├── types_nonlinux.go │ │ │ │ ├── util_linux.go │ │ │ │ └── util_nonlinux.go │ │ │ ├── envconfig │ │ │ │ └── envconfig.go │ │ │ ├── grpcrand │ │ │ │ └── grpcrand.go │ │ │ ├── grpcsync │ │ │ │ └── event.go │ │ │ ├── internal.go │ │ │ ├── resolver │ │ │ │ ├── dns │ │ │ │ │ ├── dns_resolver.go │ │ │ │ │ └── go113.go │ │ │ │ └── passthrough │ │ │ │ │ └── passthrough.go │ │ │ ├── syscall │ │ │ │ ├── syscall_linux.go │ │ │ │ └── syscall_nonlinux.go │ │ │ └── transport │ │ │ │ ├── bdp_estimator.go │ │ │ │ ├── controlbuf.go │ │ │ │ ├── defaults.go │ │ │ │ ├── flowcontrol.go │ │ │ │ ├── handler_server.go │ │ │ │ ├── http2_client.go │ │ │ │ ├── http2_server.go │ │ │ │ ├── http_util.go │ │ │ │ ├── log.go │ │ │ │ └── transport.go │ │ ├── keepalive │ │ │ └── keepalive.go │ │ ├── metadata │ │ │ └── metadata.go │ │ ├── naming │ │ │ ├── dns_resolver.go │ │ │ └── naming.go │ │ ├── peer │ │ │ └── peer.go │ │ ├── picker_wrapper.go │ │ ├── pickfirst.go │ │ ├── preloader.go │ │ ├── proxy.go │ │ ├── reflection │ │ │ └── grpc_reflection_v1alpha │ │ │ │ ├── reflection.pb.go │ │ │ │ └── reflection.proto │ │ ├── resolver │ │ │ └── resolver.go │ │ ├── resolver_conn_wrapper.go │ │ ├── rpc_util.go │ │ ├── server.go │ │ ├── service_config.go │ │ ├── serviceconfig │ │ │ └── serviceconfig.go │ │ ├── stats │ │ │ ├── handlers.go │ │ │ └── stats.go │ │ ├── status │ │ │ └── status.go │ │ ├── stream.go │ │ ├── tap │ │ │ └── tap.go │ │ ├── trace.go │ │ ├── version.go │ │ └── vet.sh │ └── protobuf │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── encoding │ │ ├── protojson │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ ├── encode.go │ │ │ └── well_known_types.go │ │ ├── prototext │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ └── encode.go │ │ └── protowire │ │ │ └── wire.go │ │ ├── internal │ │ ├── descfmt │ │ │ └── stringer.go │ │ ├── descopts │ │ │ └── options.go │ │ ├── detrand │ │ │ └── rand.go │ │ ├── encoding │ │ │ ├── defval │ │ │ │ └── default.go │ │ │ ├── json │ │ │ │ ├── decode.go │ │ │ │ ├── decode_number.go │ │ │ │ ├── decode_string.go │ │ │ │ ├── decode_token.go │ │ │ │ └── encode.go │ │ │ ├── messageset │ │ │ │ └── messageset.go │ │ │ ├── tag │ │ │ │ └── tag.go │ │ │ └── text │ │ │ │ ├── decode.go │ │ │ │ ├── decode_number.go │ │ │ │ ├── decode_string.go │ │ │ │ ├── decode_token.go │ │ │ │ ├── doc.go │ │ │ │ └── encode.go │ │ ├── errors │ │ │ ├── errors.go │ │ │ ├── is_go112.go │ │ │ └── is_go113.go │ │ ├── fieldsort │ │ │ └── fieldsort.go │ │ ├── filedesc │ │ │ ├── build.go │ │ │ ├── desc.go │ │ │ ├── desc_init.go │ │ │ ├── desc_lazy.go │ │ │ ├── desc_list.go │ │ │ ├── desc_list_gen.go │ │ │ └── placeholder.go │ │ ├── filetype │ │ │ └── build.go │ │ ├── flags │ │ │ ├── flags.go │ │ │ ├── proto_legacy_disable.go │ │ │ └── proto_legacy_enable.go │ │ ├── genid │ │ │ ├── any_gen.go │ │ │ ├── api_gen.go │ │ │ ├── descriptor_gen.go │ │ │ ├── doc.go │ │ │ ├── duration_gen.go │ │ │ ├── empty_gen.go │ │ │ ├── field_mask_gen.go │ │ │ ├── goname.go │ │ │ ├── map_entry.go │ │ │ ├── source_context_gen.go │ │ │ ├── struct_gen.go │ │ │ ├── timestamp_gen.go │ │ │ ├── type_gen.go │ │ │ ├── wrappers.go │ │ │ └── wrappers_gen.go │ │ ├── impl │ │ │ ├── api_export.go │ │ │ ├── checkinit.go │ │ │ ├── codec_extension.go │ │ │ ├── codec_field.go │ │ │ ├── codec_gen.go │ │ │ ├── codec_map.go │ │ │ ├── codec_map_go111.go │ │ │ ├── codec_map_go112.go │ │ │ ├── codec_message.go │ │ │ ├── codec_messageset.go │ │ │ ├── codec_reflect.go │ │ │ ├── codec_tables.go │ │ │ ├── codec_unsafe.go │ │ │ ├── convert.go │ │ │ ├── convert_list.go │ │ │ ├── convert_map.go │ │ │ ├── decode.go │ │ │ ├── encode.go │ │ │ ├── enum.go │ │ │ ├── extension.go │ │ │ ├── legacy_enum.go │ │ │ ├── legacy_export.go │ │ │ ├── legacy_extension.go │ │ │ ├── legacy_file.go │ │ │ ├── legacy_message.go │ │ │ ├── merge.go │ │ │ ├── merge_gen.go │ │ │ ├── message.go │ │ │ ├── message_reflect.go │ │ │ ├── message_reflect_field.go │ │ │ ├── message_reflect_gen.go │ │ │ ├── pointer_reflect.go │ │ │ ├── pointer_unsafe.go │ │ │ ├── validate.go │ │ │ └── weak.go │ │ ├── mapsort │ │ │ └── mapsort.go │ │ ├── pragma │ │ │ └── pragma.go │ │ ├── set │ │ │ └── ints.go │ │ ├── strs │ │ │ ├── strings.go │ │ │ ├── strings_pure.go │ │ │ └── strings_unsafe.go │ │ └── version │ │ │ └── version.go │ │ ├── proto │ │ ├── checkinit.go │ │ ├── decode.go │ │ ├── decode_gen.go │ │ ├── doc.go │ │ ├── encode.go │ │ ├── encode_gen.go │ │ ├── equal.go │ │ ├── extension.go │ │ ├── merge.go │ │ ├── messageset.go │ │ ├── proto.go │ │ ├── proto_methods.go │ │ ├── proto_reflect.go │ │ ├── reset.go │ │ ├── size.go │ │ ├── size_gen.go │ │ └── wrappers.go │ │ ├── reflect │ │ ├── protoreflect │ │ │ ├── methods.go │ │ │ ├── proto.go │ │ │ ├── source.go │ │ │ ├── type.go │ │ │ ├── value.go │ │ │ ├── value_pure.go │ │ │ ├── value_union.go │ │ │ └── value_unsafe.go │ │ └── protoregistry │ │ │ └── registry.go │ │ ├── runtime │ │ ├── protoiface │ │ │ ├── legacy.go │ │ │ └── methods.go │ │ └── protoimpl │ │ │ ├── impl.go │ │ │ └── version.go │ │ └── types │ │ ├── descriptorpb │ │ └── descriptor.pb.go │ │ ├── known │ │ ├── anypb │ │ │ └── any.pb.go │ │ ├── apipb │ │ │ └── api.pb.go │ │ ├── durationpb │ │ │ └── duration.pb.go │ │ ├── emptypb │ │ │ └── empty.pb.go │ │ ├── fieldmaskpb │ │ │ └── field_mask.pb.go │ │ ├── sourcecontextpb │ │ │ └── source_context.pb.go │ │ ├── structpb │ │ │ └── struct.pb.go │ │ ├── timestamppb │ │ │ └── timestamp.pb.go │ │ ├── typepb │ │ │ └── type.pb.go │ │ └── wrapperspb │ │ │ └── wrappers.pb.go │ │ └── pluginpb │ │ └── plugin.pb.go ├── gopkg.in │ ├── yaml.v2 │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── LICENSE.libyaml │ │ ├── NOTICE │ │ ├── README.md │ │ ├── apic.go │ │ ├── decode.go │ │ ├── emitterc.go │ │ ├── encode.go │ │ ├── go.mod │ │ ├── parserc.go │ │ ├── readerc.go │ │ ├── resolve.go │ │ ├── scannerc.go │ │ ├── sorter.go │ │ ├── writerc.go │ │ ├── yaml.go │ │ ├── yamlh.go │ │ └── yamlprivateh.go │ └── yaml.v3 │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ ├── apic.go │ │ ├── decode.go │ │ ├── emitterc.go │ │ ├── encode.go │ │ ├── go.mod │ │ ├── parserc.go │ │ ├── readerc.go │ │ ├── resolve.go │ │ ├── scannerc.go │ │ ├── sorter.go │ │ ├── writerc.go │ │ ├── yaml.go │ │ ├── yamlh.go │ │ └── yamlprivateh.go ├── honnef.co │ └── go │ │ └── tools │ │ ├── LICENSE │ │ ├── LICENSE-THIRD-PARTY │ │ ├── arg │ │ └── arg.go │ │ ├── cmd │ │ └── staticcheck │ │ │ ├── README.md │ │ │ └── staticcheck.go │ │ ├── code │ │ └── code.go │ │ ├── config │ │ ├── config.go │ │ └── example.conf │ │ ├── deprecated │ │ └── stdlib.go │ │ ├── edit │ │ └── edit.go │ │ ├── facts │ │ ├── deprecated.go │ │ ├── generated.go │ │ ├── purity.go │ │ └── token.go │ │ ├── functions │ │ ├── loops.go │ │ ├── stub.go │ │ └── terminates.go │ │ ├── go │ │ └── types │ │ │ └── typeutil │ │ │ ├── callee.go │ │ │ ├── identical.go │ │ │ ├── imports.go │ │ │ ├── map.go │ │ │ ├── methodsetcache.go │ │ │ └── ui.go │ │ ├── internal │ │ ├── cache │ │ │ ├── cache.go │ │ │ ├── default.go │ │ │ └── hash.go │ │ ├── passes │ │ │ └── buildir │ │ │ │ └── buildir.go │ │ ├── renameio │ │ │ └── renameio.go │ │ ├── robustio │ │ │ ├── robustio.go │ │ │ ├── robustio_darwin.go │ │ │ ├── robustio_flaky.go │ │ │ ├── robustio_other.go │ │ │ └── robustio_windows.go │ │ └── sharedcheck │ │ │ └── lint.go │ │ ├── ir │ │ ├── LICENSE │ │ ├── blockopt.go │ │ ├── builder.go │ │ ├── const.go │ │ ├── create.go │ │ ├── doc.go │ │ ├── dom.go │ │ ├── emit.go │ │ ├── exits.go │ │ ├── func.go │ │ ├── html.go │ │ ├── identical.go │ │ ├── identical_17.go │ │ ├── irutil │ │ │ ├── load.go │ │ │ ├── switch.go │ │ │ ├── util.go │ │ │ └── visit.go │ │ ├── lift.go │ │ ├── lvalue.go │ │ ├── methods.go │ │ ├── mode.go │ │ ├── print.go │ │ ├── sanity.go │ │ ├── source.go │ │ ├── ssa.go │ │ ├── staticcheck.conf │ │ ├── util.go │ │ ├── wrappers.go │ │ └── write.go │ │ ├── lint │ │ ├── LICENSE │ │ ├── lint.go │ │ ├── lintdsl │ │ │ └── lintdsl.go │ │ ├── lintutil │ │ │ ├── format │ │ │ │ └── format.go │ │ │ ├── stats.go │ │ │ ├── stats_bsd.go │ │ │ ├── stats_posix.go │ │ │ └── util.go │ │ ├── runner.go │ │ └── stats.go │ │ ├── loader │ │ └── loader.go │ │ ├── pattern │ │ ├── convert.go │ │ ├── doc.go │ │ ├── fuzz.go │ │ ├── lexer.go │ │ ├── match.go │ │ ├── parser.go │ │ └── pattern.go │ │ ├── printf │ │ ├── fuzz.go │ │ └── printf.go │ │ ├── report │ │ └── report.go │ │ ├── simple │ │ ├── analysis.go │ │ ├── doc.go │ │ └── lint.go │ │ ├── staticcheck │ │ ├── analysis.go │ │ ├── buildtag.go │ │ ├── doc.go │ │ ├── lint.go │ │ ├── rules.go │ │ └── structtag.go │ │ ├── stylecheck │ │ ├── analysis.go │ │ ├── doc.go │ │ ├── lint.go │ │ └── names.go │ │ ├── unused │ │ ├── edge.go │ │ ├── edgekind_string.go │ │ ├── implements.go │ │ └── unused.go │ │ └── version │ │ ├── buildinfo.go │ │ ├── buildinfo111.go │ │ └── version.go └── modules.txt └── website ├── .gitignore ├── README.md ├── babel.config.js ├── blog └── 2019-05-30-sample.md ├── docs ├── devops.mdx ├── flows-conditions.md ├── flows-error-handling.md ├── flows-proxy-forward.md ├── flows-references.mdx ├── flows-requests.md ├── flows-rollbacks.md ├── flows.mdx ├── functions.md ├── installation-cli.md ├── installation-contributing.md ├── installation-docker.md ├── installation-source.md ├── installation.mdx └── service_discovery-configuration.md ├── docusaurus.config.js ├── package-lock.json ├── package.json ├── scripts └── release.sh ├── sidebars.js ├── src ├── css │ └── custom.css └── pages │ ├── index.js │ └── styles.module.css ├── static ├── .nojekyll └── img │ ├── favicon.ico │ ├── logo.svg │ ├── undraw_Outer_space_drqu.svg │ ├── undraw_code_typing_7jnv.svg │ └── undraw_connected_world_wuay.svg └── yarn.lock /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Please include as much as possible information to reproduce the issue: 15 | - Semaphore version (`semaphore --version`) 16 | - Sample configurations and/or flow(s) 17 | - Request(s) (ex: `HTTP`, `GraphQL`) to reproduce the issue 18 | - Debug logs 19 | 20 | **Expected behaviour** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Additional context** 24 | Add any other context about the problem here. 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yaml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Community Support 4 | url: http://chat.jexia.com/ 5 | about: Please ask and answer questions here. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/bench.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: [pull_request] 3 | jobs: 4 | 5 | build: 6 | name: Benchmarks 7 | runs-on: ubuntu-latest 8 | steps: 9 | 10 | - name: Set up Go 1.14 11 | uses: actions/setup-go@v1 12 | with: 13 | go-version: 1.14 14 | id: go 15 | 16 | - name: Check out code into the Go module directory 17 | uses: actions/checkout@v2 18 | 19 | - uses: actions/cache@v1 20 | with: 21 | path: ~/go/pkg/mod 22 | key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} 23 | restore-keys: | 24 | ${{ runner.os }}-go- 25 | 26 | - name: Test 27 | run: go test -mod vendor -benchmem -run=^$ -bench=. ./... 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # Test binary, built with `go test -c` 9 | *.test 10 | 11 | # Output of the go coverage tool, specifically when used with LiteIDE 12 | *.out 13 | 14 | # Dependency directories (remove the comment below to include it) 15 | # vendor/ 16 | 17 | # IDE & Editors 18 | .vscode 19 | /.idea 20 | 21 | bin/ 22 | tmp/ 23 | 24 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.14 AS build 2 | 3 | ARG version=unknown 4 | ARG build=unknown 5 | ARG label=unknown 6 | 7 | WORKDIR /app 8 | 9 | COPY . . 10 | RUN CGO_ENABLED=0 GOOS=linux go build -mod vendor -o /usr/local/bin/semaphore -ldflags "-X main.version=${version} -X main.build=${build} -X main.label=${label}" ./cmd/semaphore 11 | 12 | FROM alpine 13 | COPY --from=build /usr/local/bin/semaphore /bin/semaphore 14 | 15 | RUN mkdir -p /etc/semaphore/ 16 | WORKDIR /etc/semaphore 17 | 18 | ENTRYPOINT ["/bin/semaphore", "daemon"] -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | PROTODIR = api 2 | 3 | default: dev 4 | 5 | dev: 6 | sh ./scripts/build.sh 7 | 8 | bootstrap: 9 | go install -mod mod google.golang.org/grpc/cmd/protoc-gen-go-grpc 10 | go install -mod mod google.golang.org/protobuf/cmd/protoc-gen-go 11 | go mod tidy 12 | @echo "Do not forget to install protoc C++ libraries manually" 13 | 14 | proto-build: $(PROTODIR)/annotations.pb.go 15 | 16 | test: 17 | go vet ./... 18 | go test -mod vendor -cover -race ./... 19 | 20 | bench: 21 | go test -mod vendor -benchmem -run=^$ -bench=. ./... 22 | 23 | %.pb.go: %.proto 24 | protoc --proto_path=. --proto_path=$(PROTODIR) --go_out=paths=source_relative:. $^ 25 | -------------------------------------------------------------------------------- /api/annotations.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package semaphore.api; 4 | 5 | import "google/protobuf/descriptor.proto"; 6 | 7 | option go_package = "github.com/jexia/semaphore/api;api"; 8 | 9 | extend google.protobuf.ServiceOptions { 10 | Service service = 50012; 11 | } 12 | 13 | message Service { 14 | string package = 1; 15 | string name = 2; 16 | string host = 3; 17 | string transport = 4; 18 | string codec = 5; 19 | string request_codec = 6; 20 | string response_codec = 7; 21 | } 22 | 23 | extend google.protobuf.MethodOptions { 24 | HTTP http = 50011; 25 | } 26 | 27 | message HTTP { 28 | string endpoint = 1; 29 | string method = 2; 30 | } -------------------------------------------------------------------------------- /cmd/semaphore/daemon/config/functions.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | import ( 4 | "github.com/jexia/semaphore/v2/pkg/functions" 5 | "github.com/jexia/semaphore/v2/pkg/functions/lib/sprintf" 6 | "github.com/jexia/semaphore/v2/pkg/functions/lib/strconcat" 7 | ) 8 | 9 | // DefaultFunctions represents the default functions collection 10 | var DefaultFunctions = functions.Custom{ 11 | "sprintf": sprintf.Function, 12 | "strconcat": strconcat.Function, 13 | } 14 | -------------------------------------------------------------------------------- /cmd/semaphore/generate/generate.go: -------------------------------------------------------------------------------- 1 | package generate 2 | 3 | import ( 4 | "github.com/jexia/semaphore/v2/cmd/semaphore/generate/graphql" 5 | "github.com/jexia/semaphore/v2/cmd/semaphore/generate/openapi3" 6 | "github.com/jexia/semaphore/v2/cmd/semaphore/generate/protobuf" 7 | 8 | "github.com/spf13/cobra" 9 | ) 10 | 11 | // Command represents the semaphore daemon command 12 | var Command = &cobra.Command{ 13 | Use: "generate", 14 | Short: "Generates schemas out of the given flow and schema configurations", 15 | SilenceUsage: true, 16 | } 17 | 18 | func init() { 19 | Command.AddCommand(openapi3.Command) 20 | Command.AddCommand(protobuf.Command) 21 | Command.AddCommand(graphql.Command) 22 | } 23 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | require_ci_to_pass: yes 3 | 4 | coverage: 5 | precision: 2 6 | round: down 7 | range: "70...100" 8 | status: 9 | project: off 10 | patch: off 11 | 12 | parsers: 13 | gcov: 14 | branch_detection: 15 | conditional: yes 16 | loop: yes 17 | method: no 18 | macro: no 19 | 20 | comment: 21 | layout: "reach,diff,flags,tree" 22 | behavior: default 23 | require_changes: no -------------------------------------------------------------------------------- /examples/consul/README.md: -------------------------------------------------------------------------------- 1 | # Consul 2 | 3 | This example holds a simple Semaphore HTTP implementation with a service reslved by Consul service discovery 4 | 5 | ## Getting started 6 | 7 | To run this example you need to have Go 1.13> installed on your machine. 8 | 9 | Prepare the environment: 10 | 11 | 1. Run consul using configuration `/awesome-dogs/consul.d` 12 | 2. Run awesome-dogs service: `go run ./awesome-dogs/main.go` 13 | 3. Run semaphore `semaphore daemon` 14 | 15 | Now, you can execute the `ListAwesomeDogs` flow by executing a `GET` request on port `8080`. 16 | 17 | ```bash 18 | $ curl 127.0.0.1:8080 19 | ``` -------------------------------------------------------------------------------- /examples/consul/awesome-dogs/consul.d/awesome-dogs.hcl: -------------------------------------------------------------------------------- 1 | services { 2 | name = "awesome-dogs" 3 | tags = ["web", "dogs"] 4 | port = 3333 5 | checks = [ 6 | { 7 | id = "api" 8 | name = "HTTP API on port 3333" 9 | http = "http://localhost:3333/check" 10 | method = "get" 11 | interval = "5s" 12 | timeout = "1s" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /examples/consul/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "ListAwesomeDogs" "http" { 2 | endpoint = "/" 3 | method = "GET" 4 | codec = "json" 5 | } 6 | 7 | flow "ListAwesomeDogs" { 8 | resource "list" { 9 | request "com.semaphore.awesome-dogs" "List" {} 10 | } 11 | 12 | output "com.semaphore.Dogs" { 13 | dogs = "{{ list:dogs }}" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /examples/consul/schemas/dogs.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.semaphore; 4 | 5 | message Dog { 6 | int32 id = 1; 7 | string name = 2; 8 | string breed = 3; 9 | } 10 | 11 | message Dogs { 12 | repeated Dog dogs = 1; 13 | } 14 | 15 | message Pets { 16 | string type = 1; 17 | string name = 2; 18 | } 19 | 20 | message Void {} -------------------------------------------------------------------------------- /examples/custom-functions/README.md: -------------------------------------------------------------------------------- 1 | # Functions 2 | 3 | This example uses the functions and HTTP implementations to call the API endpoints at [jsonplaceholder.typicode.com](https://jsonplaceholder.typicode.com/). 4 | 5 | # Getting started 6 | 7 | You could get started by executing the `main.go` file. 8 | 9 | ```bash 10 | $ go run main.go 11 | ``` 12 | 13 | Once Semaphore is up and running you could execute the `todo` flow by calling the service on port `8080`. 14 | 15 | ```bash 16 | $ curl 127.0.0.1:8080/ -H 'Authorization: super-secret' 17 | ``` -------------------------------------------------------------------------------- /examples/custom-functions/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/error-handling/README.md: -------------------------------------------------------------------------------- 1 | # Error handling 2 | 3 | This example holds a simple Semaphore error handling implementation. 4 | 5 | ## Getting started 6 | 7 | To run this example you need to have the Semaphore daemon installed on your machine. 8 | First start the service by simply starting the Semaphore daemon. 9 | 10 | ```bash 11 | $ semaphore daemon 12 | ``` 13 | 14 | You could execute one of the flows by sending a `GET` request on port `8080`. 15 | 16 | ```bash 17 | $ curl 127.0.0.1:8080/ # global error 18 | $ curl 127.0.0.1:8080/flow # flow error 19 | $ curl 127.0.0.1:8080/flow/node # node error 20 | ``` -------------------------------------------------------------------------------- /examples/error-handling/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["./proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | http { 7 | address = ":8080" 8 | } 9 | 10 | graphql { 11 | address = ":9090" 12 | } 13 | 14 | grpc { 15 | address = ":50051" 16 | } 17 | -------------------------------------------------------------------------------- /examples/error-handling/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/error-handling/proto/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "api/annotations.proto"; 4 | 5 | package proto; 6 | 7 | service Service { 8 | option (semaphore.api.service) = { 9 | host: "https://jsonplaceholder.typicode.com/" 10 | transport: "http" 11 | codec: "json" 12 | }; 13 | 14 | rpc ThrowError(Empty) returns (Empty) { 15 | option (semaphore.api.http) = { 16 | endpoint: "/404" 17 | method: "GET" 18 | }; 19 | }; 20 | } 21 | 22 | message Empty { 23 | } 24 | 25 | message Error { 26 | string message = 1; 27 | int64 status = 2; 28 | } 29 | -------------------------------------------------------------------------------- /examples/functions/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | 3 | protobuffers = ["./proto/*.proto"] 4 | 5 | include = ["flow.hcl"] 6 | 7 | http { 8 | address = ":8080" 9 | } 10 | 11 | services {} 12 | -------------------------------------------------------------------------------- /examples/functions/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/functions/proto/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "api/annotations.proto"; 4 | 5 | package com.semaphore; 6 | 7 | message GreetRequest { 8 | string name = 1; 9 | string subject = 2; 10 | } 11 | 12 | message AgeRequest { 13 | string name = 1; 14 | int32 age = 2; 15 | } 16 | 17 | message MsgRequest { 18 | string name = 1; 19 | Info info = 2; 20 | 21 | message Info { 22 | string sex = 1; 23 | int32 age = 2; 24 | bool married = 3; 25 | repeated int32 numbers = 4; 26 | } 27 | } 28 | 29 | message GenericResponse { 30 | string message = 1; 31 | } 32 | -------------------------------------------------------------------------------- /examples/graphql/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jxapp/semaphore:latest 2 | 3 | WORKDIR /app 4 | 5 | ENV LOG_LEVEL=debug 6 | 7 | COPY *.hcl ./ 8 | COPY proto/ ./proto/ 9 | COPY annotations/ ./annotations/ 10 | 11 | ENTRYPOINT ["semaphore", "daemon", "-f", "config.hcl"] -------------------------------------------------------------------------------- /examples/graphql/README.md: -------------------------------------------------------------------------------- 1 | # GraphQL 2 | 3 | This example uses the GraphQL and HTTP implementations to call the API endpoints at [jsonplaceholder.typicode.com](https://jsonplaceholder.typicode.com/). 4 | 5 | # Getting started 6 | 7 | You could get started by executing the Semaphore CLI. 8 | 9 | ```bash 10 | $ semaphore daemon -f config.hcl 11 | ``` 12 | 13 | Once Semaphore is up and running you could execute the `todo` flow by calling the service on port `8080`. 14 | 15 | ```bash 16 | $ curl 127.0.0.1:8080/ -d '{"query": "{latest{id}todo(id:\"2\"){title}}"}' 17 | ``` -------------------------------------------------------------------------------- /examples/graphql/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["./proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | graphql { 7 | address = ":8080" 8 | } 9 | 10 | services { 11 | select "com.semaphore.*" { 12 | host = "https://jsonplaceholder.typicode.com/" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/graphql/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/grpc/Makefile: -------------------------------------------------------------------------------- 1 | PROTODIR = proto 2 | 3 | install-dev: 4 | go install google.golang.org/grpc/cmd/protoc-gen-go-grpc 5 | go install google.golang.org/protobuf/cmd/protoc-gen-go 6 | @echo "Do not forget to install protoc C++ libraries manually" 7 | 8 | proto-build: $(PROTODIR)/greeter.pb.go 9 | 10 | %.pb.go: %.proto 11 | protoc --proto_path=. --proto_path=$(PROTODIR) --go-grpc_out=paths=source_relative:. --go_out=paths=source_relative:. $^ -------------------------------------------------------------------------------- /examples/grpc/gateway/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["../proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | grpc { 7 | address = ":50051" 8 | } 9 | 10 | http { 11 | address = ":8080" 12 | } 13 | -------------------------------------------------------------------------------- /examples/grpc/gateway/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "greeter" "http" { 2 | endpoint = "/" 3 | method = "POST" 4 | codec = "json" 5 | } 6 | 7 | endpoint "greeter" "grpc" { 8 | package = "semaphore.greeter" 9 | service = "Say" 10 | method = "Hello" 11 | } 12 | 13 | flow "greeter" { 14 | input "semaphore.greeter.Request" {} 15 | 16 | resource "user" { 17 | request "semaphore.greeter.Say" "Hello" { 18 | name = "{{ input:name }}" 19 | } 20 | } 21 | 22 | output "semaphore.greeter.Response" { 23 | msg = "{{ user:msg }}" 24 | meta = "{{ user:meta }}" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /examples/grpc/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/grpc/proto/greeter.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package semaphore.greeter; 4 | 5 | import "api/annotations.proto"; 6 | 7 | option go_package = "github.com/jexia/semaphore/examples/grpc/proto"; 8 | 9 | service Say { 10 | option (semaphore.api.service) = { 11 | host: "127.0.0.1:5050" 12 | transport: "grpc" 13 | codec: "proto" 14 | }; 15 | 16 | rpc Hello(Request) returns (Response) {} 17 | } 18 | 19 | message Request { 20 | string name = 1; 21 | } 22 | 23 | message Response { 24 | string msg = 1; 25 | Meta meta = 2; 26 | } 27 | 28 | message Meta { 29 | int64 session = 1; 30 | } 31 | -------------------------------------------------------------------------------- /examples/http/README.md: -------------------------------------------------------------------------------- 1 | # HTTP 2 | 3 | This example holds a simple Semaphore HTTP implementation and shows the usage of the Semaphore Go API. 4 | 5 | ## Getting started 6 | 7 | To run this example you need to have Go 1.13> installed on your machine. 8 | First start the service by simply executing the files inside the service directory. 9 | 10 | ```bash 11 | $ semaphore daemon 12 | ``` 13 | 14 | You could execute the `FetchLatestProject` flow by executing a `GET` request on port `8080`. 15 | 16 | ```bash 17 | $ curl 127.0.0.1:8080 18 | ``` -------------------------------------------------------------------------------- /examples/http/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["./proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | http { 7 | address = ":8080" 8 | } 9 | 10 | services { 11 | select "com.semaphore.*" { 12 | host = "https://jsonplaceholder.typicode.com/" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/http/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "FetchLatestProject" "http" { 2 | endpoint = "/" 3 | method = "GET" 4 | codec = "json" 5 | } 6 | 7 | flow "FetchLatestProject" { 8 | input "com.semaphore.Query" { 9 | header = ["Authorization", "Timestamp"] 10 | } 11 | 12 | resource "query" { 13 | request "com.semaphore.Todo" "Get" {} 14 | } 15 | 16 | resource "user" { 17 | request "com.semaphore.Users" "Get" {} 18 | } 19 | 20 | output "com.semaphore.Item" { 21 | header { 22 | Username = "{{ user:username }}" 23 | } 24 | 25 | id = "{{ query:id }}" 26 | title = "{{ query:title }}" 27 | completed = "{{ query:completed }}" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /examples/http/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/http/proto/service.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "api/annotations.proto"; 4 | 5 | package com.semaphore; 6 | 7 | service Todo { 8 | option (semaphore.api.service) = { 9 | transport: "http" 10 | codec: "json" 11 | }; 12 | 13 | rpc Get(Query) returns (Item) { 14 | option (semaphore.api.http) = { 15 | endpoint: "/todos/1" 16 | method: "GET" 17 | }; 18 | }; 19 | } 20 | 21 | message Query { 22 | } 23 | 24 | message Item { 25 | int32 userId = 1; 26 | int32 id = 2; 27 | string title = 3; 28 | bool completed = 4; 29 | } 30 | -------------------------------------------------------------------------------- /examples/http/proto/users.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "api/annotations.proto"; 4 | 5 | package com.semaphore; 6 | 7 | service Users { 8 | option (semaphore.api.service) = { 9 | transport: "http" 10 | codec: "json" 11 | }; 12 | 13 | rpc Get(Query) returns (User) { 14 | option (semaphore.api.http) = { 15 | endpoint: "/users/1" 16 | method: "GET" 17 | }; 18 | }; 19 | } 20 | 21 | message Query { 22 | } 23 | 24 | message User { 25 | int32 id = 1; 26 | string name = 2; 27 | string username = 3; 28 | string email = 4; 29 | } -------------------------------------------------------------------------------- /examples/multiple-gateways/gateway/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["../proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | http { 7 | address = ":8080" 8 | } 9 | -------------------------------------------------------------------------------- /examples/multiple-gateways/gateway/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "gateway" "http" { 2 | endpoint = "/v1/*endpoint" 3 | method = "GET" 4 | } 5 | 6 | proxy "gateway" { 7 | resource "query" { 8 | request "com.semaphore.Users" "ValidateUser" { 9 | } 10 | } 11 | 12 | forward "com.semaphore.Hub" { 13 | header { 14 | User = "{{ query:name }}" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /examples/multiple-gateways/hub/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "$LOG_LEVEL" 2 | protobuffers = ["../proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | http { 7 | address = ":9090" 8 | } 9 | -------------------------------------------------------------------------------- /examples/multiple-gateways/hub/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "user" "http" { 2 | endpoint = "/v1/user" 3 | method = "GET" 4 | codec = "json" 5 | } 6 | 7 | flow "user" { 8 | resource "query" { 9 | request "com.semaphore.Users" "GetUser" { 10 | } 11 | } 12 | 13 | output "com.semaphore.User" { 14 | id = "{{ query:id }}" 15 | name = "{{ query:name }}" 16 | username = "{{ query:username }}" 17 | } 18 | } -------------------------------------------------------------------------------- /examples/multiple-gateways/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /examples/multiple-gateways/proto/hub.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.semaphore; 4 | 5 | import "api/annotations.proto"; 6 | 7 | service Hub { 8 | option (semaphore.api.service) = { 9 | host: "http://localhost:9090" 10 | transport: "http" 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /examples/worldbank/config.hcl: -------------------------------------------------------------------------------- 1 | log_level = "DEBUG" 2 | protobuffers = ["./proto/*.proto"] 3 | 4 | include = ["flow.hcl"] 5 | 6 | http { 7 | address = ":8080" 8 | } 9 | 10 | services { 11 | select "com.semaphore.*" { 12 | host = "http://api.worldbank.org/" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /examples/worldbank/flow.hcl: -------------------------------------------------------------------------------- 1 | endpoint "FetchCountry" "http" { 2 | endpoint = "/" 3 | method = "GET" 4 | codec = "json" 5 | } 6 | 7 | flow "FetchCountry" { 8 | resource "query" { 9 | request "com.semaphore.WorldBank" "GetCountries" {} 10 | } 11 | 12 | output "com.semaphore.CountriesResponse" { 13 | countries = "{{ query:country }}" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /examples/worldbank/proto/api: -------------------------------------------------------------------------------- 1 | ../../../api -------------------------------------------------------------------------------- /pkg/broker/endpoints/errors.go: -------------------------------------------------------------------------------- 1 | package endpoints 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/jexia/semaphore/v2/pkg/prettyerr" 7 | ) 8 | 9 | // ErrUnknownService occurs when there is no defined service for the requested method 10 | type ErrUnknownService struct { 11 | Service string 12 | } 13 | 14 | // Prettify returns the prettified version of the given error 15 | func (e ErrUnknownService) Prettify() prettyerr.Error { 16 | return prettyerr.Error{ 17 | Original: nil, 18 | Message: e.Error(), 19 | Details: map[string]interface{}{ 20 | "service": e.Service, 21 | }, 22 | } 23 | } 24 | 25 | func (e ErrUnknownService) Error() string { 26 | return fmt.Sprintf("unknown service '%s'", e.Service) 27 | } 28 | -------------------------------------------------------------------------------- /pkg/broker/listeners/errors.go: -------------------------------------------------------------------------------- 1 | package listeners 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/jexia/semaphore/v2/pkg/prettyerr" 7 | ) 8 | 9 | // ErrNoListener is thrown when no listener has been found 10 | type ErrNoListener struct { 11 | Listener string 12 | } 13 | 14 | func (e ErrNoListener) Error() string { 15 | return fmt.Sprintf("unknown listener '%s'", e.Listener) 16 | } 17 | 18 | // Prettify returns the prettified version of the given error 19 | func (e ErrNoListener) Prettify() prettyerr.Error { 20 | return prettyerr.Error{ 21 | Message: e.Error(), 22 | Details: map[string]interface{}{"listener": e.Listener}, 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /pkg/codec/json/errors.go: -------------------------------------------------------------------------------- 1 | package json 2 | 3 | import "github.com/jexia/semaphore/v2/pkg/prettyerr" 4 | 5 | // ErrUndefinedSpecs occurs when spacs are nil 6 | type ErrUndefinedSpecs struct{} 7 | 8 | // Error returns a description of the given error as a string 9 | func (e ErrUndefinedSpecs) Error() string { 10 | return "no object specs defined" 11 | } 12 | 13 | // Prettify returns the prettified version of the given error 14 | func (e ErrUndefinedSpecs) Prettify() prettyerr.Error { 15 | return prettyerr.Error{ 16 | Code: "UndefinedSpecs", 17 | Message: e.Error(), 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/codec/json/tests/complete.hcl: -------------------------------------------------------------------------------- 1 | flow "complete" { 2 | input "com.complete.input" {} 3 | 4 | resource "first" { 5 | request "mock" "complete" { 6 | message = "{{ input:message }}" 7 | 8 | message "nested" { 9 | value = "{{ input:nested.value }}" 10 | } 11 | 12 | repeated "repeating" "input:repeating" { 13 | value = "{{input:repeating.value}}" 14 | } 15 | 16 | repeating_values = "{{ input:repeating_values }}" 17 | enum = "{{ input:enum }}" 18 | repeating_enum = "{{ input:repeating_enum }}" 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /pkg/codec/proto/method.go: -------------------------------------------------------------------------------- 1 | package proto 2 | 3 | import "github.com/jexia/semaphore/v2/pkg/specs" 4 | 5 | // Method represents a service mthod. 6 | type Method interface { 7 | GetName() string 8 | GetRequest() specs.Message 9 | GetResponse() specs.Message 10 | } 11 | 12 | // Methods represents a collection of methods. 13 | type Methods map[string]Method 14 | -------------------------------------------------------------------------------- /pkg/codec/proto/tests/README.md: -------------------------------------------------------------------------------- 1 | # Tests 2 | 3 | > 🚧 The definitions inside the directory are used for unit testing purposes -------------------------------------------------------------------------------- /pkg/codec/proto/tests/complete.hcl: -------------------------------------------------------------------------------- 1 | flow "complete" { 2 | input "proto.Message" {} 3 | 4 | resource "first" { 5 | request "proto.test" "complete" { 6 | message = "{{ input:message }}" 7 | 8 | message "nested" { 9 | value = "{{ input:nested.value }}" 10 | } 11 | 12 | repeated "repeating" "input:repeating" { 13 | value = "{{input:repeating.value}}" 14 | } 15 | 16 | repeating_values = "{{ input:repeating_values }}" 17 | status = "{{ input:status }}" 18 | repeating_status = "{{ input:repeating_status }}" 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /pkg/codec/proto/tests/complete.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package proto; 4 | 5 | service test { 6 | rpc complete(Message) returns (Empty); 7 | } 8 | 9 | enum MessageStatus { 10 | UNKNOWN = 0; 11 | PENDING = 1; 12 | } 13 | 14 | message Message { 15 | message Repeated { 16 | string value = 1; 17 | } 18 | 19 | message Nested { 20 | string value = 1; 21 | } 22 | 23 | string message = 1; 24 | repeated Repeated repeating = 2; 25 | Nested nested = 3; 26 | repeated string repeating_values = 4; 27 | MessageStatus status = 5; 28 | repeated MessageStatus repeating_status = 6; 29 | } 30 | 31 | message Empty { 32 | } -------------------------------------------------------------------------------- /pkg/dependencies/errors.go: -------------------------------------------------------------------------------- 1 | package dependencies 2 | 3 | import "fmt" 4 | 5 | // ErrCircularDependency is returned when circular dependency is detected. 6 | type ErrCircularDependency struct { 7 | Flow, From, To string 8 | } 9 | 10 | func (e ErrCircularDependency) Error() string { 11 | return fmt.Sprintf("circular resource dependency detected: %s.%s <-> %s.%s", e.Flow, e.From, e.Flow, e.To) 12 | } 13 | -------------------------------------------------------------------------------- /pkg/dependencies/errors_test.go: -------------------------------------------------------------------------------- 1 | package dependencies 2 | 3 | import "testing" 4 | 5 | func TestErrCircularDependency(t *testing.T) { 6 | var ( 7 | expected = "circular resource dependency detected: flow.a <-> flow.b" 8 | 9 | err = ErrCircularDependency{ 10 | Flow: "flow", 11 | From: "a", 12 | To: "b", 13 | } 14 | ) 15 | 16 | if actual := err.Error(); actual != expected { 17 | t.Errorf("error message %q was expected to be %q", actual, expected) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/discovery/README.md: -------------------------------------------------------------------------------- 1 | # Discovery 2 | 3 | Handles the service discovery clients implementations. 4 | 5 | ## Available Clients 6 | 7 | - Consul by HashiCorp (https://www.consul.io/) 8 | 9 | ## Consul by HashiCorp 10 | 11 | The `discovery/consul` package implements Consul client adapter using a native Go package (see [the docs](https://www.consul.io/docs/connect/native/go) for details). 12 | 13 | 14 | -------------------------------------------------------------------------------- /pkg/discovery/plain_resolver.go: -------------------------------------------------------------------------------- 1 | package discovery 2 | 3 | // PlainResolver returns the given hostname as it is. 4 | // It might be useful to resolve services using the default DNS lookup mechanism. 5 | type PlainResolver struct { 6 | address string 7 | } 8 | 9 | func (d PlainResolver) Resolve() (string, bool) { 10 | return d.address, true 11 | } 12 | 13 | func NewPlainResolver(address string) PlainResolver { 14 | return PlainResolver{address} 15 | } 16 | -------------------------------------------------------------------------------- /pkg/discovery/types.go: -------------------------------------------------------------------------------- 1 | package discovery 2 | 3 | // Service represents all the information about a discovered service. 4 | type Service struct { 5 | Host string 6 | Port int 7 | Name string 8 | ID string 9 | Scheme string 10 | } 11 | 12 | // Updates is used to retrieve discovered services. 13 | type Updates chan []Service 14 | 15 | // Resolver returns a resolved hostname 16 | type Resolver interface { 17 | // Resolve the current hostname. 18 | // Returns the address and `true` in case if the service has been resolved. 19 | Resolve() (address string, ok bool) 20 | } 21 | 22 | type ResolverFunc func() (string, bool) 23 | 24 | func (fn ResolverFunc) Resolve() (string, bool) { 25 | return fn() 26 | } 27 | -------------------------------------------------------------------------------- /pkg/flow/tracker_test.go: -------------------------------------------------------------------------------- 1 | package flow 2 | 3 | import "testing" 4 | 5 | func TestTrackerMark(t *testing.T) { 6 | tracker := NewTracker("", 1) 7 | node := NewMockNode("first", nil, nil) 8 | 9 | if tracker.Met(node) { 10 | t.Errorf("unexpected result, tracker met node before marked") 11 | } 12 | 13 | tracker.Mark(node) 14 | 15 | if !tracker.Met(node) { 16 | t.Errorf("unexpected result, tracker did not met node after marked") 17 | } 18 | } 19 | 20 | func TestTrackerName(t *testing.T) { 21 | expected := "MockFlow" 22 | tracker := NewTracker(expected, 1) 23 | 24 | flow := tracker.Flow() 25 | if flow != expected { 26 | t.Fatalf("unexpected flow name %s, expected %s", flow, expected) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /pkg/generators/openapi3/options.go: -------------------------------------------------------------------------------- 1 | package openapi3 2 | 3 | // Options represent the available OpenAPI3 provider options 4 | type Options int8 5 | 6 | // Has checks whether the given key is available inside the options collection 7 | func (options Options) Has(key Options) bool { 8 | return options&key != 0 9 | } 10 | 11 | const ( 12 | // IncludeNotReferenced includes not referenced properties into the OpenAPI3 specification 13 | IncludeNotReferenced Options = 1 << iota 14 | ) 15 | 16 | // DefaultOption represents the set of default options 17 | const DefaultOption Options = 0 18 | -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/__.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package com.semaphore; 4 | 5 | message Query { 6 | } 7 | 8 | message Unauthorized { 9 | string message = 1; 10 | int64 status = 2; 11 | } 12 | 13 | message Item { 14 | int32 userId = 1; 15 | int32 id = 2; 16 | string title = 3; 17 | bool completed = 4; 18 | } 19 | 20 | enum Status { 21 | UNAVAILABLE = 0; 22 | AVAILABLE = 1; 23 | } 24 | 25 | message User { 26 | int32 id = 1; 27 | string name = 2; 28 | string username = 3; 29 | string email = 4; 30 | Status status = 5; 31 | repeated string interests = 6; 32 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/flow-no-input.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "http" { 4 | endpoint = "/user" 5 | method = "post" 6 | } 7 | 8 | flow "CreateUser" { 9 | output "com.semaphore.User" {} 10 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/flow-no-output.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "http" { 4 | endpoint = "/user" 5 | method = "post" 6 | } 7 | 8 | flow "CreateUser" { 9 | input "com.semaphore.User" {} 10 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/grpc.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "grpc" { 4 | service = "users" 5 | method = "create" 6 | } 7 | 8 | flow "CreateUser" { 9 | input "com.semaphore.User" {} 10 | 11 | output "com.semaphore.User" {} 12 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/headers.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "http" { 4 | endpoint = "/user" 5 | method = "post" 6 | } 7 | 8 | flow "CreateUser" { 9 | input "com.semaphore.User" { 10 | header = ["Authorization", "X-IP"] 11 | } 12 | 13 | output "com.semaphore.User" {} 14 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/no_ref/grpc.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: "" 4 | version: "" 5 | -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/params.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "http" { 4 | endpoint = "/user/:id" 5 | method = "post" 6 | } 7 | 8 | flow "CreateUser" { 9 | input "com.semaphore.User" {} 10 | 11 | output "com.semaphore.User" {} 12 | } -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/ref/flow-no-output.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: "" 4 | version: "" 5 | paths: 6 | /user: 7 | post: 8 | requestBody: 9 | content: 10 | application/json: 11 | schema: 12 | $ref: "#/components/schemas/CreateUserInput" 13 | required: false 14 | components: 15 | schemas: 16 | CreateUserInput: {} 17 | -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/ref/grpc.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: "" 4 | version: "" 5 | -------------------------------------------------------------------------------- /pkg/generators/openapi3/tests/simple.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["./*.proto"] 2 | 3 | endpoint "CreateUser" "http" { 4 | endpoint = "/user" 5 | method = "post" 6 | } 7 | 8 | flow "CreateUser" { 9 | input "com.semaphore.User" {} 10 | 11 | output "com.semaphore.User" {} 12 | } -------------------------------------------------------------------------------- /pkg/providers/hcl/expression.go: -------------------------------------------------------------------------------- 1 | package hcl 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/hashicorp/hcl/v2" 7 | ) 8 | 9 | // Expression is a wrapper over hcl.Expression providing extra functionality. 10 | type Expression struct{ hcl.Expression } 11 | 12 | // Position returns the position for tracer. 13 | func (expr Expression) Position() string { 14 | return fmt.Sprintf("%s:%d", expr.Range().Filename, expr.Range().Start.Line) 15 | } 16 | -------------------------------------------------------------------------------- /pkg/providers/hcl/expression_test.go: -------------------------------------------------------------------------------- 1 | package hcl 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/hashicorp/hcl/v2" 7 | "github.com/zclconf/go-cty/cty" 8 | ) 9 | 10 | func TestExpressionPosition(t *testing.T) { 11 | t.Run("get position", func(t *testing.T) { 12 | var ( 13 | expected = "file:10" 14 | 15 | expression = Expression{ 16 | hcl.StaticExpr( 17 | cty.StringVal("prop"), 18 | hcl.Range{ 19 | Filename: "file", 20 | Start: hcl.Pos{ 21 | Line: 10, 22 | }, 23 | }, 24 | ), 25 | } 26 | ) 27 | 28 | if actual := expression.Position(); actual != expected { 29 | t.Errorf("unexpected position %q should be %q", actual, expected) 30 | } 31 | }) 32 | } 33 | -------------------------------------------------------------------------------- /pkg/providers/hcl/options.go: -------------------------------------------------------------------------------- 1 | package hcl 2 | 3 | // Options represents the available options that could be defined inside a HCL definition 4 | type Options struct { 5 | LogLevel string 6 | Includes []string 7 | Protobuffers []string 8 | Avro []string 9 | Openapi3 []string 10 | GraphQL *GraphQL 11 | HTTP *HTTP 12 | GRPC *GRPC 13 | Prometheus *Prometheus 14 | Discovery *Discovery 15 | } 16 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/basic.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | input "object" {} 3 | 4 | output "object" { 5 | message = "{{ input:message }}" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/before.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "mock" { 2 | before { 3 | resource "check" { 4 | request "com.semaphore" "Fetch" { 5 | key = "value" 6 | } 7 | } 8 | 9 | resources { 10 | sample = "key" 11 | } 12 | } 13 | } 14 | 15 | proxy "mock" { 16 | before { 17 | resource "check" { 18 | request "com.semaphore" "Fetch" { 19 | key = "value" 20 | } 21 | } 22 | 23 | resources { 24 | sample = "key" 25 | } 26 | } 27 | 28 | forward "" {} 29 | } 30 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/calls.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource {} 3 | 4 | resource {} 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/calls.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource "set" {} 3 | 4 | resource "get" {} 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/discovery.pass.hcl: -------------------------------------------------------------------------------- 1 | discovery "consul" { 2 | address = "http://localhost:8500" 3 | } 4 | 5 | discovery "foobar" { 6 | provider = "consul" 7 | address = "http://localhost:8500" 8 | } -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/endpoints.fail.hcl: -------------------------------------------------------------------------------- 1 | endpoint {} 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/endpoints.pass.hcl: -------------------------------------------------------------------------------- 1 | endpoint "echo" "http" { 2 | random = "value" 3 | } 4 | 5 | endpoint "ping" "http" { 6 | message "random" { 7 | value = "message" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flow_condition.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "condition" { 2 | resource "first" {} 3 | 4 | if "{{ first:id }} == {{ first:name }}" { 5 | if "condition" { 6 | resource "" {} 7 | } 8 | 9 | resources { 10 | sample = "" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flow_error.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "" { 2 | error "proto.Error" { 3 | message = "{{ error:message }}" 4 | status = "{{ error:status }}" 5 | 6 | message "nested" { 7 | message "nested" {} 8 | repeated "" "" {} 9 | } 10 | 11 | repeated "" "" { 12 | message "nested" {} 13 | repeated "" "" {} 14 | } 15 | } 16 | 17 | on_error { 18 | schema = "com.Schema" 19 | status = 401 20 | message = "flow error message" 21 | 22 | params { 23 | prop = "" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flow_node_error.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "" { 2 | resource "" { 3 | error "proto.Error" { 4 | message = "{{ error:message }}" 5 | status = "{{ error:status }}" 6 | 7 | message "nested" { 8 | message "nested" {} 9 | repeated "" "" {} 10 | } 11 | 12 | repeated "" "" { 13 | message "nested" {} 14 | repeated "" "" {} 15 | } 16 | } 17 | 18 | on_error { 19 | status = 401 20 | message = "node error message" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flow_references.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "references" { 2 | resources { 3 | prop = "" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flows.fail.hcl: -------------------------------------------------------------------------------- 1 | flow {} 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/flows.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource "sample" { 3 | request "service" "method" { 4 | options { 5 | sample = "value" 6 | } 7 | } 8 | } 9 | } 10 | 11 | flow "ping" {} 12 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/global_error.pass.hcl: -------------------------------------------------------------------------------- 1 | error "proto.Error" { 2 | message = "{{ error:message }}" 3 | status = "{{ error:status }}" 4 | 5 | message "nested" { 6 | message "nested" {} 7 | repeated "" "" {} 8 | } 9 | 10 | repeated "" "" { 11 | message "nested" {} 12 | repeated "" "" {} 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/header.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource "set" { 3 | request "setter" "Set" { 4 | header { 5 | Cookie = "mnomnom" 6 | } 7 | } 8 | } 9 | 10 | resource "get" { 11 | request "getter" "Get" { 12 | header { 13 | Cookie = "mnomnom" 14 | } 15 | } 16 | } 17 | 18 | output "output" { 19 | header { 20 | Cookie = "mnomnom" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/include.fail.hcl: -------------------------------------------------------------------------------- 1 | include = ["unknown"] 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/include.hcl: -------------------------------------------------------------------------------- 1 | flow "sample" {} 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/include.pass.hcl: -------------------------------------------------------------------------------- 1 | include = ["include.hcl"] 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/input_header.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "input" { 2 | input "com.schema" { 3 | header = ["object"] 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/input_options.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "input" { 2 | input "com.schema" { 3 | options { 4 | sample = "" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/nested.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | input "object" {} 3 | 4 | resource "get" { 5 | request "getter" "Get" { 6 | message "nested" { 7 | name = "{{ input:nested.name }}" 8 | 9 | message "sub" { 10 | message = "hello world" 11 | } 12 | } 13 | } 14 | } 15 | 16 | output "object" { 17 | message "nested" { 18 | name = "" 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/object.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | input "object" {} 3 | 4 | resource "get" { 5 | request "getter" "Get" { 6 | array = [ 7 | "{{ input:id }}", 8 | "{{ input:name }}", 9 | "static", 10 | ] 11 | } 12 | } 13 | 14 | output "object" { 15 | object = { 16 | "message": "hello world", 17 | "meta": { 18 | "id": "{{ getter:output }}" 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/options.pass.hcl: -------------------------------------------------------------------------------- 1 | log_level = "debug" 2 | 3 | protobuffers = ["$PROTO_IMPORT"] 4 | openapi3 = ["$OPENAPI3_IMPORT"] 5 | 6 | grpc { 7 | address = "$GRPC" 8 | } 9 | 10 | http { 11 | address = "$HTTP" 12 | } 13 | 14 | graphql { 15 | address = "$GRAPHQL" 16 | } 17 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/protobuffers.pass.hcl: -------------------------------------------------------------------------------- 1 | protobuffers = ["sample.proto", "*.proto", "../sample.proto"] 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy.fail.hcl: -------------------------------------------------------------------------------- 1 | proxy {} 2 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | forward "uploader" {} 3 | } 4 | 5 | proxy "ping" { 6 | forward "uploader" { 7 | header { 8 | cookie = "mnomnom" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy_condition.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "condition" { 2 | if "condition" { 3 | if "condition" { 4 | resource "" {} 5 | } 6 | } 7 | 8 | forward "" {} 9 | } 10 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy_error.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "" { 2 | error "proto.Error" { 3 | message = "{{ error:message }}" 4 | status = "{{ error:status }}" 5 | 6 | message "nested" { 7 | message "nested" {} 8 | repeated "" "" {} 9 | } 10 | 11 | repeated "" "" { 12 | message "nested" {} 13 | repeated "" "" {} 14 | } 15 | } 16 | 17 | on_error { 18 | schema = "com.Schema" 19 | status = 401 20 | message = "node error message" 21 | } 22 | 23 | forward "" {} 24 | } 25 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy_input.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | input {} 3 | 4 | forward "" {} 5 | } 6 | 7 | proxy "ping" { 8 | input { 9 | header = ["Authorization"] 10 | } 11 | 12 | forward "" {} 13 | } 14 | 15 | proxy "ping" { 16 | input { 17 | options { 18 | key = "value" 19 | } 20 | } 21 | 22 | forward "" {} 23 | } 24 | 25 | proxy "ping" { 26 | input { 27 | params = "com.semaphore.Message" 28 | } 29 | 30 | forward "" {} 31 | } 32 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy_node_error.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "" { 2 | resource "" { 3 | error "proto.Error" { 4 | message = "{{ error:message }}" 5 | status = "{{ error:status }}" 6 | 7 | message "nested" { 8 | message "nested" {} 9 | repeated "" "" {} 10 | } 11 | 12 | repeated "" "" { 13 | message "nested" {} 14 | repeated "" "" {} 15 | } 16 | } 17 | 18 | on_error { 19 | status = 401 20 | message = "node error message" 21 | } 22 | } 23 | 24 | forward "" {} 25 | } 26 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/proxy_references.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "references" { 2 | resources { 3 | prop = "" 4 | } 5 | 6 | forward "" {} 7 | } 8 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/resource_parameters.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "params" { 2 | resource "" { 3 | request "" "" { 4 | params { 5 | id = "" 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/resources.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "mock" { 2 | resources { 3 | sample = "key" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/rollback.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource "get" { 3 | rollback "getter" "Remove" {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/services.fail.hcl: -------------------------------------------------------------------------------- 1 | // No resources defined 2 | service "com.semaphore" {} 3 | -------------------------------------------------------------------------------- /pkg/providers/hcl/tests/services.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "auth" { 2 | transport = "http" 3 | codec = "json" 4 | host = "https://auth.com" 5 | } 6 | 7 | service "com.semaphore" "auth" {} 8 | 9 | service "com.semaphore" "users" { 10 | transport = "http" 11 | codec = "proto" 12 | host = "https://users.com" 13 | 14 | options { 15 | sample = "value" 16 | } 17 | 18 | method "Add" { 19 | request = "proto.Request" 20 | response = "proto.Response" 21 | } 22 | 23 | method "Delete" { 24 | request = "proto.Request" 25 | response = "proto.Response" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /pkg/providers/mock/tests/basic.pass.yaml: -------------------------------------------------------------------------------- 1 | exception: 2 | file: basic 3 | line: 10 4 | message: unhandled error 5 | services: 6 | caller: 7 | methods: 8 | call: 9 | input: "com.input" 10 | properties: 11 | com.input: 12 | label: "optional" 13 | template: 14 | scalar: 15 | type: "string" 16 | default: "hello world" 17 | -------------------------------------------------------------------------------- /pkg/providers/mock/tests/combination.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | label: "optional" 8 | template: 9 | scalar: 10 | type: "string" 11 | default: "hello world" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | label: "optional" 18 | template: 19 | scalar: 20 | type: "int32" 21 | default: 42 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: com.input 27 | output: com.output 28 | -------------------------------------------------------------------------------- /pkg/providers/mock/tests/enum.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | enum: 6 | name: "STATUS" 7 | keys: 8 | "UNKNOWN": 9 | key: "UNKNOWN" 10 | position: 1 11 | description: "unknown status" 12 | "PENDING": 13 | key: "PENDING" 14 | position: 2 15 | description: "pending status" 16 | positions: 17 | 1: 18 | key: "UNKNOWN" 19 | position: 1 20 | description: "unknown status" 21 | 2: 22 | key: "PENDING" 23 | position: 2 24 | description: "pending status" 25 | -------------------------------------------------------------------------------- /pkg/providers/mock/tests/message.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | default: "hello world" 13 | 14 | output: 15 | label: "optional" 16 | template: 17 | message: 18 | "message": 19 | name: "message" 20 | label: "optional" 21 | template: 22 | scalar: 23 | type: "string" 24 | -------------------------------------------------------------------------------- /pkg/providers/mock/tests/repeated.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | repeated: 6 | - message: 7 | message: 8 | name: "message" 9 | label: "optional" 10 | template: 11 | scalar: 12 | type: "string" 13 | com.output: 14 | label: "optional" 15 | template: 16 | message: 17 | "message": 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "int32" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: com.input 27 | output: com.output 28 | -------------------------------------------------------------------------------- /pkg/providers/openapi3/fixtures/empty.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.0 2 | info: 3 | title: Title 4 | description: Title 5 | version: 1.0.0 6 | servers: 7 | - url: 'https' 8 | paths: 9 | 10 | -------------------------------------------------------------------------------- /pkg/references/tests/basic.fail.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | message = "{{ input:message }}" 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /pkg/references/tests/basic.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | message = "{{ input:message }}" 13 | } 14 | } 15 | 16 | output "com.output" { 17 | message = "{{ opening:message }}" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/references/tests/basic.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | name: "message" 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "string" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: "com.input" 27 | output: "com.output" 28 | -------------------------------------------------------------------------------- /pkg/references/tests/condition.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | if "{{ input:message }}" { 11 | resource "opening" { 12 | request "caller" "Open" { 13 | message = "{{ input:message }}" 14 | } 15 | } 16 | } 17 | 18 | output "com.output" { 19 | message = "{{ opening:message }}" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /pkg/references/tests/condition.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | name: "message" 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "string" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: "com.input" 27 | output: "com.output" 28 | -------------------------------------------------------------------------------- /pkg/references/tests/condition_resolve.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | if "{{ input.header:Unknown }}" {} 3 | } 4 | -------------------------------------------------------------------------------- /pkg/references/tests/error_flow.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | error "com.unknown" {} 3 | } 4 | -------------------------------------------------------------------------------- /pkg/references/tests/error_flow.fail.yaml: -------------------------------------------------------------------------------- 1 | exception: 2 | message: object 'com.unknown', is unavailable inside the schema collection 3 | properties: 4 | -------------------------------------------------------------------------------- /pkg/references/tests/error_flow.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | error "com.error" {} 3 | } 4 | -------------------------------------------------------------------------------- /pkg/references/tests/error_flow.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.error: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | -------------------------------------------------------------------------------- /pkg/references/tests/error_global.pass.hcl: -------------------------------------------------------------------------------- 1 | error "com.error" {} 2 | -------------------------------------------------------------------------------- /pkg/references/tests/error_global.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.error: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | -------------------------------------------------------------------------------- /pkg/references/tests/error_proxy.fail.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | error "com.unknown" {} 3 | 4 | forward "" {} 5 | } 6 | -------------------------------------------------------------------------------- /pkg/references/tests/error_proxy.fail.yaml: -------------------------------------------------------------------------------- 1 | exception: 2 | message: object 'com.unknown', is unavailable inside the schema collection 3 | properties: 4 | -------------------------------------------------------------------------------- /pkg/references/tests/error_proxy.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | error "com.error" {} 3 | 4 | forward "" {} 5 | } 6 | -------------------------------------------------------------------------------- /pkg/references/tests/error_proxy.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.error: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | label: "optional" 8 | template: 9 | scalar: 10 | type: "string" 11 | -------------------------------------------------------------------------------- /pkg/references/tests/flow_on_error_resolve.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | on_error { 3 | message = "{{ input.header:Unknown }}" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/references/tests/flow_output_resolve.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | output "com.input" { 3 | message = "{{ input.header:Unknown }}" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /pkg/references/tests/header.fail.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | header { 13 | Amount = "{{ input:amount }}" 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /pkg/references/tests/header.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" { 9 | header = ["Authorization"] 10 | } 11 | 12 | resource "opening" { 13 | request "caller" "Open" { 14 | header { 15 | Authorization = "{{ input.header:Authorization }}" 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/references/tests/header.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | name: "message" 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "string" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: "com.input" 27 | output: "com.output" 28 | -------------------------------------------------------------------------------- /pkg/references/tests/node_params.pass.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | input "com.input" {} 3 | 4 | resource "opening" { 5 | request "caller" "Open" { 6 | params { 7 | message = "{{ input:message }}" 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /pkg/references/tests/node_resolve.fail.hcl: -------------------------------------------------------------------------------- 1 | flow "echo" { 2 | resource "unknown" { 3 | request "caller" "Open" { 4 | message = "{{ input.header:Unkown }}" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | proxy "echo" { 8 | resource "opening" { 9 | request "caller" "Open" {} 10 | } 11 | 12 | resource "reference" { 13 | request "caller" "Open" { 14 | message = "{{ opening:message }}" 15 | } 16 | } 17 | 18 | forward "caller" {} 19 | } 20 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy_forward_header.fail.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | forward "caller" { 3 | header { 4 | Authorization = "{{ input:unknown }}" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy_forward_header.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | forward "caller" { 3 | header { 4 | Authorization = "Bearer" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy_node_rollback.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | input { 3 | params = "com.input" 4 | } 5 | 6 | resource "mock" { 7 | rollback "caller" "Open" { 8 | message = "{{ input:message }}" 9 | } 10 | } 11 | 12 | forward "caller" {} 13 | } 14 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy_params.fail.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | input { 3 | params = "unexpected" 4 | } 5 | 6 | forward "caller" {} 7 | } 8 | -------------------------------------------------------------------------------- /pkg/references/tests/proxy_params.pass.hcl: -------------------------------------------------------------------------------- 1 | proxy "echo" { 2 | input { 3 | params = "com.input" 4 | } 5 | 6 | forward "caller" {} 7 | } 8 | -------------------------------------------------------------------------------- /pkg/references/tests/repeated.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | repeating = "{{ input:repeating }}" 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /pkg/references/tests/rollback.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | message = "{{ input:message }}" 13 | } 14 | 15 | rollback "caller" "Open" { 16 | message = "{{ opening:message }}" 17 | } 18 | } 19 | 20 | output "com.output" { 21 | message = "{{ opening:message }}" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pkg/references/tests/rollback.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | name: "message" 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "string" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: "com.input" 27 | output: "com.output" 28 | -------------------------------------------------------------------------------- /pkg/references/tests/schema.pass.hcl: -------------------------------------------------------------------------------- 1 | service "com.semaphore" "caller" { 2 | transport = "http" 3 | codec = "json" 4 | host = "" 5 | } 6 | 7 | flow "echo" { 8 | input "com.input" {} 9 | 10 | resource "opening" { 11 | request "caller" "Open" { 12 | message = "{{ input:message }}" 13 | } 14 | } 15 | 16 | output "com.output" { 17 | message = "{{ input:message }}" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pkg/references/tests/schema.pass.yaml: -------------------------------------------------------------------------------- 1 | properties: 2 | com.input: 3 | label: "optional" 4 | template: 5 | message: 6 | "message": 7 | name: "message" 8 | label: "optional" 9 | template: 10 | scalar: 11 | type: "string" 12 | com.output: 13 | label: "optional" 14 | template: 15 | message: 16 | "message": 17 | name: "message" 18 | label: "optional" 19 | template: 20 | scalar: 21 | type: "string" 22 | services: 23 | caller: 24 | methods: 25 | Open: 26 | input: "com.input" 27 | output: "com.output" 28 | -------------------------------------------------------------------------------- /pkg/references/utils.go: -------------------------------------------------------------------------------- 1 | package references 2 | 3 | import ( 4 | "strings" 5 | ) 6 | 7 | // GetService returns the service from the given endpoint 8 | func GetService(path string) string { 9 | if strings.HasSuffix(path, ".") { 10 | path = path[:len(path)-1] 11 | } 12 | 13 | parts := strings.Split(path, ".") 14 | if len(parts) == 1 { 15 | return parts[0] 16 | } 17 | 18 | return strings.Join(parts[:len(parts)-1], ".") 19 | } 20 | 21 | // GetMethod returns the method from the given endpoint 22 | func GetMethod(path string) string { 23 | parts := strings.Split(path, ".") 24 | if len(parts) == 1 { 25 | return "" 26 | } 27 | 28 | return parts[len(parts)-1] 29 | } 30 | -------------------------------------------------------------------------------- /pkg/specs/discovery.go: -------------------------------------------------------------------------------- 1 | package specs 2 | 3 | import "github.com/jexia/semaphore/v2/pkg/discovery" 4 | 5 | type ServiceDiscoveryClient interface { 6 | Resolver(host string) (discovery.Resolver, error) 7 | Provider() string 8 | } 9 | 10 | type ServiceDiscoveryClients map[string]ServiceDiscoveryClient 11 | -------------------------------------------------------------------------------- /pkg/specs/labels/labels.go: -------------------------------------------------------------------------------- 1 | package labels 2 | 3 | // Label represents a value label. 4 | type Label string 5 | 6 | const ( 7 | // Optional representing a optional field. 8 | Optional Label = "optional" 9 | 10 | // Required representing a required field. 11 | Required Label = "required" 12 | ) 13 | -------------------------------------------------------------------------------- /pkg/specs/list.go: -------------------------------------------------------------------------------- 1 | package specs 2 | 3 | // PropertyList represents a list of properties 4 | type PropertyList []*Property 5 | 6 | func (list PropertyList) Len() int { return len(list) } 7 | func (list PropertyList) Swap(i, j int) { list[i], list[j] = list[j], list[i] } 8 | func (list PropertyList) Less(i, j int) bool { return list[i].Position < list[j].Position } 9 | 10 | // Get attempts to return a property inside the given list with the given name 11 | func (list PropertyList) Get(key string) *Property { 12 | for _, item := range list { 13 | if item == nil { 14 | continue 15 | } 16 | 17 | if item.Name == key { 18 | return item 19 | } 20 | } 21 | 22 | return nil 23 | } 24 | -------------------------------------------------------------------------------- /pkg/specs/mixed_types.go: -------------------------------------------------------------------------------- 1 | package specs 2 | 3 | // OneOf is a mixed type to let the schema validate values against exactly one of the templates. 4 | // Example: 5 | // OneOf{ 6 | // {Scalar: &Scalar{Type: types.String}}, 7 | // {Scalar: &Scalar{Type: types.Int32}}, 8 | // {Message: &Message{...}}, 9 | // } 10 | // A given value must be one of these types: string, int32 or the message. 11 | type OneOf []Template 12 | -------------------------------------------------------------------------------- /pkg/specs/specs.go: -------------------------------------------------------------------------------- 1 | package specs 2 | 3 | // Options represents a collection of options 4 | type Options map[string]string 5 | 6 | // Header represents a collection of key values 7 | type Header map[string]*Property 8 | -------------------------------------------------------------------------------- /pkg/specs/types/errors.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "fmt" 4 | 5 | // ErrUnknownType is returned when unable to recognize provided data type. 6 | type ErrUnknownType string 7 | 8 | func (e ErrUnknownType) Error() string { 9 | return fmt.Sprintf("unknown data type %q", string(e)) 10 | } 11 | -------------------------------------------------------------------------------- /pkg/specs/types/errors_test.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import "testing" 4 | 5 | func TestErrUnknownType(t *testing.T) { 6 | var ( 7 | err = ErrUnknownType("foo") 8 | expected = `unknown data type "foo"` 9 | ) 10 | 11 | if actual := err.Error(); actual != expected { 12 | t.Errorf("error %q was expected to be %q", actual, expected) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /pkg/transport/README.md: -------------------------------------------------------------------------------- 1 | # Transport 2 | 3 | represents listener and caller implementations for various transports. -------------------------------------------------------------------------------- /pkg/transport/graphql/README.md: -------------------------------------------------------------------------------- 1 | # GraphQL 2 | 3 | The GraphQL transport allows to expose flows as query objects. 4 | All flows could be exposed with `graphql` endpoints and the following optional options. 5 | 6 | ```hcl 7 | endpoint "flow" "graphql" { 8 | path = "user.address" 9 | name = "address" 10 | base = "mutation" 11 | } 12 | ``` 13 | -------------------------------------------------------------------------------- /pkg/transport/grpc/README.md: -------------------------------------------------------------------------------- 1 | # gRPC 2 | 3 | Provides gRPC client and server implementations. 4 | 5 | ```hcl 6 | endpoint "mock" "grpc" { 7 | package = "semaphore.greeter" 8 | service = "Say" 9 | method = "Hello" 10 | } 11 | ``` 12 | -------------------------------------------------------------------------------- /pkg/transport/http/method.go: -------------------------------------------------------------------------------- 1 | package http 2 | 3 | import "github.com/jexia/semaphore/v2/pkg/specs" 4 | 5 | // Method represents a service method 6 | type Method struct { 7 | name string 8 | request string 9 | endpoint string 10 | references []*specs.Property 11 | } 12 | 13 | // GetName returns the method name 14 | func (method *Method) GetName() string { 15 | return method.name 16 | } 17 | 18 | // References returns the available method references 19 | func (method *Method) References() []*specs.Property { 20 | if method.references == nil { 21 | return make([]*specs.Property, 0) 22 | } 23 | 24 | return method.references 25 | } 26 | -------------------------------------------------------------------------------- /pkg/transport/http/unique.go: -------------------------------------------------------------------------------- 1 | package http 2 | 3 | // UniqueStringItems collects strings to be returned as a list of unique items. 4 | // Note that it is not suitable for concurrent usage and does not guartantee the 5 | // order of items. 6 | type UniqueStringItems map[string]struct{} 7 | 8 | // Add item to the list. 9 | func (usi UniqueStringItems) Add(item string) { 10 | usi[item] = struct{}{} 11 | } 12 | 13 | // Get the list of unique items. 14 | func (usi UniqueStringItems) Get() []string { 15 | list := make([]string, 0, len(usi)) 16 | 17 | for key := range usi { 18 | list = append(list, key) 19 | } 20 | 21 | return list 22 | } 23 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # This script builds the application from source for multiple platforms. 4 | set -e 5 | 6 | echo "==> Building..." 7 | GIT_COMMIT="$(git rev-parse HEAD)" 8 | go build -o ./bin/semaphore -ldflags "-X main.version=unreleased -X main.build=${GIT_COMMIT} -X main.label=development" ./cmd/semaphore 9 | 10 | echo "==> Results:" 11 | ls -hl bin/ -------------------------------------------------------------------------------- /tests/e2e/grpc/Makefile: -------------------------------------------------------------------------------- 1 | PROTODIR = proto 2 | 3 | install-dev: 4 | go install google.golang.org/grpc/cmd/protoc-gen-go-grpc 5 | go install google.golang.org/protobuf/cmd/protoc-gen-go 6 | @echo "Do not forget to install protoc C++ libraries manually" 7 | 8 | proto-build: $(PROTODIR)/echo.pb.go 9 | 10 | %.pb.go: %.proto 11 | protoc --proto_path=. --proto_path=$(PROTODIR) --go-grpc_out=paths=source_relative:. --go_out=paths=source_relative:. $^ -------------------------------------------------------------------------------- /tests/e2e/grpc/flow/echo.hcl: -------------------------------------------------------------------------------- 1 | endpoint "typetest" "grpc" { 2 | package = "semaphore.typetest" 3 | service = "Typetest" 4 | method = "Run" 5 | } 6 | 7 | flow "typetest" { 8 | input "semaphore.typetest.Request" {} 9 | 10 | output "semaphore.typetest.Response" { 11 | echo = "{{ input:data }}" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tests/e2e/grpc/flow/echo_intermediate.hcl: -------------------------------------------------------------------------------- 1 | endpoint "typetest" "grpc" { 2 | package = "semaphore.typetest" 3 | service = "Typetest" 4 | method = "Run" 5 | } 6 | 7 | flow "typetest" { 8 | input "semaphore.typetest.Request" {} 9 | 10 | resource "echo" { 11 | request "semaphore.typetest.External" "Post" { 12 | enum = "{{ input:data.enum }}" 13 | string = "{{ input:data.string }}" 14 | integer = "{{ input:data.integer }}" 15 | double = "{{ input:data.double }}" 16 | numbers = "{{ input:data.numbers }}" 17 | } 18 | } 19 | 20 | output "semaphore.typetest.Response" { 21 | echo = "{{ echo:. }}" 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /tests/e2e/grpc/proto/api: -------------------------------------------------------------------------------- 1 | ../../../../api/ -------------------------------------------------------------------------------- /tests/e2e/http/flow/echo.hcl: -------------------------------------------------------------------------------- 1 | endpoint "typetest" "http" { 2 | endpoint = "/json" 3 | method = "POST" 4 | codec = "json" 5 | } 6 | 7 | endpoint "typetest" "http" { 8 | endpoint = "/xml" 9 | method = "POST" 10 | codec = "xml" 11 | } 12 | 13 | flow "typetest" { 14 | input "semaphore.typetest.Request" {} 15 | 16 | output "semaphore.typetest.Response" { 17 | echo = "{{ input:data }}" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/e2e/http/proto/api: -------------------------------------------------------------------------------- 1 | ../../../../api/ -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/.gitignore: -------------------------------------------------------------------------------- 1 | TAGS 2 | tags 3 | .*.swp 4 | tomlcheck/tomlcheck 5 | toml.test 6 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.1 4 | - 1.2 5 | - 1.3 6 | - 1.4 7 | - 1.5 8 | - 1.6 9 | - tip 10 | install: 11 | - go install ./... 12 | - go get github.com/BurntSushi/toml-test 13 | script: 14 | - export PATH="$PATH:$HOME/gopath/bin" 15 | - make test 16 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/COMPATIBLE: -------------------------------------------------------------------------------- 1 | Compatible with TOML version 2 | [v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md) 3 | 4 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/Makefile: -------------------------------------------------------------------------------- 1 | install: 2 | go install ./... 3 | 4 | test: install 5 | go test -v 6 | toml-test toml-test-decoder 7 | toml-test -encoder toml-test-encoder 8 | 9 | fmt: 10 | gofmt -w *.go */*.go 11 | colcheck *.go */*.go 12 | 13 | tags: 14 | find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS 15 | 16 | push: 17 | git push origin master 18 | git push github master 19 | 20 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/encoding_types.go: -------------------------------------------------------------------------------- 1 | // +build go1.2 2 | 3 | package toml 4 | 5 | // In order to support Go 1.1, we define our own TextMarshaler and 6 | // TextUnmarshaler types. For Go 1.2+, we just alias them with the 7 | // standard library interfaces. 8 | 9 | import ( 10 | "encoding" 11 | ) 12 | 13 | // TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here 14 | // so that Go 1.1 can be supported. 15 | type TextMarshaler encoding.TextMarshaler 16 | 17 | // TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined 18 | // here so that Go 1.1 can be supported. 19 | type TextUnmarshaler encoding.TextUnmarshaler 20 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/encoding_types_1.1.go: -------------------------------------------------------------------------------- 1 | // +build !go1.2 2 | 3 | package toml 4 | 5 | // These interfaces were introduced in Go 1.2, so we add them manually when 6 | // compiling for Go 1.1. 7 | 8 | // TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here 9 | // so that Go 1.1 can be supported. 10 | type TextMarshaler interface { 11 | MarshalText() (text []byte, err error) 12 | } 13 | 14 | // TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined 15 | // here so that Go 1.1 can be supported. 16 | type TextUnmarshaler interface { 17 | UnmarshalText(text []byte) error 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/BurntSushi/toml/session.vim: -------------------------------------------------------------------------------- 1 | au BufWritePost *.go silent!make tags > /dev/null 2>&1 2 | -------------------------------------------------------------------------------- /vendor/github.com/Knetic/govaluate/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | coverage.out 25 | 26 | manual_test.go 27 | *.out 28 | *.err 29 | -------------------------------------------------------------------------------- /vendor/github.com/Knetic/govaluate/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | script: ./test.sh 4 | 5 | go: 6 | - 1.2 7 | - 1.3 8 | - 1.4 9 | - 1.5 10 | - 1.6 11 | -------------------------------------------------------------------------------- /vendor/github.com/Knetic/govaluate/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | This library was authored by George Lester, and contains contributions from: 2 | 3 | vjeantet (regex support) 4 | iasci (ternary operator) 5 | oxtoacart (parameter structures, deferred parameter retrieval) 6 | wmiller848 (bitwise operators) 7 | prashantv (optimization of bools) 8 | dpaolella (exposure of variables used in an expression) 9 | benpaxton (fix for missing type checks during literal elide process) 10 | abrander (panic-finding testing tool) 11 | xfennec (fix for dates being parsed in the current Location) 12 | bgaifullin (lifting restriction on complex/struct types) -------------------------------------------------------------------------------- /vendor/github.com/Knetic/govaluate/ExpressionToken.go: -------------------------------------------------------------------------------- 1 | package govaluate 2 | 3 | /* 4 | Represents a single parsed token. 5 | */ 6 | type ExpressionToken struct { 7 | Kind TokenKind 8 | Value interface{} 9 | } 10 | -------------------------------------------------------------------------------- /vendor/github.com/Knetic/govaluate/expressionFunctions.go: -------------------------------------------------------------------------------- 1 | package govaluate 2 | 3 | /* 4 | Represents a function that can be called from within an expression. 5 | This method must return an error if, for any reason, it is unable to produce exactly one unambiguous result. 6 | An error returned will halt execution of the expression. 7 | */ 8 | type ExpressionFunction func(arguments ...interface{}) (interface{}, error) 9 | -------------------------------------------------------------------------------- /vendor/github.com/agext/levenshtein/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | matrix: 4 | fast_finish: true 5 | include: 6 | - go: 1.14.x 7 | env: TEST_METHOD=goveralls 8 | - go: 1.13.x 9 | - go: 1.12.x 10 | - go: 1.11.x 11 | - go: 1.10.x 12 | - go: tip 13 | - go: 1.9.x 14 | - go: 1.8.x 15 | - go: 1.7.x 16 | - go: 1.6.x 17 | - go: 1.5.x 18 | allow_failures: 19 | - go: tip 20 | - go: 1.11.x 21 | - go: 1.10.x 22 | - go: 1.9.x 23 | - go: 1.8.x 24 | - go: 1.7.x 25 | - go: 1.6.x 26 | - go: 1.5.x 27 | script: ./test.sh $TEST_METHOD 28 | notifications: 29 | email: 30 | on_success: never 31 | -------------------------------------------------------------------------------- /vendor/github.com/agext/levenshtein/MAINTAINERS: -------------------------------------------------------------------------------- 1 | Alex Bucataru (@AlexBucataru) 2 | -------------------------------------------------------------------------------- /vendor/github.com/agext/levenshtein/NOTICE: -------------------------------------------------------------------------------- 1 | Alrux Go EXTensions (AGExt) - package levenshtein 2 | Copyright 2016 ALRUX Inc. 3 | 4 | This product includes software developed at ALRUX Inc. 5 | (http://www.alrux.com/). 6 | -------------------------------------------------------------------------------- /vendor/github.com/agext/levenshtein/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/agext/levenshtein 2 | -------------------------------------------------------------------------------- /vendor/github.com/agext/levenshtein/test.sh: -------------------------------------------------------------------------------- 1 | set -ev 2 | 3 | if [[ "$1" == "goveralls" ]]; then 4 | echo "Testing with goveralls..." 5 | go get github.com/mattn/goveralls 6 | $HOME/gopath/bin/goveralls -service=travis-ci 7 | else 8 | echo "Testing with go test..." 9 | go test -v ./... 10 | fi 11 | -------------------------------------------------------------------------------- /vendor/github.com/apparentlymart/go-textseg/textseg/generate.go: -------------------------------------------------------------------------------- 1 | package textseg 2 | 3 | //go:generate go run make_tables.go -output tables.go 4 | //go:generate go run make_test_tables.go -output tables_test.go 5 | //go:generate ruby unicode2ragel.rb --url=http://www.unicode.org/Public/9.0.0/ucd/auxiliary/GraphemeBreakProperty.txt -m GraphemeCluster -p "Prepend,CR,LF,Control,Extend,Regional_Indicator,SpacingMark,L,V,T,LV,LVT,E_Base,E_Modifier,ZWJ,Glue_After_Zwj,E_Base_GAZ" -o grapheme_clusters_table.rl 6 | //go:generate ragel -Z grapheme_clusters.rl 7 | //go:generate gofmt -w grapheme_clusters.go 8 | -------------------------------------------------------------------------------- /vendor/github.com/apparentlymart/go-textseg/textseg/utf8_seqs.go: -------------------------------------------------------------------------------- 1 | package textseg 2 | 3 | import "unicode/utf8" 4 | 5 | // ScanGraphemeClusters is a split function for bufio.Scanner that splits 6 | // on UTF8 sequence boundaries. 7 | // 8 | // This is included largely for completeness, since this behavior is already 9 | // built in to Go when ranging over a string. 10 | func ScanUTF8Sequences(data []byte, atEOF bool) (int, []byte, error) { 11 | if len(data) == 0 { 12 | return 0, nil, nil 13 | } 14 | r, seqLen := utf8.DecodeRune(data) 15 | if r == utf8.RuneError && !atEOF { 16 | return 0, nil, nil 17 | } 18 | return seqLen, data[:seqLen], nil 19 | } 20 | -------------------------------------------------------------------------------- /vendor/github.com/armon/go-metrics/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | 24 | /metrics.out 25 | -------------------------------------------------------------------------------- /vendor/github.com/armon/go-metrics/const_unix.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package metrics 4 | 5 | import ( 6 | "syscall" 7 | ) 8 | 9 | const ( 10 | // DefaultSignal is used with DefaultInmemSignal 11 | DefaultSignal = syscall.SIGUSR1 12 | ) 13 | -------------------------------------------------------------------------------- /vendor/github.com/armon/go-metrics/const_windows.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | 3 | package metrics 4 | 5 | import ( 6 | "syscall" 7 | ) 8 | 9 | const ( 10 | // DefaultSignal is used with DefaultInmemSignal 11 | // Windows has no SIGUSR1, use SIGBREAK 12 | DefaultSignal = syscall.Signal(21) 13 | ) 14 | -------------------------------------------------------------------------------- /vendor/github.com/cespare/xxhash/v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - "1.x" 4 | - master 5 | env: 6 | - TAGS="" 7 | - TAGS="-tags purego" 8 | script: go test $TAGS -v ./... 9 | -------------------------------------------------------------------------------- /vendor/github.com/cespare/xxhash/v2/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/cespare/xxhash/v2 2 | 3 | go 1.13 4 | -------------------------------------------------------------------------------- /vendor/github.com/cespare/xxhash/v2/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/vendor/github.com/cespare/xxhash/v2/go.sum -------------------------------------------------------------------------------- /vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go: -------------------------------------------------------------------------------- 1 | // +build !appengine 2 | // +build gc 3 | // +build !purego 4 | 5 | package xxhash 6 | 7 | // Sum64 computes the 64-bit xxHash digest of b. 8 | // 9 | //go:noescape 10 | func Sum64(b []byte) uint64 11 | 12 | //go:noescape 13 | func writeBlocks(*Digest, []byte) int 14 | -------------------------------------------------------------------------------- /vendor/github.com/cespare/xxhash/v2/xxhash_safe.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | // This file contains the safe implementations of otherwise unsafe-using code. 4 | 5 | package xxhash 6 | 7 | // Sum64String computes the 64-bit xxHash digest of s. 8 | func Sum64String(s string) uint64 { 9 | return Sum64([]byte(s)) 10 | } 11 | 12 | // WriteString adds more data to d. It always returns len(s), nil. 13 | func (d *Digest) WriteString(s string) (n int, err error) { 14 | return d.Write([]byte(s)) 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/dgrijalva/jwt-go/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin 3 | 4 | 5 | -------------------------------------------------------------------------------- /vendor/github.com/dgrijalva/jwt-go/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | script: 4 | - go vet ./... 5 | - go test -v ./... 6 | 7 | go: 8 | - 1.3 9 | - 1.4 10 | - 1.5 11 | - 1.6 12 | - 1.7 13 | - tip 14 | -------------------------------------------------------------------------------- /vendor/github.com/dgrijalva/jwt-go/doc.go: -------------------------------------------------------------------------------- 1 | // Package jwt is a Go implementation of JSON Web Tokens: http://self-issued.info/docs/draft-jones-json-web-token.html 2 | // 3 | // See README.md for more info. 4 | package jwt 5 | -------------------------------------------------------------------------------- /vendor/github.com/fatih/color/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/fatih/color 2 | 3 | go 1.13 4 | 5 | require ( 6 | github.com/mattn/go-colorable v0.1.4 7 | github.com/mattn/go-isatty v0.0.11 8 | ) 9 | -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | *.out 3 | *.log 4 | *.test 5 | .vscode 6 | -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.10.x" 5 | - "1.11.x" 6 | - "1.12.x" 7 | 8 | script: 9 | - go get github.com/golang/dep/cmd/dep github.com/stretchr/testify 10 | - dep ensure -v -vendor-only 11 | - go test ./gojay/codegen/test/... -race 12 | - go test -race -coverprofile=coverage.txt -covermode=atomic 13 | 14 | after_success: 15 | - bash <(curl -s https://codecov.io/bash) 16 | -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: test 2 | test: 3 | go test -race -run=^Test -v 4 | 5 | .PHONY: cover 6 | cover: 7 | go test -coverprofile=coverage.out -covermode=atomic 8 | 9 | .PHONY: coverhtml 10 | coverhtml: 11 | go tool cover -html=coverage.out -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/encode_number.go: -------------------------------------------------------------------------------- 1 | package gojay 2 | -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/gojay.go: -------------------------------------------------------------------------------- 1 | // Package gojay implements encoding and decoding of JSON as defined in RFC 7159. 2 | // The mapping between JSON and Go values is described 3 | // in the documentation for the Marshal and Unmarshal functions. 4 | // 5 | // It aims at performance and usability by relying on simple interfaces 6 | // to decode and encode structures, slices, arrays and even channels. 7 | // 8 | // On top of the simple interfaces to implement, gojay provides lots of helpers to decode and encode 9 | // multiple of different types natively such as bit.Int, sql.NullString or time.Time 10 | package gojay 11 | -------------------------------------------------------------------------------- /vendor/github.com/francoispqt/gojay/gojay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/vendor/github.com/francoispqt/gojay/gojay.png -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/jsoninfo/doc.go: -------------------------------------------------------------------------------- 1 | // Package jsoninfo provides information and functions for marshalling/unmarshalling JSON. 2 | package jsoninfo 3 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/jsoninfo/strict_struct.go: -------------------------------------------------------------------------------- 1 | package jsoninfo 2 | 3 | type StrictStruct interface { 4 | EncodeWith(encoder *ObjectEncoder, value interface{}) error 5 | DecodeWith(decoder *ObjectDecoder, value interface{}) error 6 | } 7 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/openapi3/callback.go: -------------------------------------------------------------------------------- 1 | package openapi3 2 | 3 | import "context" 4 | 5 | // Callback is specified by OpenAPI/Swagger standard version 3.0. 6 | type Callback map[string]*PathItem 7 | 8 | func (value Callback) Validate(c context.Context) error { 9 | for _, v := range value { 10 | if err := v.Validate(c); err != nil { 11 | return err 12 | } 13 | } 14 | return nil 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/openapi3/doc.go: -------------------------------------------------------------------------------- 1 | // Package openapi3 parses and writes OpenAPI 3 specifications. 2 | // 3 | // The OpenAPI 3.0 specification can be found at: 4 | // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.md 5 | package openapi3 6 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/openapi3/external_docs.go: -------------------------------------------------------------------------------- 1 | package openapi3 2 | 3 | import ( 4 | "github.com/getkin/kin-openapi/jsoninfo" 5 | ) 6 | 7 | // ExternalDocs is specified by OpenAPI/Swagger standard version 3.0. 8 | type ExternalDocs struct { 9 | ExtensionProps 10 | 11 | Description string `json:"description,omitempty"` 12 | URL string `json:"url,omitempty"` 13 | } 14 | 15 | func (e *ExternalDocs) MarshalJSON() ([]byte, error) { 16 | return jsoninfo.MarshalStrictStruct(e) 17 | } 18 | 19 | func (e *ExternalDocs) UnmarshalJSON(data []byte) error { 20 | return jsoninfo.UnmarshalStrictStruct(data, e) 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/openapi3/serialization_method.go: -------------------------------------------------------------------------------- 1 | package openapi3 2 | 3 | const ( 4 | SerializationSimple = "simple" 5 | SerializationLabel = "label" 6 | SerializationMatrix = "matrix" 7 | SerializationForm = "form" 8 | SerializationSpaceDelimited = "spaceDelimited" 9 | SerializationPipeDelimited = "pipeDelimited" 10 | SerializationDeepObject = "deepObject" 11 | ) 12 | 13 | // SerializationMethod describes a serialization method of HTTP request's parameters and body. 14 | type SerializationMethod struct { 15 | Style string 16 | Explode bool 17 | } 18 | -------------------------------------------------------------------------------- /vendor/github.com/getkin/kin-openapi/openapi3/tag.go: -------------------------------------------------------------------------------- 1 | package openapi3 2 | 3 | // Tags is specified by OpenAPI/Swagger 3.0 standard. 4 | type Tags []*Tag 5 | 6 | func (tags Tags) Get(name string) *Tag { 7 | for _, tag := range tags { 8 | if tag.Name == name { 9 | return tag 10 | } 11 | } 12 | return nil 13 | } 14 | 15 | // Tag is specified by OpenAPI/Swagger 3.0 standard. 16 | type Tag struct { 17 | Name string `json:"name,omitempty" yaml:"name,omitempty"` 18 | Description string `json:"description,omitempty" yaml:"description,omitempty"` 19 | ExternalDocs *ExternalDocs `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"` 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/ghodss/yaml/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX leaves these everywhere on SMB shares 2 | ._* 3 | 4 | # Eclipse files 5 | .classpath 6 | .project 7 | .settings/** 8 | 9 | # Emacs save files 10 | *~ 11 | 12 | # Vim-related files 13 | [._]*.s[a-w][a-z] 14 | [._]s[a-w][a-z] 15 | *.un~ 16 | Session.vim 17 | .netrwhist 18 | 19 | # Go test binaries 20 | *.test 21 | -------------------------------------------------------------------------------- /vendor/github.com/ghodss/yaml/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.3 4 | - 1.4 5 | script: 6 | - go test 7 | - go build 8 | -------------------------------------------------------------------------------- /vendor/github.com/go-test/deep/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.out 3 | -------------------------------------------------------------------------------- /vendor/github.com/go-test/deep/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.12" 5 | - "1.13" 6 | - "1.14" 7 | 8 | before_install: 9 | - go get github.com/mattn/goveralls 10 | - go get golang.org/x/tools/cover 11 | 12 | script: 13 | - $HOME/gopath/bin/goveralls -service=travis-ci -package github.com/go-test/deep 14 | -------------------------------------------------------------------------------- /vendor/github.com/go-test/deep/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/go-test/deep 2 | 3 | go 1.13 4 | -------------------------------------------------------------------------------- /vendor/github.com/go-test/deep/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/vendor/github.com/go-test/deep/go.sum -------------------------------------------------------------------------------- /vendor/github.com/golang/protobuf/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/github.com/golang/protobuf/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/github.com/golang/protobuf/ptypes/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package ptypes provides functionality for interacting with well-known types. 6 | package ptypes 7 | -------------------------------------------------------------------------------- /vendor/github.com/google/go-cmp/cmp/export_panic.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017, The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE.md file. 4 | 5 | // +build purego 6 | 7 | package cmp 8 | 9 | import "reflect" 10 | 11 | const supportExporters = false 12 | 13 | func retrieveUnexportedField(reflect.Value, reflect.StructField, bool) reflect.Value { 14 | panic("no support for forcibly accessing unexported fields") 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017, The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE.md file. 4 | 5 | // +build !cmp_debug 6 | 7 | package diff 8 | 9 | var debug debugger 10 | 11 | type debugger struct{} 12 | 13 | func (debugger) Begin(_, _ int, f EqualFunc, _, _ *EditScript) EqualFunc { 14 | return f 15 | } 16 | func (debugger) Update() {} 17 | func (debugger) Finish() {} 18 | -------------------------------------------------------------------------------- /vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019, The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE.md file. 4 | 5 | package flags 6 | 7 | // Deterministic controls whether the output of Diff should be deterministic. 8 | // This is only used for testing. 9 | var Deterministic bool 10 | -------------------------------------------------------------------------------- /vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019, The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE.md file. 4 | 5 | // +build !go1.10 6 | 7 | package flags 8 | 9 | // AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. 10 | const AtLeastGo110 = false 11 | -------------------------------------------------------------------------------- /vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019, The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE.md file. 4 | 5 | // +build go1.10 6 | 7 | package flags 8 | 9 | // AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. 10 | const AtLeastGo110 = true 11 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/graphql-go/graphql 2 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/ast/arguments.go: -------------------------------------------------------------------------------- 1 | package ast 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/language/kinds" 5 | ) 6 | 7 | // Argument implements Node 8 | type Argument struct { 9 | Kind string 10 | Loc *Location 11 | Name *Name 12 | Value Value 13 | } 14 | 15 | func NewArgument(arg *Argument) *Argument { 16 | if arg == nil { 17 | arg = &Argument{} 18 | } 19 | arg.Kind = kinds.Argument 20 | return arg 21 | } 22 | 23 | func (arg *Argument) GetKind() string { 24 | return arg.Kind 25 | } 26 | 27 | func (arg *Argument) GetLoc() *Location { 28 | return arg.Loc 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/ast/document.go: -------------------------------------------------------------------------------- 1 | package ast 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/language/kinds" 5 | ) 6 | 7 | // Document implements Node 8 | type Document struct { 9 | Kind string 10 | Loc *Location 11 | Definitions []Node 12 | } 13 | 14 | func NewDocument(d *Document) *Document { 15 | if d == nil { 16 | d = &Document{} 17 | } 18 | return &Document{ 19 | Kind: kinds.Document, 20 | Loc: d.Loc, 21 | Definitions: d.Definitions, 22 | } 23 | } 24 | 25 | func (node *Document) GetKind() string { 26 | return node.Kind 27 | } 28 | 29 | func (node *Document) GetLoc() *Location { 30 | return node.Loc 31 | } 32 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/ast/location.go: -------------------------------------------------------------------------------- 1 | package ast 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/language/source" 5 | ) 6 | 7 | type Location struct { 8 | Start int 9 | End int 10 | Source *source.Source 11 | } 12 | 13 | func NewLocation(loc *Location) *Location { 14 | if loc == nil { 15 | loc = &Location{} 16 | } 17 | return &Location{ 18 | Start: loc.Start, 19 | End: loc.End, 20 | Source: loc.Source, 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/ast/name.go: -------------------------------------------------------------------------------- 1 | package ast 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/language/kinds" 5 | ) 6 | 7 | // Name implements Node 8 | type Name struct { 9 | Kind string 10 | Loc *Location 11 | Value string 12 | } 13 | 14 | func NewName(node *Name) *Name { 15 | if node == nil { 16 | node = &Name{} 17 | } 18 | node.Kind = kinds.Name 19 | return node 20 | } 21 | 22 | func (node *Name) GetKind() string { 23 | return node.Kind 24 | } 25 | 26 | func (node *Name) GetLoc() *Location { 27 | return node.Loc 28 | } 29 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/source/source.go: -------------------------------------------------------------------------------- 1 | package source 2 | 3 | const ( 4 | name = "GraphQL" 5 | ) 6 | 7 | type Source struct { 8 | Body []byte 9 | Name string 10 | } 11 | 12 | func NewSource(s *Source) *Source { 13 | if s == nil { 14 | s = &Source{Name: name} 15 | } 16 | if s.Name == "" { 17 | s.Name = name 18 | } 19 | return s 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/language/typeInfo/type_info.go: -------------------------------------------------------------------------------- 1 | package typeInfo 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/language/ast" 5 | ) 6 | 7 | // TypeInfoI defines the interface for TypeInfo Implementation 8 | type TypeInfoI interface { 9 | Enter(node ast.Node) 10 | Leave(node ast.Node) 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/graphql-go/graphql/types.go: -------------------------------------------------------------------------------- 1 | package graphql 2 | 3 | import ( 4 | "github.com/graphql-go/graphql/gqlerrors" 5 | ) 6 | 7 | // type Schema interface{} 8 | 9 | // Result has the response, errors and extensions from the resolved schema 10 | type Result struct { 11 | Data interface{} `json:"data"` 12 | Errors []gqlerrors.FormattedError `json:"errors,omitempty"` 13 | Extensions map[string]interface{} `json:"extensions,omitempty"` 14 | } 15 | 16 | // HasErrors just a simple function to help you decide if the result has errors or not 17 | func (r *Result) HasErrors() bool { 18 | return len(r.Errors) > 0 19 | } 20 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/consul/api/connect.go: -------------------------------------------------------------------------------- 1 | package api 2 | 3 | // Connect can be used to work with endpoints related to Connect, the 4 | // feature for securely connecting services within Consul. 5 | type Connect struct { 6 | c *Client 7 | } 8 | 9 | // Connect returns a handle to the connect-related endpoints 10 | func (c *Client) Connect() *Connect { 11 | return &Connect{c} 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/consul/api/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/consul/api 2 | 3 | go 1.12 4 | 5 | replace github.com/hashicorp/consul/sdk => ../sdk 6 | 7 | require ( 8 | github.com/hashicorp/consul/sdk v0.6.0 9 | github.com/hashicorp/go-cleanhttp v0.5.1 10 | github.com/hashicorp/go-hclog v0.12.0 11 | github.com/hashicorp/go-rootcerts v1.0.2 12 | github.com/hashicorp/go-uuid v1.0.1 13 | github.com/hashicorp/serf v0.9.3 14 | github.com/mitchellh/mapstructure v1.1.2 15 | github.com/stretchr/testify v1.4.0 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/consul/api/operator.go: -------------------------------------------------------------------------------- 1 | package api 2 | 3 | // Operator can be used to perform low-level operator tasks for Consul. 4 | type Operator struct { 5 | c *Client 6 | } 7 | 8 | // Operator returns a handle to the operator endpoints. 9 | func (c *Client) Operator() *Operator { 10 | return &Operator{c} 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/consul/api/operator_segment.go: -------------------------------------------------------------------------------- 1 | package api 2 | 3 | // SegmentList returns all the available LAN segments. 4 | func (op *Operator) SegmentList(q *QueryOptions) ([]string, *QueryMeta, error) { 5 | var out []string 6 | qm, err := op.c.query("/v1/operator/segment", &out, q) 7 | if err != nil { 8 | return nil, nil, err 9 | } 10 | return out, qm, nil 11 | } 12 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-cleanhttp/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/go-cleanhttp 2 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-hclog/.gitignore: -------------------------------------------------------------------------------- 1 | .idea* -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-hclog/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/go-hclog 2 | 3 | require ( 4 | github.com/davecgh/go-spew v1.1.1 // indirect 5 | github.com/fatih/color v1.7.0 6 | github.com/mattn/go-colorable v0.1.4 7 | github.com/mattn/go-isatty v0.0.10 8 | github.com/pmezard/go-difflib v1.0.0 // indirect 9 | github.com/stretchr/testify v1.2.2 10 | ) 11 | 12 | go 1.13 13 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-immutable-radix/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | *.prof 25 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-immutable-radix/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # UNRELEASED 2 | 3 | FEATURES 4 | 5 | * Add `SeekLowerBound` to allow for range scans. [[GH-24](https://github.com/hashicorp/go-immutable-radix/pull/24)] 6 | 7 | # 1.0.0 (August 30th, 2018) 8 | 9 | * go mod adopted 10 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-immutable-radix/edges.go: -------------------------------------------------------------------------------- 1 | package iradix 2 | 3 | import "sort" 4 | 5 | type edges []edge 6 | 7 | func (e edges) Len() int { 8 | return len(e) 9 | } 10 | 11 | func (e edges) Less(i, j int) bool { 12 | return e[i].label < e[j].label 13 | } 14 | 15 | func (e edges) Swap(i, j int) { 16 | e[i], e[j] = e[j], e[i] 17 | } 18 | 19 | func (e edges) Sort() { 20 | sort.Sort(e) 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-immutable-radix/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/go-immutable-radix 2 | 3 | require ( 4 | github.com/hashicorp/go-uuid v1.0.0 5 | github.com/hashicorp/golang-lru v0.5.0 6 | ) 7 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-immutable-radix/go.sum: -------------------------------------------------------------------------------- 1 | github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= 2 | github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= 3 | github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= 4 | github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= 5 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | 3 | language: go 4 | 5 | go: 6 | - 1.6 7 | 8 | branches: 9 | only: 10 | - master 11 | 12 | script: make test 13 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/Makefile: -------------------------------------------------------------------------------- 1 | TEST?=./... 2 | 3 | test: 4 | go test $(TEST) $(TESTARGS) -timeout=3s -parallel=4 5 | go vet $(TEST) 6 | go test $(TEST) -race 7 | 8 | .PHONY: test 9 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/doc.go: -------------------------------------------------------------------------------- 1 | // Package rootcerts contains functions to aid in loading CA certificates for 2 | // TLS connections. 3 | // 4 | // In addition, its default behavior on Darwin works around an open issue [1] 5 | // in Go's crypto/x509 that prevents certicates from being loaded from the 6 | // System or Login keychains. 7 | // 8 | // [1] https://github.com/golang/go/issues/14514 9 | package rootcerts 10 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/go-rootcerts 2 | 3 | go 1.12 4 | 5 | require github.com/mitchellh/go-homedir v1.1.0 6 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/go.sum: -------------------------------------------------------------------------------- 1 | github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= 2 | github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= 3 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/go-rootcerts/rootcerts_base.go: -------------------------------------------------------------------------------- 1 | // +build !darwin 2 | 3 | package rootcerts 4 | 5 | import "crypto/x509" 6 | 7 | // LoadSystemCAs does nothing on non-Darwin systems. We return nil so that 8 | // default behavior of standard TLS config libraries is triggered, which is to 9 | // load system certs. 10 | func LoadSystemCAs() (*x509.CertPool, error) { 11 | return nil, nil 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/appveyor.yml: -------------------------------------------------------------------------------- 1 | build: off 2 | 3 | clone_folder: c:\gopath\src\github.com\hashicorp\hcl 4 | 5 | environment: 6 | GOPATH: c:\gopath 7 | GO111MODULE: on 8 | GOPROXY: https://goproxy.io 9 | 10 | stack: go 1.12 11 | 12 | test_script: 13 | - go test ./... 14 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/gohcl/types.go: -------------------------------------------------------------------------------- 1 | package gohcl 2 | 3 | import ( 4 | "reflect" 5 | 6 | "github.com/hashicorp/hcl/v2" 7 | ) 8 | 9 | var victimExpr hcl.Expression 10 | var victimBody hcl.Body 11 | 12 | var exprType = reflect.TypeOf(&victimExpr).Elem() 13 | var bodyType = reflect.TypeOf(&victimBody).Elem() 14 | var blockType = reflect.TypeOf((*hcl.Block)(nil)) 15 | var attrType = reflect.TypeOf((*hcl.Attribute)(nil)) 16 | var attrsType = reflect.TypeOf(hcl.Attributes(nil)) 17 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclsyntax/doc.go: -------------------------------------------------------------------------------- 1 | // Package hclsyntax contains the parser, AST, etc for HCL's native language, 2 | // as opposed to the JSON variant. 3 | // 4 | // In normal use applications should rarely depend on this package directly, 5 | // instead preferring the higher-level interface of the main hcl package and 6 | // its companion package hclparse. 7 | package hclsyntax 8 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclsyntax/file.go: -------------------------------------------------------------------------------- 1 | package hclsyntax 2 | 3 | import ( 4 | "github.com/hashicorp/hcl/v2" 5 | ) 6 | 7 | // File is the top-level object resulting from parsing a configuration file. 8 | type File struct { 9 | Body *Body 10 | Bytes []byte 11 | } 12 | 13 | func (f *File) AsHCLFile() *hcl.File { 14 | return &hcl.File{ 15 | Body: f.Body, 16 | Bytes: f.Bytes, 17 | 18 | // TODO: The Nav object, once we have an implementation of it 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclsyntax/generate.go: -------------------------------------------------------------------------------- 1 | package hclsyntax 2 | 3 | //go:generate go run expression_vars_gen.go 4 | //go:generate ruby unicode2ragel.rb --url=http://www.unicode.org/Public/9.0.0/ucd/DerivedCoreProperties.txt -m UnicodeDerived -p ID_Start,ID_Continue -o unicode_derived.rl 5 | //go:generate ragel -Z scan_tokens.rl 6 | //go:generate gofmt -w scan_tokens.go 7 | //go:generate ragel -Z scan_string_lit.rl 8 | //go:generate gofmt -w scan_string_lit.go 9 | //go:generate stringer -type TokenType -output token_type_string.go 10 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclsyntax/keywords.go: -------------------------------------------------------------------------------- 1 | package hclsyntax 2 | 3 | import ( 4 | "bytes" 5 | ) 6 | 7 | type Keyword []byte 8 | 9 | var forKeyword = Keyword([]byte{'f', 'o', 'r'}) 10 | var inKeyword = Keyword([]byte{'i', 'n'}) 11 | var ifKeyword = Keyword([]byte{'i', 'f'}) 12 | var elseKeyword = Keyword([]byte{'e', 'l', 's', 'e'}) 13 | var endifKeyword = Keyword([]byte{'e', 'n', 'd', 'i', 'f'}) 14 | var endforKeyword = Keyword([]byte{'e', 'n', 'd', 'f', 'o', 'r'}) 15 | 16 | func (kw Keyword) TokenMatches(token Token) bool { 17 | if token.Type != TokenIdent { 18 | return false 19 | } 20 | return bytes.Equal([]byte(kw), token.Bytes) 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclwrite/doc.go: -------------------------------------------------------------------------------- 1 | // Package hclwrite deals with the problem of generating HCL configuration 2 | // and of making specific surgical changes to existing HCL configurations. 3 | // 4 | // It operates at a different level of abstraction than the main HCL parser 5 | // and AST, since details such as the placement of comments and newlines 6 | // are preserved when unchanged. 7 | // 8 | // The hclwrite API follows a similar principle to XML/HTML DOM, allowing nodes 9 | // to be read out, created and inserted, etc. Nodes represent syntax constructs 10 | // rather than semantic concepts. 11 | package hclwrite 12 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/hclwrite/native_node_sorter.go: -------------------------------------------------------------------------------- 1 | package hclwrite 2 | 3 | import ( 4 | "github.com/hashicorp/hcl/v2/hclsyntax" 5 | ) 6 | 7 | type nativeNodeSorter struct { 8 | Nodes []hclsyntax.Node 9 | } 10 | 11 | func (s nativeNodeSorter) Len() int { 12 | return len(s.Nodes) 13 | } 14 | 15 | func (s nativeNodeSorter) Less(i, j int) bool { 16 | rangeI := s.Nodes[i].Range() 17 | rangeJ := s.Nodes[j].Range() 18 | return rangeI.Start.Byte < rangeJ.Start.Byte 19 | } 20 | 21 | func (s nativeNodeSorter) Swap(i, j int) { 22 | s.Nodes[i], s.Nodes[j] = s.Nodes[j], s.Nodes[i] 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/hashicorp/hcl/v2/schema.go: -------------------------------------------------------------------------------- 1 | package hcl 2 | 3 | // BlockHeaderSchema represents the shape of a block header, and is 4 | // used for matching blocks within bodies. 5 | type BlockHeaderSchema struct { 6 | Type string 7 | LabelNames []string 8 | } 9 | 10 | // AttributeSchema represents the requirements for an attribute, and is used 11 | // for matching attributes within bodies. 12 | type AttributeSchema struct { 13 | Name string 14 | Required bool 15 | } 16 | 17 | // BodySchema represents the desired shallow structure of a body. 18 | type BodySchema struct { 19 | Attributes []AttributeSchema 20 | Blocks []BlockHeaderSchema 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/inconshreveable/mousetrap/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2014 Alan Shreve 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /vendor/github.com/inconshreveable/mousetrap/trap_others.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package mousetrap 4 | 5 | // StartedByExplorer returns true if the program was invoked by the user 6 | // double-clicking on the executable from explorer.exe 7 | // 8 | // It is conservative and returns false if any of the internal calls fail. 9 | // It does not guarantee that the program was run from a terminal. It only can tell you 10 | // whether it was launched from explorer.exe 11 | // 12 | // On non-Windows platforms, it always returns false. 13 | func StartedByExplorer() bool { 14 | return false 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/jhump/protoreflect/codec/doc.go: -------------------------------------------------------------------------------- 1 | // Package codec contains a reader/write type that assists with encoding 2 | // and decoding protobuf's binary representation. 3 | // 4 | // The code in this package began as a fork of proto.Buffer but provides 5 | // additional API to make it more useful to code that needs to dynamically 6 | // process or produce the protobuf binary format. 7 | package codec 8 | -------------------------------------------------------------------------------- /vendor/github.com/jhump/protoreflect/desc/protoparse/.gitignore: -------------------------------------------------------------------------------- 1 | y.output 2 | -------------------------------------------------------------------------------- /vendor/github.com/jhump/protoreflect/desc/protoparse/doc.go: -------------------------------------------------------------------------------- 1 | // Package protoparse provides functionality for parsing *.proto source files 2 | // into descriptors that can be used with other protoreflect packages, like 3 | // dynamic messages and dynamic GRPC clients. 4 | // 5 | // This package links in other packages that include compiled descriptors for 6 | // the various "google/protobuf/*.proto" files that are included with protoc. 7 | // That way, like when invoking protoc, programs need not supply copies of these 8 | // "builtin" files. Though if copies of the files are provided, they will be 9 | // used instead of the builtin descriptors. 10 | package protoparse 11 | -------------------------------------------------------------------------------- /vendor/github.com/jhump/protoreflect/desc/protoprint/doc.go: -------------------------------------------------------------------------------- 1 | // Package protoprint provides a mechanism to generate protobuf source code 2 | // from descriptors. 3 | // 4 | // This can be useful to turn file descriptor sets (produced by protoc) back 5 | // into proto IDL code. Combined with the protoreflect/builder package, it can 6 | // also be used to perform code generation of proto source code. 7 | package protoprint 8 | -------------------------------------------------------------------------------- /vendor/github.com/julienschmidt/httprouter/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go: 4 | - 1.7.x 5 | - 1.8.x 6 | - 1.9.x 7 | - 1.10.x 8 | - 1.11.x 9 | - 1.12.x 10 | - 1.13.x 11 | - master 12 | before_install: 13 | - go get github.com/mattn/goveralls 14 | script: 15 | - go test -v -covermode=count -coverprofile=coverage.out 16 | - go vet ./... 17 | - test -z "$(gofmt -d -s . | tee /dev/stderr)" 18 | - $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci 19 | -------------------------------------------------------------------------------- /vendor/github.com/julienschmidt/httprouter/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/julienschmidt/httprouter 2 | 3 | go 1.7 4 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-colorable/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | go: 4 | - 1.13.x 5 | - tip 6 | 7 | before_install: 8 | - go get -t -v ./... 9 | 10 | script: 11 | - ./go.test.sh 12 | 13 | after_success: 14 | - bash <(curl -s https://codecov.io/bash) 15 | 16 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-colorable/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mattn/go-colorable 2 | 3 | require ( 4 | github.com/mattn/go-isatty v0.0.12 5 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae // indirect 6 | ) 7 | 8 | go 1.13 9 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-colorable/go.sum: -------------------------------------------------------------------------------- 1 | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= 2 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 3 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 4 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8= 5 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 6 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-colorable/go.test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | echo "" > coverage.txt 5 | 6 | for d in $(go list ./... | grep -v vendor); do 7 | go test -race -coverprofile=profile.out -covermode=atomic "$d" 8 | if [ -f profile.out ]; then 9 | cat profile.out >> coverage.txt 10 | rm profile.out 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | go: 4 | - 1.13.x 5 | - tip 6 | 7 | before_install: 8 | - go get -t -v ./... 9 | 10 | script: 11 | - ./go.test.sh 12 | 13 | after_success: 14 | - bash <(curl -s https://codecov.io/bash) 15 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/doc.go: -------------------------------------------------------------------------------- 1 | // Package isatty implements interface to isatty 2 | package isatty 3 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mattn/go-isatty 2 | 3 | go 1.12 4 | 5 | require golang.org/x/sys v0.0.0-20200116001909-b77594299b42 6 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/go.sum: -------------------------------------------------------------------------------- 1 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= 2 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 3 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/go.test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | echo "" > coverage.txt 5 | 6 | for d in $(go list ./... | grep -v vendor); do 7 | go test -race -coverprofile=profile.out -covermode=atomic "$d" 8 | if [ -f profile.out ]; then 9 | cat profile.out >> coverage.txt 10 | rm profile.out 11 | fi 12 | done 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin freebsd openbsd netbsd dragonfly 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | // IsTerminal return true if the file descriptor is terminal. 9 | func IsTerminal(fd uintptr) bool { 10 | _, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA) 11 | return err == nil 12 | } 13 | 14 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 15 | // terminal. This is also always false on this environment. 16 | func IsCygwinTerminal(fd uintptr) bool { 17 | return false 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_others.go: -------------------------------------------------------------------------------- 1 | // +build appengine js nacl 2 | 3 | package isatty 4 | 5 | // IsTerminal returns true if the file descriptor is terminal which 6 | // is always false on js and appengine classic which is a sandboxed PaaS. 7 | func IsTerminal(fd uintptr) bool { 8 | return false 9 | } 10 | 11 | // IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 12 | // terminal. This is also always false on this environment. 13 | func IsCygwinTerminal(fd uintptr) bool { 14 | return false 15 | } 16 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_plan9.go: -------------------------------------------------------------------------------- 1 | // +build plan9 2 | 3 | package isatty 4 | 5 | import ( 6 | "syscall" 7 | ) 8 | 9 | // IsTerminal returns true if the given file descriptor is a terminal. 10 | func IsTerminal(fd uintptr) bool { 11 | path, err := syscall.Fd2path(int(fd)) 12 | if err != nil { 13 | return false 14 | } 15 | return path == "/dev/cons" || path == "/mnt/term/dev/cons" 16 | } 17 | 18 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 19 | // terminal. This is also always false on this environment. 20 | func IsCygwinTerminal(fd uintptr) bool { 21 | return false 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_solaris.go: -------------------------------------------------------------------------------- 1 | // +build solaris 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "golang.org/x/sys/unix" 8 | ) 9 | 10 | // IsTerminal returns true if the given file descriptor is a terminal. 11 | // see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c 12 | func IsTerminal(fd uintptr) bool { 13 | var termio unix.Termio 14 | err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) 15 | return err == nil 16 | } 17 | 18 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 19 | // terminal. This is also always false on this environment. 20 | func IsCygwinTerminal(fd uintptr) bool { 21 | return false 22 | } 23 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/isatty_tcgets.go: -------------------------------------------------------------------------------- 1 | // +build linux aix 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | // IsTerminal return true if the file descriptor is terminal. 9 | func IsTerminal(fd uintptr) bool { 10 | _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) 11 | return err == nil 12 | } 13 | 14 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 15 | // terminal. This is also always false on this environment. 16 | func IsCygwinTerminal(fd uintptr) bool { 17 | return false 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-isatty/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ], 5 | "postUpdateOptions": [ 6 | "gomodTidy" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2012 Matt T. Proud (matt.proud@gmail.com) 2 | -------------------------------------------------------------------------------- /vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore: -------------------------------------------------------------------------------- 1 | cover.dat 2 | -------------------------------------------------------------------------------- /vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | 3 | cover: 4 | go test -cover -v -coverprofile=cover.dat ./... 5 | go tool cover -func cover.dat 6 | 7 | .PHONY: cover 8 | -------------------------------------------------------------------------------- /vendor/github.com/mitchellh/go-homedir/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mitchellh/go-homedir 2 | -------------------------------------------------------------------------------- /vendor/github.com/mitchellh/go-wordwrap/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mitchellh/go-wordwrap 2 | -------------------------------------------------------------------------------- /vendor/github.com/mitchellh/mapstructure/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.11.x" 5 | - tip 6 | 7 | script: 8 | - go test 9 | -------------------------------------------------------------------------------- /vendor/github.com/mitchellh/mapstructure/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mitchellh/mapstructure 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/.gitignore: -------------------------------------------------------------------------------- 1 | command-line-arguments.test 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/README.md: -------------------------------------------------------------------------------- 1 | See [![go-doc](https://godoc.org/github.com/prometheus/client_golang/prometheus?status.svg)](https://godoc.org/github.com/prometheus/client_golang/prometheus). 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_model/NOTICE: -------------------------------------------------------------------------------- 1 | Data model artifacts for Prometheus. 2 | Copyright 2012-2015 The Prometheus Authors 3 | 4 | This product includes software developed at 5 | SoundCloud Ltd. (http://soundcloud.com/). 6 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/common/NOTICE: -------------------------------------------------------------------------------- 1 | Common libraries shared by Prometheus Go components. 2 | Copyright 2015 The Prometheus Authors 3 | 4 | This product includes software developed at 5 | SoundCloud Ltd. (http://soundcloud.com/). 6 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/.gitignore: -------------------------------------------------------------------------------- 1 | /fixtures/ 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/.golangci.yml: -------------------------------------------------------------------------------- 1 | # Run only staticcheck for now. Additional linters will be enabled one-by-one. 2 | linters: 3 | enable: 4 | - staticcheck 5 | - govet 6 | disable-all: true 7 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | * Johannes 'fish' Ziemke @discordianfish 2 | * Paul Gier @pgier 3 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/NOTICE: -------------------------------------------------------------------------------- 1 | procfs provides functions to retrieve system, kernel and process 2 | metrics from the pseudo-filesystem proc. 3 | 4 | Copyright 2014-2015 The Prometheus Authors 5 | 6 | This product includes software developed at 7 | SoundCloud Ltd. (http://soundcloud.com/). 8 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/prometheus/procfs 2 | 3 | require ( 4 | github.com/google/go-cmp v0.3.0 5 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 6 | ) 7 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/procfs/go.sum: -------------------------------------------------------------------------------- 1 | github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= 2 | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 3 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= 4 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 5 | -------------------------------------------------------------------------------- /vendor/github.com/rs/cors/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - "1.10" 4 | - "1.11" 5 | - "1.12" 6 | - tip 7 | matrix: 8 | allow_failures: 9 | - go: tip 10 | -------------------------------------------------------------------------------- /vendor/github.com/rs/cors/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/rs/cors 2 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | # Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore 23 | # swap 24 | [._]*.s[a-w][a-z] 25 | [._]s[a-w][a-z] 26 | # session 27 | Session.vim 28 | # temporary 29 | .netrwhist 30 | *~ 31 | # auto-generated tag files 32 | tags 33 | 34 | *.exe 35 | cobra 36 | cobra.test 37 | 38 | .idea/ 39 | *.iml 40 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/.mailmap: -------------------------------------------------------------------------------- 1 | Steve Francia 2 | Bjørn Erik Pedersen 3 | Fabiano Franz 4 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | stages: 4 | - diff 5 | - test 6 | 7 | go: 8 | - 1.10.x 9 | - 1.11.x 10 | - 1.12.x 11 | - tip 12 | 13 | matrix: 14 | allow_failures: 15 | - go: tip 16 | include: 17 | - stage: diff 18 | go: 1.12.x 19 | script: diff -u <(echo -n) <(gofmt -d -s .) 20 | 21 | before_install: go get -u github.com/kyoh86/richgo 22 | 23 | script: 24 | - richgo test -v ./... 25 | - go build 26 | - if [ -z $NOVET ]; then 27 | diff -u <(echo -n) <(go vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); 28 | fi 29 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/command_notwin.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package cobra 4 | 5 | var preExecHookFn func(*Command) 6 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/command_win.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | 3 | package cobra 4 | 5 | import ( 6 | "fmt" 7 | "os" 8 | "time" 9 | 10 | "github.com/inconshreveable/mousetrap" 11 | ) 12 | 13 | var preExecHookFn = preExecHook 14 | 15 | func preExecHook(c *Command) { 16 | if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { 17 | c.Print(MousetrapHelpText) 18 | if MousetrapDisplayDuration > 0 { 19 | time.Sleep(MousetrapDisplayDuration) 20 | } else { 21 | c.Println("Press return to continue...") 22 | fmt.Scanln() 23 | } 24 | os.Exit(1) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/cobra/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/cobra 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/cpuguy83/go-md2man/v2 v2.0.0 7 | github.com/inconshreveable/mousetrap v1.0.0 8 | github.com/mitchellh/go-homedir v1.1.0 9 | github.com/spf13/pflag v1.0.3 10 | github.com/spf13/viper v1.4.0 11 | gopkg.in/yaml.v2 v2.2.2 12 | ) 13 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/pflag/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | 3 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/pflag/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | 3 | language: go 4 | 5 | go: 6 | - 1.9.x 7 | - 1.10.x 8 | - 1.11.x 9 | - tip 10 | 11 | matrix: 12 | allow_failures: 13 | - go: tip 14 | 15 | install: 16 | - go get golang.org/x/lint/golint 17 | - export PATH=$GOPATH/bin:$PATH 18 | - go install ./... 19 | 20 | script: 21 | - verify/all.sh -v 22 | - go test ./... 23 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/pflag/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/pflag 2 | 3 | go 1.12 4 | -------------------------------------------------------------------------------- /vendor/github.com/spf13/pflag/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/vendor/github.com/spf13/pflag/go.sum -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/assertion_format.go.tmpl: -------------------------------------------------------------------------------- 1 | {{.CommentFormat}} 2 | func {{.DocInfo.Name}}f(t TestingT, {{.ParamsFormat}}) bool { 3 | if h, ok := t.(tHelper); ok { h.Helper() } 4 | return {{.DocInfo.Name}}(t, {{.ForwardedParamsFormat}}) 5 | } 6 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl: -------------------------------------------------------------------------------- 1 | {{.CommentWithoutT "a"}} 2 | func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { 3 | if h, ok := a.t.(tHelper); ok { h.Helper() } 4 | return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) 5 | } 6 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/errors.go: -------------------------------------------------------------------------------- 1 | package assert 2 | 3 | import ( 4 | "errors" 5 | ) 6 | 7 | // AnError is an error instance useful for testing. If the code does not care 8 | // about error specifics, and only needs to return the error for example, this 9 | // error should be used to make the test code more readable. 10 | var AnError = errors.New("assert.AnError general error for testing") 11 | -------------------------------------------------------------------------------- /vendor/github.com/stretchr/testify/assert/forward_assertions.go: -------------------------------------------------------------------------------- 1 | package assert 2 | 3 | // Assertions provides assertion methods around the 4 | // TestingT interface. 5 | type Assertions struct { 6 | t TestingT 7 | } 8 | 9 | // New makes a new Assertions object for the specified TestingT. 10 | func New(t TestingT) *Assertions { 11 | return &Assertions{ 12 | t: t, 13 | } 14 | } 15 | 16 | //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_forward.go.tmpl -include-format-funcs" 17 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/function/doc.go: -------------------------------------------------------------------------------- 1 | // Package function builds on the functionality of cty by modeling functions 2 | // that operate on cty Values. 3 | // 4 | // Functions are, at their core, Go anonymous functions. However, this package 5 | // wraps around them utility functions for parameter type checking, etc. 6 | package function 7 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/function/stdlib/doc.go: -------------------------------------------------------------------------------- 1 | // Package stdlib is a collection of cty functions that are expected to be 2 | // generally useful, and are thus factored out into this shared library in 3 | // the hope that cty-using applications will have consistent behavior when 4 | // using these functions. 5 | // 6 | // See the parent package "function" for more information on the purpose 7 | // and usage of cty functions. 8 | // 9 | // This package contains both Go functions, which provide convenient access 10 | // to call the functions from Go code, and the Function objects themselves. 11 | // The latter follow the naming scheme of appending "Func" to the end of 12 | // the function name. 13 | package stdlib 14 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/gocty/doc.go: -------------------------------------------------------------------------------- 1 | // Package gocty deals with converting between cty Values and native go 2 | // values. 3 | // 4 | // It operates under a similar principle to the encoding/json and 5 | // encoding/xml packages in the standard library, using reflection to 6 | // populate native Go data structures from cty values and vice-versa. 7 | package gocty 8 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/json/doc.go: -------------------------------------------------------------------------------- 1 | // Package json provides functions for serializing cty types and values in 2 | // JSON format, and for decoding them again. 3 | // 4 | // Since the cty type system is a superset of the JSON type system, 5 | // round-tripping through JSON is lossy unless type information is provided 6 | // both at encoding time and decoding time. Callers of this package are 7 | // therefore suggested to define their expected structure as a cty.Type 8 | // and pass it in consistently both when encoding and when decoding, though 9 | // default (type-lossy) behavior is provided for situations where the precise 10 | // representation of the data is not significant. 11 | package json 12 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/json/type.go: -------------------------------------------------------------------------------- 1 | package json 2 | 3 | import ( 4 | "github.com/zclconf/go-cty/cty" 5 | ) 6 | 7 | // MarshalType returns a JSON serialization of the given type. 8 | // 9 | // This is just a thin wrapper around t.MarshalJSON, for symmetry with 10 | // UnmarshalType. 11 | func MarshalType(t cty.Type) ([]byte, error) { 12 | return t.MarshalJSON() 13 | } 14 | 15 | // UnmarshalType decodes a JSON serialization of the given type as produced 16 | // by either Type.MarshalJSON or MarshalType. 17 | // 18 | // This is a convenience wrapper around Type.UnmarshalJSON. 19 | func UnmarshalType(buf []byte) (cty.Type, error) { 20 | var t cty.Type 21 | err := t.UnmarshalJSON(buf) 22 | return t, err 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/null.go: -------------------------------------------------------------------------------- 1 | package cty 2 | 3 | // NullVal returns a null value of the given type. A null can be created of any 4 | // type, but operations on such values will always panic. Calling applications 5 | // are encouraged to use nulls only sparingly, particularly when user-provided 6 | // expressions are to be evaluated, since the precence of nulls creates a 7 | // much higher chance of evaluation errors that can't be caught by a type 8 | // checker. 9 | func NullVal(t Type) Value { 10 | return Value{ 11 | ty: t, 12 | v: nil, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/github.com/zclconf/go-cty/cty/set/iterator.go: -------------------------------------------------------------------------------- 1 | package set 2 | 3 | type Iterator struct { 4 | vals []interface{} 5 | idx int 6 | } 7 | 8 | func (it *Iterator) Value() interface{} { 9 | return it.vals[it.idx] 10 | } 11 | 12 | func (it *Iterator) Next() bool { 13 | it.idx++ 14 | return it.idx < len(it.vals) 15 | } 16 | -------------------------------------------------------------------------------- /vendor/go.uber.org/atomic/.gitignore: -------------------------------------------------------------------------------- 1 | /bin 2 | .DS_Store 3 | /vendor 4 | cover.html 5 | cover.out 6 | lint.log 7 | 8 | # Binaries 9 | *.test 10 | 11 | # Profiling output 12 | *.prof 13 | -------------------------------------------------------------------------------- /vendor/go.uber.org/atomic/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go_import_path: go.uber.org/atomic 4 | 5 | env: 6 | global: 7 | - GO111MODULE=on 8 | 9 | matrix: 10 | include: 11 | - go: 1.12.x 12 | - go: 1.13.x 13 | env: LINT=1 14 | 15 | cache: 16 | directories: 17 | - vendor 18 | 19 | before_install: 20 | - go version 21 | 22 | script: 23 | - test -z "$LINT" || make lint 24 | - make cover 25 | 26 | after_success: 27 | - bash <(curl -s https://codecov.io/bash) 28 | -------------------------------------------------------------------------------- /vendor/go.uber.org/atomic/go.mod: -------------------------------------------------------------------------------- 1 | module go.uber.org/atomic 2 | 3 | require ( 4 | github.com/davecgh/go-spew v1.1.1 // indirect 5 | github.com/stretchr/testify v1.3.0 6 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de 7 | golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c // indirect 8 | ) 9 | 10 | go 1.13 11 | -------------------------------------------------------------------------------- /vendor/go.uber.org/multierr/.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | cover.html 3 | cover.out 4 | /bin 5 | -------------------------------------------------------------------------------- /vendor/go.uber.org/multierr/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go_import_path: go.uber.org/multierr 4 | 5 | env: 6 | global: 7 | - GO15VENDOREXPERIMENT=1 8 | - GO111MODULE=on 9 | 10 | go: 11 | - 1.11.x 12 | - 1.12.x 13 | - 1.13.x 14 | 15 | cache: 16 | directories: 17 | - vendor 18 | 19 | before_install: 20 | - go version 21 | 22 | script: 23 | - | 24 | set -e 25 | make lint 26 | make cover 27 | 28 | after_success: 29 | - bash <(curl -s https://codecov.io/bash) 30 | -------------------------------------------------------------------------------- /vendor/go.uber.org/multierr/glide.yaml: -------------------------------------------------------------------------------- 1 | package: go.uber.org/multierr 2 | import: 3 | - package: go.uber.org/atomic 4 | version: ^1 5 | testImport: 6 | - package: github.com/stretchr/testify 7 | subpackages: 8 | - assert 9 | -------------------------------------------------------------------------------- /vendor/go.uber.org/multierr/go.mod: -------------------------------------------------------------------------------- 1 | module go.uber.org/multierr 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/stretchr/testify v1.3.0 7 | go.uber.org/atomic v1.5.0 8 | go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee 9 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de 10 | golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 // indirect 11 | honnef.co/go/tools v0.0.1-2019.2.3 12 | ) 13 | -------------------------------------------------------------------------------- /vendor/go.uber.org/tools/update-license/.gitignore: -------------------------------------------------------------------------------- 1 | update-license 2 | -------------------------------------------------------------------------------- /vendor/go.uber.org/zap/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | vendor 10 | 11 | # Architecture specific extensions/prefixes 12 | *.[568vq] 13 | [568vq].out 14 | 15 | *.cgo1.go 16 | *.cgo2.c 17 | _cgo_defun.c 18 | _cgo_gotypes.go 19 | _cgo_export.* 20 | 21 | _testmain.go 22 | 23 | *.exe 24 | *.test 25 | *.prof 26 | *.pprof 27 | *.out 28 | *.log 29 | 30 | /bin 31 | cover.out 32 | cover.html 33 | -------------------------------------------------------------------------------- /vendor/go.uber.org/zap/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | 4 | go_import_path: go.uber.org/zap 5 | env: 6 | global: 7 | - TEST_TIMEOUT_SCALE=10 8 | - GO111MODULE=on 9 | 10 | matrix: 11 | include: 12 | - go: 1.12.x 13 | - go: 1.13.x 14 | env: LINT=1 15 | 16 | script: 17 | - test -z "$LINT" || make lint 18 | - make test 19 | - make bench 20 | 21 | after_success: 22 | - make cover 23 | - bash <(curl -s https://codecov.io/bash) 24 | -------------------------------------------------------------------------------- /vendor/go.uber.org/zap/checklicense.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ERROR_COUNT=0 4 | while read -r file 5 | do 6 | case "$(head -1 "${file}")" in 7 | *"Copyright (c) "*" Uber Technologies, Inc.") 8 | # everything's cool 9 | ;; 10 | *) 11 | echo "$file is missing license header." 12 | (( ERROR_COUNT++ )) 13 | ;; 14 | esac 15 | done < <(git ls-files "*\.go") 16 | 17 | exit $ERROR_COUNT 18 | -------------------------------------------------------------------------------- /vendor/go.uber.org/zap/go.mod: -------------------------------------------------------------------------------- 1 | module go.uber.org/zap 2 | 3 | go 1.13 4 | 5 | require ( 6 | github.com/pkg/errors v0.8.1 7 | github.com/stretchr/testify v1.4.0 8 | go.uber.org/atomic v1.5.0 9 | go.uber.org/multierr v1.3.0 10 | golang.org/x/lint v0.0.0-20190930215403-16217165b5de 11 | ) 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/lint/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go: 4 | - 1.10.x 5 | - 1.11.x 6 | - master 7 | 8 | go_import_path: golang.org/x/lint 9 | 10 | install: 11 | - go get -t -v ./... 12 | 13 | script: 14 | - go test -v -race ./... 15 | 16 | matrix: 17 | allow_failures: 18 | - go: master 19 | fast_finish: true 20 | -------------------------------------------------------------------------------- /vendor/golang.org/x/lint/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Golint 2 | 3 | ## Before filing an issue: 4 | 5 | ### Are you having trouble building golint? 6 | 7 | Check you have the latest version of its dependencies. Run 8 | ``` 9 | go get -u golang.org/x/lint/golint 10 | ``` 11 | If you still have problems, consider searching for existing issues before filing a new issue. 12 | 13 | ## Before sending a pull request: 14 | 15 | Have you understood the purpose of golint? Make sure to carefully read `README`. 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/lint/go.mod: -------------------------------------------------------------------------------- 1 | module golang.org/x/lint 2 | 3 | go 1.11 4 | 5 | require golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f 6 | -------------------------------------------------------------------------------- /vendor/golang.org/x/lint/golint/importcomment.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 The Go Authors. All rights reserved. 2 | // 3 | // Use of this source code is governed by a BSD-style 4 | // license that can be found in the LICENSE file or at 5 | // https://developers.google.com/open-source/licenses/bsd. 6 | 7 | // +build go1.12 8 | 9 | // Require use of the correct import path only for Go 1.12+ users, so 10 | // any breakages coincide with people updating their CI configs or 11 | // whatnot. 12 | 13 | package main // import "golang.org/x/lint/golint" 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/net/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/net/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/net/http2/.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | h2i/h2i 3 | -------------------------------------------------------------------------------- /vendor/golang.org/x/net/http2/Makefile: -------------------------------------------------------------------------------- 1 | curlimage: 2 | docker build -t gohttp2/curl . 3 | 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/net/http2/not_go111.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.11 6 | 7 | package http2 8 | 9 | import ( 10 | "net/http/httptrace" 11 | "net/textproto" 12 | ) 13 | 14 | func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { return false } 15 | 16 | func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) {} 17 | 18 | func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error { 19 | return nil 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/.gitignore: -------------------------------------------------------------------------------- 1 | _obj/ 2 | unix.test 3 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | // +build go1.9 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | type Signal = syscall.Signal 13 | type Errno = syscall.Errno 14 | type SysProcAttr = syscall.SysProcAttr 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_aix_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !gccgo 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go 11 | // 12 | 13 | TEXT ·syscall6(SB),NOSPLIT,$0-88 14 | JMP syscall·syscall6(SB) 15 | 16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSyscall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/asm_solaris_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !gccgo 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go 11 | // 12 | 13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88 14 | JMP syscall·sysvicall6(SB) 15 | 16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSysvicall6(SB) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | package unix 8 | 9 | const ( 10 | R_OK = 0x4 11 | W_OK = 0x2 12 | X_OK = 0x1 13 | ) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_big.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | // +build ppc64 s390x mips mips64 6 | 7 | package unix 8 | 9 | const isBigEndian = true 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/endian_little.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | // +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64 6 | 7 | package unix 8 | 9 | const isBigEndian = false 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Constants that were deprecated or moved to enums in the FreeBSD headers. Keep 6 | // them here for backwards compatibility. 7 | 8 | package unix 9 | 10 | const ( 11 | DLT_HHDLC = 0x79 12 | IPV6_MIN_MEMBERSHIPS = 0x1f 13 | IP_MAX_SOURCE_FILTER = 0x400 14 | IP_MIN_MEMBERSHIPS = 0x1f 15 | RT_CACHING_CONTEXT = 0x1 16 | RT_NORTREF = 0x2 17 | ) 18 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fcntl_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | import "unsafe" 8 | 9 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument. 10 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) { 11 | return fcntl(int(fd), cmd, arg) 12 | } 13 | 14 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. 15 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { 16 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) 17 | return err 18 | } 19 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: -------------------------------------------------------------------------------- 1 | // +build linux,386 linux,arm linux,mips linux,mipsle 2 | 3 | // Copyright 2014 The Go Authors. All rights reserved. 4 | // Use of this source code is governed by a BSD-style 5 | // license that can be found in the LICENSE file. 6 | 7 | package unix 8 | 9 | func init() { 10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's 11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. 12 | fcntl64Syscall = SYS_FCNTL64 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gccgo,linux,amd64 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //extern gettimeofday 12 | func realGettimeofday(*Timeval, *byte) int32 13 | 14 | func gettimeofday(tv *Timeval) (err syscall.Errno) { 15 | r := realGettimeofday(tv, nil) 16 | if r < 0 { 17 | return syscall.GetErrno() 18 | } 19 | return 0 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/pagesize_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | // For Unix, get the pagesize from the runtime. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getpagesize() int { 14 | return syscall.Getpagesize() 15 | } 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly 6 | 7 | package unix 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/readdirent_getdents.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix dragonfly freebsd linux netbsd openbsd 6 | 7 | package unix 8 | 9 | // ReadDirent reads directory entries from fd and writes them into buf. 10 | func ReadDirent(fd int, buf []byte) (n int, err error) { 11 | return Getdents(fd, buf) 12 | } 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | // Round the length of a raw sockaddr up to align it properly. 8 | func cmsgAlignOf(salen int) int { 9 | salign := SizeofPtr 10 | if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { 11 | // 64-bit Dragonfly before the September 2019 ABI changes still requires 12 | // 32-bit aligned access to network subsystem. 13 | salign = 4 14 | } 15 | return (salen + salign - 1) & ^(salign - 1) 16 | } 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,386,!go1.12 6 | 7 | package unix 8 | 9 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,amd64,!go1.12 6 | 7 | package unix 8 | 9 | //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,arm,!go1.12 6 | 7 | package unix 8 | 9 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { 10 | return 0, ENOSYS 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,arm64,!go1.12 6 | 7 | package unix 8 | 9 | func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { 10 | return 0, ENOSYS 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build amd64,linux 6 | // +build !gccgo 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | //go:noescape 13 | func gettimeofday(tv *Timeval) (err syscall.Errno) 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,!gccgo 6 | 7 | package unix 8 | 9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail. 10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 11 | 12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't 13 | // fail. 14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,!gccgo,386 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | 15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 17 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,gccgo,arm 6 | 7 | package unix 8 | 9 | import ( 10 | "syscall" 11 | "unsafe" 12 | ) 13 | 14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { 15 | var newoffset int64 16 | offsetLow := uint32(offset & 0xffffffff) 17 | offsetHigh := uint32((offset >> 32) & 0xffffffff) 18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) 19 | return newoffset, err 20 | } 21 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/syscall_unix_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris 6 | // +build !gccgo,!ppc64le,!ppc64 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 13 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 14 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 15 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 16 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go 386 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go amd64 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go arm 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go arm64 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows 6 | // +build go1.9 7 | 8 | package windows 9 | 10 | import "syscall" 11 | 12 | type Errno = syscall.Errno 13 | type SysProcAttr = syscall.SysProcAttr 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/empty.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.12 6 | 7 | // This file is here to allow bodyless functions with go:linkname for Go 1.11 8 | // and earlier (see https://golang.org/issue/23311). 9 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/mksyscall.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build generate 6 | 7 | package windows 8 | 9 | //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go 10 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows,!race 6 | 7 | package windows 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/str.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows 6 | 7 | package windows 8 | 9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency 10 | if val < 0 { 11 | return "-" + itoa(-val) 12 | } 13 | var buf [32]byte // big enough for int64 14 | i := len(buf) - 1 15 | for val >= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | Description [WSADESCRIPTION_LEN + 1]byte 11 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 12 | MaxSockets uint16 13 | MaxUdpDg uint16 14 | VendorInfo *byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Port uint16 21 | Proto *byte 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2011 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | MaxSockets uint16 11 | MaxUdpDg uint16 12 | VendorInfo *byte 13 | Description [WSADESCRIPTION_LEN + 1]byte 14 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Proto *byte 21 | Port uint16 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/sys/windows/types_windows_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package windows 6 | 7 | type WSAData struct { 8 | Version uint16 9 | HighVersion uint16 10 | Description [WSADESCRIPTION_LEN + 1]byte 11 | SystemStatus [WSASYS_STATUS_LEN + 1]byte 12 | MaxSockets uint16 13 | MaxUdpDg uint16 14 | VendorInfo *byte 15 | } 16 | 17 | type Servent struct { 18 | Name *byte 19 | Aliases **byte 20 | Port uint16 21 | Proto *byte 22 | } 23 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.10 6 | 7 | package bidirule 8 | 9 | func (t *Transformer) isFinal() bool { 10 | return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial 11 | } 12 | -------------------------------------------------------------------------------- /vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.10 6 | 7 | package bidirule 8 | 9 | func (t *Transformer) isFinal() bool { 10 | if !t.isRTL() { 11 | return true 12 | } 13 | return t.state == ruleLTRFinal || t.state == ruleRTLFinal || t.state == ruleInitial 14 | } 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/go/ast/astutil/util.go: -------------------------------------------------------------------------------- 1 | package astutil 2 | 3 | import "go/ast" 4 | 5 | // Unparen returns e with any enclosing parentheses stripped. 6 | func Unparen(e ast.Expr) ast.Expr { 7 | for { 8 | p, ok := e.(*ast.ParenExpr) 9 | if !ok { 10 | return e 11 | } 12 | e = p.X 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.11 6 | 7 | package gcimporter 8 | 9 | import "go/types" 10 | 11 | func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { 12 | return types.NewInterfaceType(methods, embeddeds) 13 | } 14 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/internal/event/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package event provides a set of packages that cover the main 6 | // concepts of telemetry in an implementation agnostic way. 7 | package event 8 | -------------------------------------------------------------------------------- /vendor/golang.org/x/tools/internal/packagesinternal/packages.go: -------------------------------------------------------------------------------- 1 | // Package packagesinternal exposes internal-only fields from go/packages. 2 | package packagesinternal 3 | 4 | import ( 5 | "golang.org/x/tools/internal/gocommand" 6 | ) 7 | 8 | var GetForTest = func(p interface{}) string { return "" } 9 | 10 | var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } 11 | 12 | var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} 13 | -------------------------------------------------------------------------------- /vendor/golang.org/x/xerrors/README: -------------------------------------------------------------------------------- 1 | This repository holds the transition packages for the new Go 1.13 error values. 2 | See golang.org/design/29934-error-values. 3 | -------------------------------------------------------------------------------- /vendor/golang.org/x/xerrors/codereview.cfg: -------------------------------------------------------------------------------- 1 | issuerepo: golang/go 2 | -------------------------------------------------------------------------------- /vendor/golang.org/x/xerrors/go.mod: -------------------------------------------------------------------------------- 1 | module golang.org/x/xerrors 2 | 3 | go 1.11 4 | -------------------------------------------------------------------------------- /vendor/golang.org/x/xerrors/internal/internal.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package internal 6 | 7 | // EnableTrace indicates whether stack information should be recorded in errors. 8 | var EnableTrace = true 9 | -------------------------------------------------------------------------------- /vendor/google.golang.org/grpc/AUTHORS: -------------------------------------------------------------------------------- 1 | Google Inc. 2 | -------------------------------------------------------------------------------- /vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Community Code of Conduct 2 | 3 | gRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). 4 | -------------------------------------------------------------------------------- /vendor/google.golang.org/grpc/GOVERNANCE.md: -------------------------------------------------------------------------------- 1 | This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md). 2 | -------------------------------------------------------------------------------- /vendor/google.golang.org/grpc/go.mod: -------------------------------------------------------------------------------- 1 | module google.golang.org/grpc 2 | 3 | go 1.11 4 | 5 | require ( 6 | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473 7 | github.com/envoyproxy/protoc-gen-validate v0.1.0 8 | github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b 9 | github.com/golang/mock v1.1.1 10 | github.com/golang/protobuf v1.3.2 11 | github.com/google/go-cmp v0.2.0 12 | golang.org/x/net v0.0.0-20190311183353-d8887717615a 13 | golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be 14 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a 15 | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/google.golang.org/grpc/install_gae.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TMP=$(mktemp -d /tmp/sdk.XXX) \ 4 | && curl -o $TMP.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip" \ 5 | && unzip -q $TMP.zip -d $TMP \ 6 | && export PATH="$PATH:$TMP/go_appengine" 7 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at https://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at https://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/encoding/protojson/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package protojson marshals and unmarshals protocol buffer messages as JSON 6 | // format. It follows the guide at 7 | // https://developers.google.com/protocol-buffers/docs/proto3#json. 8 | // 9 | // This package produces a different output than the standard "encoding/json" 10 | // package, which does not operate correctly on protocol buffer messages. 11 | package protojson 12 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/encoding/prototext/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package prototext marshals and unmarshals protocol buffer messages as the 6 | // textproto format. 7 | package prototext 8 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/errors/is_go113.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.13 6 | 7 | package errors 8 | 9 | import "errors" 10 | 11 | // Is is errors.Is. 12 | func Is(err, target error) bool { return errors.Is(err, target) } 13 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !protolegacy 6 | 7 | package flags 8 | 9 | const protoLegacy = false 10 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build protolegacy 6 | 7 | package flags 8 | 9 | const protoLegacy = true 10 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/genid/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package genid contains constants for declarations in descriptor.proto 6 | // and the well-known types. 7 | package genid 8 | 9 | import protoreflect "google.golang.org/protobuf/reflect/protoreflect" 10 | 11 | const GoogleProtobuf_package protoreflect.FullName = "google.protobuf" 12 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/genid/empty_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package genid 8 | 9 | import ( 10 | protoreflect "google.golang.org/protobuf/reflect/protoreflect" 11 | ) 12 | 13 | const File_google_protobuf_empty_proto = "google/protobuf/empty.proto" 14 | 15 | // Names for google.protobuf.Empty. 16 | const ( 17 | Empty_message_name protoreflect.Name = "Empty" 18 | Empty_message_fullname protoreflect.FullName = "google.protobuf.Empty" 19 | ) 20 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/genid/map_entry.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package genid 6 | 7 | import protoreflect "google.golang.org/protobuf/reflect/protoreflect" 8 | 9 | // Generic field names and numbers for synthetic map entry messages. 10 | const ( 11 | MapEntry_Key_field_name protoreflect.Name = "key" 12 | MapEntry_Value_field_name protoreflect.Name = "value" 13 | 14 | MapEntry_Key_field_number protoreflect.FieldNumber = 1 15 | MapEntry_Value_field_number protoreflect.FieldNumber = 2 16 | ) 17 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/genid/wrappers.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package genid 6 | 7 | import protoreflect "google.golang.org/protobuf/reflect/protoreflect" 8 | 9 | // Generic field name and number for messages in wrappers.proto. 10 | const ( 11 | WrapperValue_Value_field_name protoreflect.Name = "value" 12 | WrapperValue_Value_field_number protoreflect.FieldNumber = 1 13 | ) 14 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.12 6 | 7 | package impl 8 | 9 | import "reflect" 10 | 11 | func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() } 12 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !purego,!appengine 6 | 7 | package impl 8 | 9 | // When using unsafe pointers, we can just treat enum values as int32s. 10 | 11 | var ( 12 | coderEnumNoZero = coderInt32NoZero 13 | coderEnum = coderInt32 14 | coderEnumPtr = coderInt32Ptr 15 | coderEnumSlice = coderInt32Slice 16 | coderEnumPackedSlice = coderInt32PackedSlice 17 | ) 18 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/internal/impl/enum.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package impl 6 | 7 | import ( 8 | "reflect" 9 | 10 | pref "google.golang.org/protobuf/reflect/protoreflect" 11 | ) 12 | 13 | type EnumInfo struct { 14 | GoReflectType reflect.Type // int32 kind 15 | Desc pref.EnumDescriptor 16 | } 17 | 18 | func (t *EnumInfo) New(n pref.EnumNumber) pref.Enum { 19 | return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(pref.Enum) 20 | } 21 | func (t *EnumInfo) Descriptor() pref.EnumDescriptor { return t.Desc } 22 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/proto/proto_methods.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // The protoreflect build tag disables use of fast-path methods. 6 | // +build !protoreflect 7 | 8 | package proto 9 | 10 | import ( 11 | "google.golang.org/protobuf/reflect/protoreflect" 12 | "google.golang.org/protobuf/runtime/protoiface" 13 | ) 14 | 15 | const hasProtoMethods = true 16 | 17 | func protoMethods(m protoreflect.Message) *protoiface.Methods { 18 | return m.ProtoMethods() 19 | } 20 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/proto/proto_reflect.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // The protoreflect build tag disables use of fast-path methods. 6 | // +build protoreflect 7 | 8 | package proto 9 | 10 | import ( 11 | "google.golang.org/protobuf/reflect/protoreflect" 12 | "google.golang.org/protobuf/runtime/protoiface" 13 | ) 14 | 15 | const hasProtoMethods = false 16 | 17 | func protoMethods(m protoreflect.Message) *protoiface.Methods { 18 | return nil 19 | } 20 | -------------------------------------------------------------------------------- /vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package protoiface 6 | 7 | type MessageV1 interface { 8 | Reset() 9 | String() string 10 | ProtoMessage() 11 | } 12 | 13 | type ExtensionRangeV1 struct { 14 | Start, End int32 // both inclusive 15 | } 16 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.4.x" 5 | - "1.5.x" 6 | - "1.6.x" 7 | - "1.7.x" 8 | - "1.8.x" 9 | - "1.9.x" 10 | - "1.10.x" 11 | - "1.11.x" 12 | - "1.12.x" 13 | - "1.13.x" 14 | - "tip" 15 | 16 | go_import_path: gopkg.in/yaml.v2 17 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2011-2016 Canonical Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v2/go.mod: -------------------------------------------------------------------------------- 1 | module "gopkg.in/yaml.v2" 2 | 3 | require ( 4 | "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 5 | ) 6 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v3/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.4.x" 5 | - "1.5.x" 6 | - "1.6.x" 7 | - "1.7.x" 8 | - "1.8.x" 9 | - "1.9.x" 10 | - "1.10.x" 11 | - "1.11.x" 12 | - "1.12.x" 13 | - "1.13.x" 14 | - "1.14.x" 15 | - "tip" 16 | 17 | go_import_path: gopkg.in/yaml.v3 18 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v3/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2011-2016 Canonical Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /vendor/gopkg.in/yaml.v3/go.mod: -------------------------------------------------------------------------------- 1 | module "gopkg.in/yaml.v3" 2 | 3 | require ( 4 | "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 5 | ) 6 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/cmd/staticcheck/README.md: -------------------------------------------------------------------------------- 1 | # staticcheck 2 | 3 | _staticcheck_ offers extensive analysis of Go code, covering a myriad 4 | of categories. It will detect bugs, suggest code simplifications, 5 | point out dead code, and more. 6 | 7 | ## Installation 8 | 9 | See [the main README](https://github.com/dominikh/go-tools#installation) for installation instructions. 10 | 11 | ## Documentation 12 | 13 | Detailed documentation can be found on 14 | [staticcheck.io](https://staticcheck.io/docs/). 15 | 16 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/config/example.conf: -------------------------------------------------------------------------------- 1 | checks = ["all", "-ST1003", "-ST1014"] 2 | initialisms = ["ACL", "API", "ASCII", "CPU", "CSS", "DNS", 3 | "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", 4 | "IP", "JSON", "QPS", "RAM", "RPC", "SLA", 5 | "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", 6 | "UDP", "UI", "GID", "UID", "UUID", "URI", 7 | "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", 8 | "XSS", "SIP", "RTP"] 9 | dot_import_whitelist = [] 10 | http_status_code_whitelist = ["200", "400", "404", "500"] 11 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/facts/token.go: -------------------------------------------------------------------------------- 1 | package facts 2 | 3 | import ( 4 | "go/ast" 5 | "go/token" 6 | "reflect" 7 | 8 | "golang.org/x/tools/go/analysis" 9 | ) 10 | 11 | var TokenFile = &analysis.Analyzer{ 12 | Name: "tokenfileanalyzer", 13 | Doc: "creates a mapping of *token.File to *ast.File", 14 | Run: func(pass *analysis.Pass) (interface{}, error) { 15 | m := map[*token.File]*ast.File{} 16 | for _, af := range pass.Files { 17 | tf := pass.Fset.File(af.Pos()) 18 | m[tf] = af 19 | } 20 | return m, nil 21 | }, 22 | RunDespiteErrors: true, 23 | ResultType: reflect.TypeOf(map[*token.File]*ast.File{}), 24 | } 25 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/internal/robustio/robustio_other.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | //+build !windows,!darwin 6 | 7 | package robustio 8 | 9 | import ( 10 | "io/ioutil" 11 | "os" 12 | ) 13 | 14 | func rename(oldpath, newpath string) error { 15 | return os.Rename(oldpath, newpath) 16 | } 17 | 18 | func readFile(filename string) ([]byte, error) { 19 | return ioutil.ReadFile(filename) 20 | } 21 | 22 | func removeAll(path string) error { 23 | return os.RemoveAll(path) 24 | } 25 | 26 | func isEphemeralError(err error) bool { 27 | return false 28 | } 29 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/ir/identical.go: -------------------------------------------------------------------------------- 1 | // +build go1.8 2 | 3 | package ir 4 | 5 | import "go/types" 6 | 7 | var structTypesIdentical = types.IdenticalIgnoreTags 8 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/ir/identical_17.go: -------------------------------------------------------------------------------- 1 | // +build !go1.8 2 | 3 | package ir 4 | 5 | import "go/types" 6 | 7 | var structTypesIdentical = types.Identical 8 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/ir/staticcheck.conf: -------------------------------------------------------------------------------- 1 | # ssa/... is mostly imported from upstream and we don't want to 2 | # deviate from it too much, hence disabling SA1019 3 | checks = ["inherit", "-SA1019"] 4 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/ir/write.go: -------------------------------------------------------------------------------- 1 | package ir 2 | 3 | func NewJump(parent *BasicBlock) *Jump { 4 | return &Jump{anInstruction{block: parent}, ""} 5 | } 6 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/lint/lintutil/stats.go: -------------------------------------------------------------------------------- 1 | // +build !aix,!android,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris 2 | 3 | package lintutil 4 | 5 | import "os" 6 | 7 | var infoSignals = []os.Signal{} 8 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/lint/lintutil/stats_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin dragonfly freebsd netbsd openbsd 2 | 3 | package lintutil 4 | 5 | import ( 6 | "os" 7 | "syscall" 8 | ) 9 | 10 | var infoSignals = []os.Signal{syscall.SIGINFO} 11 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/lint/lintutil/stats_posix.go: -------------------------------------------------------------------------------- 1 | // +build aix android linux solaris 2 | 3 | package lintutil 4 | 5 | import ( 6 | "os" 7 | "syscall" 8 | ) 9 | 10 | var infoSignals = []os.Signal{syscall.SIGUSR1} 11 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/printf/fuzz.go: -------------------------------------------------------------------------------- 1 | // +build gofuzz 2 | 3 | package printf 4 | 5 | func Fuzz(data []byte) int { 6 | _, err := Parse(string(data)) 7 | if err == nil { 8 | return 1 9 | } 10 | return 0 11 | } 12 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/staticcheck/buildtag.go: -------------------------------------------------------------------------------- 1 | package staticcheck 2 | 3 | import ( 4 | "go/ast" 5 | "strings" 6 | 7 | "honnef.co/go/tools/code" 8 | ) 9 | 10 | func buildTags(f *ast.File) [][]string { 11 | var out [][]string 12 | for _, line := range strings.Split(code.Preamble(f), "\n") { 13 | if !strings.HasPrefix(line, "+build ") { 14 | continue 15 | } 16 | line = strings.TrimSpace(strings.TrimPrefix(line, "+build ")) 17 | fields := strings.Fields(line) 18 | out = append(out, fields) 19 | } 20 | return out 21 | } 22 | -------------------------------------------------------------------------------- /vendor/honnef.co/go/tools/version/buildinfo111.go: -------------------------------------------------------------------------------- 1 | // +build !go1.12 2 | 3 | package version 4 | 5 | func printBuildInfo() {} 6 | func buildInfoVersion() (string, bool) { return "", false } 7 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .docusaurus 4 | build -------------------------------------------------------------------------------- /website/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /website/blog/2019-05-30-sample.md: -------------------------------------------------------------------------------- 1 | --- 2 | slug: welcome 3 | title: Welcome 4 | author: Yangshun Tay 5 | author_title: Front End Engineer @ Facebook 6 | author_url: https://github.com/yangshun 7 | author_image_url: https://avatars0.githubusercontent.com/u/1315101?s=400&v=4 8 | tags: [facebook, hello, docusaurus] 9 | --- 10 | 11 | Blog features are powered by the blog plugin. Simply add files to the `blog` directory. It supports tags as well! 12 | 13 | Delete the whole directory if you don't want the blog features. As simple as that! 14 | -------------------------------------------------------------------------------- /website/docs/flows-rollbacks.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: flows.rollbacks 3 | title: Rollbacks 4 | sidebar_label: Rollbacks 5 | slug: /flows/rollbacks 6 | --- 7 | 8 | Rollbacks are called in a reversed chronological order when a call inside the flow fails. All rollbacks are called async and any unexpected errors are ignored. Rollback templates could only reference properties from any previous executed resource, the error resource, and input. 9 | 10 | ```hcl 11 | resource "log" { 12 | rollback "logger" "Log" { 13 | header { 14 | trace = "{{ trace:id }}" 15 | } 16 | 17 | message = "{{ error:message }}" 18 | } 19 | } 20 | ``` -------------------------------------------------------------------------------- /website/docs/installation-docker.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: installation.docker 3 | title: Semaphore Docker images 4 | sidebar_label: Docker 5 | slug: /installation/docker 6 | --- 7 | 8 | Official docker images are available on [Docker hub](https://hub.docker.com/r/jxapp/semaphore/tags). 9 | These images contain the Semaphore CLI. 10 | 11 | ```sh 12 | $ docker run jxapp/semaphore 13 | ``` -------------------------------------------------------------------------------- /website/docs/installation-source.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: installation.source 3 | title: Build from source 4 | sidebar_label: Build from source 5 | slug: /installation/source 6 | --- 7 | 8 | If you have a Go environment configured, you can install the development version of `semaphore` from 9 | the command line. This will build a binary for the machines CPU architecture and environment. 10 | While the development version is a good way to take a peek at 11 | `semaphore`'s latest features before they get released, be aware that it 12 | may have bugs. Officially released versions will generally be more 13 | stable. 14 | 15 | ```sh 16 | $ git clone https://github.com/jexia/semaphore.git 17 | $ go build -o semaphore ./cmd/semaphore 18 | ``` -------------------------------------------------------------------------------- /website/scripts/release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | set -e 4 | 5 | npm install 6 | npm run build 7 | 8 | git clone -b docs "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/jexia/semaphore.git" semaphore 9 | 10 | rm -rf ./semaphore/* 11 | mv ./build/* ./semaphore 12 | 13 | cd semaphore; 14 | 15 | git config user.email "action@github.com" 16 | git config user.name "Github Action" 17 | 18 | git add -A 19 | git commit -m 'build: 🏗️ automatically generated documentation' 20 | git push 21 | -------------------------------------------------------------------------------- /website/static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/website/static/.nojekyll -------------------------------------------------------------------------------- /website/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jexia/semaphore/182a82a458f989999543cc7ed56d9372b1e81691/website/static/img/favicon.ico --------------------------------------------------------------------------------