Machine is a library for creating data workflows.

Go PkgGoDev GoDoc Go Report Card Codacy Badge Codacy Badge Version Badge

Machine

Machine is a library for creating data workflows. These workflows can be either very concise or quite complex, even allowing for cycles for flows that need retry or self healing mechanisms.

It supports opentelemetry spans and metrics out of the box

It also supports building dynamic pipelines using

Components is a repository of different vertex and plugin implementations


Installation

Add the primary library to your project

  go get -u github.com/whitaker-io/machine

Data is a library for getting and setting values in a map[string]interface{}


Documentation

Gopher

Docs


Example

Basic receive -> process -> send Flow

  stream := NewStream("unique_id1", 
    func(c context.Context) chan []Data {
      channel := make(chan []Data)
    
      // setup channel to collect data as long as 
      // the context has not completed

      return channel
    },
    &Option{FIFO: boolP(false)},
    &Option{Metrics: boolP(true)},
    &Option{Span: boolP(false)},
  )

  stream.Builder().Map("unique_id2", 
      func(m Data) error {
        var err error

        // ...do some processing

        return err
      },
    ).Publish("publish_left_id", publishFN(func(d []data.Data) error {
      // send the data somewhere

      return nil
    }),
  )

  if err := stream.Run(context.Background()); err != nil {
    // Run will return an error in the case that 
    // one of the paths is not terminated (i.e. missing a Publish)
    panic(err)
  }

🤝 Contributing

Contributions, issues and feature requests are welcome.
Feel free to check issues page if you want to contribute.
Check the contributing guide.

Author

👤 Jonathan Whitaker

Show your support

Please ⭐️ this repository if this project helped you!


License

Machine is provided under the MIT License.

The MIT License (MIT)

Copyright (c) 2020 Jonathan Whitaker
Comments
  • fix(deps): update module go.opentelemetry.io/otel/metric to v1 - autoclosed

    fix(deps): update module go.opentelemetry.io/otel/metric to v1 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go.opentelemetry.io/otel/metric | require | major | v0.23.0 -> v1.1.0 |


    Release Notes

    open-telemetry/opentelemetry-go

    v1.1.0

    Compare Source

    Added
    • Add the "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc".WithGRPCConn option so the exporter can reuse an existing gRPC connection. (#​2002)
    • Add the go.opentelemetry.io/otel/semconv/v1.7.0 package. The package contains semantic conventions from the v1.7.0 version of the OpenTelemetry specification. (#​2320)
    • Add the go.opentelemetry.io/otel/semconv/v1.6.1 package. The package contains semantic conventions from the v1.6.1 version of the OpenTelemetry specification. (#​2321)
    • Add the go.opentelemetry.io/otel/semconv/v1.5.0 package. The package contains semantic conventions from the v1.5.0 version of the OpenTelemetry specification. (#​2322)
      • When upgrading from the semconv/v1.4.0 package note the following name changes:
        • K8SReplicasetUIDKey -> K8SReplicaSetUIDKey
        • K8SReplicasetNameKey -> K8SReplicaSetNameKey
        • K8SStatefulsetUIDKey -> K8SStatefulSetUIDKey
        • k8SStatefulsetNameKey -> K8SStatefulSetNameKey
        • K8SDaemonsetUIDKey -> K8SDaemonSetUIDKey
        • K8SDaemonsetNameKey -> K8SDaemonSetNameKey
    Changed
    • Links added to a span will be dropped by the SDK if they contain an invalid span context (#​2275).
    Fixed
    • The "go.opentelemetry.io/otel/semconv/v1.4.0".HTTPServerAttributesFromHTTPRequest now correctly only sets the HTTP client IP attribute even if the connection was routed with proxies and there are multiple addresses in the X-Forwarded-For header. (#​2282, #​2284)
    • The "go.opentelemetry.io/otel/semconv/v1.4.0".NetAttributesFromHTTPRequest function correctly handles IPv6 addresses as IP addresses and sets the correct net peer IP instead of the net peer hostname attribute. (#​2283, #​2285)
    • The simple span processor shutdown method deterministically returns the exporter error status if it simultaneously finishes when the deadline is reached. (#​2290, #​2289)

    v1.0.1

    Compare Source

    1.0.1 - 2021-10-01
    Fixed
    • json stdout exporter no longer crashes due to concurrency bug. (#​2265)
    Metrics 0.24.0 - 2021-10-01
    Changed
    • NoopMeterProvider is now private and NewNoopMeterProvider must be used to obtain a noopMeterProvider. (#​2237)
    • The Metric SDK Export() function takes a new two-level reader interface for iterating over results one instrumentation library at a time. (#​2197)
      • The former "go.opentelemetry.io/otel/sdk/export/metric".CheckpointSet is renamed Reader.
      • The new interface is named "go.opentelemetry.io/otel/sdk/export/metric".InstrumentationLibraryReader.

    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • chore(deps): update golangci/golangci-lint-action action to v3.3.0 - autoclosed

    chore(deps): update golangci/golangci-lint-action action to v3.3.0 - autoclosed

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golangci/golangci-lint-action | action | minor | v3.2.0 -> v3.3.0 |


    Release Notes

    golangci/golangci-lint-action

    v3.3.0

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [x] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update module go to 1.19

    chore(deps): update module go to 1.19

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go (source) | golang | minor | 1.18 -> 1.19 |


    Release Notes

    golang/go

    v1.19.2

    v1.19.1

    v1.19.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update github/codeql-action action to v2

    chore(deps): update github/codeql-action action to v2

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github/codeql-action | action | major | v1 -> v2 |


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Renovate will not automatically rebase this PR, because other commits have been found.

    🔕 Ignore: Close this PR and you won't be reminded about these updates again.


    • [ ] If you want to rebase/retry this PR, click this checkbox. ⚠ Warning: custom changes will be lost.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • chore(deps): update golangci/golangci-lint-action action to v3 - autoclosed

    chore(deps): update golangci/golangci-lint-action action to v3 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golangci/golangci-lint-action | action | major | v2.5.2 -> v3.1.0 |


    Release Notes

    golangci/golangci-lint-action

    v3.1.0

    Compare Source

    What's Changed

    New features
    CI
    Dependabot
    Misc

    New Contributors

    Full Changelog: https://github.com/golangci/golangci-lint-action/compare/v3...v3.1.0

    v3.0.0

    Compare Source

    What's Changed

    New Contributors

    Full Changelog: https://github.com/golangci/golangci-lint-action/compare/v2...v3.0.0


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • chore(deps): update actions/setup-go action to v3

    chore(deps): update actions/setup-go action to v3

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-go | action | major | v2 -> v3 |


    Release Notes

    actions/setup-go

    v3

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • chore(deps): update actions/checkout action to v3

    chore(deps): update actions/checkout action to v3

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | major | v2 -> v3 |


    Release Notes

    actions/checkout

    v3

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update module github.com/fasthttp/websocket to v1.5.0 - autoclosed

    fix(deps): update module github.com/fasthttp/websocket to v1.5.0 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/fasthttp/websocket | require | minor | v1.4.3 -> v1.5.0 |


    Release Notes

    fasthttp/websocket

    v1.5.0

    Compare Source

    v1.4.6

    Compare Source

    • fa3c588 chore(examples): add autobahn fuzzing client config (Sergio Andres Virviescas Santana)
    • 58fa447 feat: upgrade fasthttp to v1.33.0 (Sergio Andres Virviescas Santana)
    • 1e0770b chore: remove examples directory (Sergio Andres Virviescas Santana)
    • 8c5aabd Merge branch 'master' of https://github.com/gorilla/websocket (Sergio Andres Virviescas Santana)

    v1.4.5

    Compare Source

    • 31f2199 feat: upgrade fasthttp to v1.32.0 (Sergio Andres Virviescas Santana)

    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update opentelemetry-go monorepo - autoclosed

    fix(deps): update opentelemetry-go monorepo - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go.opentelemetry.io/otel | require | minor | v1.2.0 -> v1.6.3 | | go.opentelemetry.io/otel/metric | require | minor | v0.25.0 -> v0.29.0 | | go.opentelemetry.io/otel/trace | require | minor | v1.2.0 -> v1.6.3 |


    Release Notes

    open-telemetry/opentelemetry-go

    v1.6.3

    Compare Source

    Fixed
    • Allow non-comparable global MeterProvider, TracerProvider, and TextMapPropagator types to be set. (#​2772, #​2773)

    v1.6.2

    Compare Source

    1.6.2 - 2022-04-06
    Changed
    • Don't panic anymore when setting a global TracerProvider or TextMapPropagator to itself. (#​2749)
    • Upgrade go.opentelemetry.io/proto/otlp in go.opentelemetry.io/otel/exporters/otlp/otlptrace from v0.12.1 to v0.15.0. This replaces the use of the now deprecated InstrumentationLibrary and InstrumentationLibrarySpans types and fields in the proto library with the equivalent InstrumentationScope and ScopeSpans. (#​2748)

    v1.6.1

    Compare Source

    Fixed
    • The go.opentelemetry.io/otel/schema/* packages now use the correct schema URL for their SchemaURL constant. Instead of using "https://opentelemetry.io/schemas/v<version>" they now use the correct URL without a v prefix, "https://opentelemetry.io/schemas/<version>". (#​2743, #​2744)
    Security
    • Upgrade go.opentelemetry.io/proto/otlp from v0.12.0 to v0.12.1. This includes an indirect upgrade of github.com/grpc-ecosystem/grpc-gateway which resolves a vulnerability from gopkg.in/yaml.v2 in version v2.2.3. (#​2724, #​2728)

    v1.6.0

    Compare Source

    ⚠️ Notice ⚠️

    This update is a breaking change of the unstable Metrics API. Code instrumented with the go.opentelemetry.io/otel/metric will need to be modified.

    Added
    • Add metrics exponential histogram support. New mapping functions have been made available in sdk/metric/aggregator/exponential/mapping for other OpenTelemetry projects to take dependencies on. (#​2502)
    • Add Go 1.18 to our compatibility tests. (#​2679)
    • Allow configuring the Sampler with the OTEL_TRACES_SAMPLER and OTEL_TRACES_SAMPLER_ARG environment variables. (#​2305, #​2517)
    • Add the metric/global for obtaining and setting the global MeterProvider. (#​2660)
    Changed
    • The metrics API has been significantly changed to match the revised OpenTelemetry specification. High-level changes include:

      • Synchronous and asynchronous instruments are now handled by independent InstrumentProviders. These InstrumentProviders are managed with a Meter.
      • Synchronous and asynchronous instruments are grouped into their own packages based on value types.
      • Asynchronous callbacks can now be registered with a Meter.

      Be sure to check out the metric module documentation for more information on how to use the revised API. (#​2587, #​2660)

    Fixed
    • Fallback to general attribute limits when span specific ones are not set in the environment. (#​2675, #​2677)

    v1.5.0

    Compare Source

    Added
    • Log the Exporters configuration in the TracerProviders message. (#​2578)
    • Added support to configure the span limits with environment variables. The following environment variables are supported. (#​2606, #​2637)
      • OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT
      • OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
      • OTEL_SPAN_EVENT_COUNT_LIMIT
      • OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT
      • OTEL_SPAN_LINK_COUNT_LIMIT
      • OTEL_LINK_ATTRIBUTE_COUNT_LIMIT If the provided environment variables are invalid (negative), the default values would be used.
    • Rename the gc runtime name to go (#​2560)
    • Add resource container ID detection. (#​2418)
    • Add span attribute value length limit. The new AttributeValueLengthLimit field is added to the "go.opentelemetry.io/otel/sdk/trace".SpanLimits type to configure this limit for a TracerProvider. The default limit for this resource is "unlimited". (#​2637)
    • Add the WithRawSpanLimits option to go.opentelemetry.io/otel/sdk/trace. This option replaces the WithSpanLimits option. Zero or negative values will not be changed to the default value like WithSpanLimits does. Setting a limit to zero will effectively disable the related resource it limits and setting to a negative value will mean that resource is unlimited. Consequentially, limits should be constructed using NewSpanLimits and updated accordingly. (#​2637)
    Changed
    • Drop oldest tracestate Member when capacity is reached. (#​2592)
    • Add event and link drop counts to the exported data from the oltptrace exporter. (#​2601)
    • Unify path cleaning functionally in the otlpmetric and otlptrace configuration. (#​2639)
    • Change the debug message from the sdk/trace.BatchSpanProcessor to reflect the count is cumulative. (#​2640)
    • Introduce new internal envconfig package for OTLP exporters. (#​2608)
    • If http.Request.Host is empty, fall back to use URL.Host when populating http.host in the semconv packages. (#​2661)
    Fixed
    • Remove the OTLP trace exporter limit of SpanEvents when exporting. (#​2616)
    • Default to port 4318 instead of 4317 for the otlpmetrichttp and otlptracehttp client. (#​2614, #​2625)
    • Unlimited span limits are now supported (negative values). (#​2636, #​2637)
    Deprecated
    • Deprecated "go.opentelemetry.io/otel/sdk/trace".WithSpanLimits. Use WithRawSpanLimits instead. That option allows setting unlimited and zero limits, this option does not. This option will be kept until the next major version incremented release. (#​2637)

    v1.4.1

    Compare Source

    v1.4.0

    Compare Source

    Added
    • Use OTEL_EXPORTER_ZIPKIN_ENDPOINT environment variable to specify zipkin collector endpoint. (#​2490)
    • Log the configuration of TracerProviders, and Tracers for debugging. To enable use a logger with Verbosity (V level) >=1. (#​2500)
    • Added support to configure the batch span-processor with environment variables. The following environment variables are used. (#​2515)
      • OTEL_BSP_SCHEDULE_DELAY
      • OTEL_BSP_EXPORT_TIMEOUT
      • OTEL_BSP_MAX_QUEUE_SIZE.
      • OTEL_BSP_MAX_EXPORT_BATCH_SIZE
    Changed
    • Zipkin exporter exports Resource attributes in the Tags field. (#​2589)
    Deprecated
    • Deprecate module the go.opentelemetry.io/otel/sdk/export/metric. Use the go.opentelemetry.io/otel/sdk/metric module instead. (#​2382)
    • Deprecate "go.opentelemetry.io/otel/sdk/metric".AtomicFieldOffsets. (#​2445)
    Fixed
    • Fixed the instrument kind for noop async instruments to correctly report an implementation. (#​2461)
    • Fix UDP packets overflowing with Jaeger payloads. (#​2489, #​2512)
    • Change the otlpmetric.Client interface's UploadMetrics method to accept a single ResourceMetrics instead of a slice of them. (#​2491)
    • Specify explicit buckets in Prometheus example, fixing issue where example only has +inf bucket. (#​2419, #​2493)
    • W3C baggage will now decode urlescaped values. (#​2529)
    • Baggage members are now only validated once, when calling NewMember and not also when adding it to the baggage itself. (#​2522)
    • The order attributes are dropped from spans in the go.opentelemetry.io/otel/sdk/trace package when capacity is reached is fixed to be in compliance with the OpenTelemetry specification. Instead of dropping the least-recently-used attribute, the last added attribute is dropped. This drop order still only applies to attributes with unique keys not already contained in the span. If an attribute is added with a key already contained in the span, that attribute is updated to the new value being added. (#​2576)
    Removed

    v1.3.0

    Compare Source

    ⚠️ Notice ⚠️

    We have updated the project minimum supported Go version to 1.16

    Added
    • Added an internal Logger. This can be used by the SDK and API to provide users with feedback of the internal state. To enable verbose logs configure the logger which will print V(1) logs. For debugging information configure to print V(5) logs. (#​2343)
    • Add the WithRetry Option and the RetryConfig type to the go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp package to specify retry behavior consistently. (#​2425)
    • Add SpanStatusFromHTTPStatusCodeAndSpanKind to all semconv packages to return a span status code similar to SpanStatusFromHTTPStatusCode, but exclude 4XX HTTP errors as span errors if the span is of server kind. (#​2296)
    Changed
    • The "go.opentelemetry.io/otel/exporter/otel/otlptrace/otlptracegrpc".Client now uses the underlying gRPC ClientConn to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#​2329)
    • The "go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetricgrpc".Client now uses the underlying gRPC ClientConn to handle name resolution, TCP connection establishment (with retries and backoff) and TLS handshakes, and handling errors on established connections by re-resolving the name and reconnecting. (#​2425)
    • The "go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetricgrpc".RetrySettings type is renamed to RetryConfig. (#​2425)
    • The go.opentelemetry.io/otel/exporter/otel/* gRPC exporters now default to using the host's root CA set if none are provided by the user and WithInsecure is not specified. (#​2432)
    • Change resource.Default to be evaluated the first time it is called, rather than on import. This allows the caller the option to update OTEL_RESOURCE_ATTRIBUTES first, such as with os.Setenv. (#​2371)
    Fixed
    • The go.opentelemetry.io/otel/exporter/otel/* exporters are updated to handle per-signal and universal endpoints according to the OpenTelemetry specification. Any per-signal endpoint set via an OTEL_EXPORTER_OTLP_<signal>_ENDPOINT environment variable is now used without modification of the path. When OTEL_EXPORTER_OTLP_ENDPOINT is set, if it contains a path, that path is used as a base path which per-signal paths are appended to. (#​2433)
    • Basic metric controller updated to use sync.Map to avoid blocking calls (#​2381)
    • The go.opentelemetry.io/otel/exporter/jaeger correctly sets the otel.status_code value to be a string of ERROR or OK instead of an integer code. (#​2439, #​2440)
    Deprecated
    • Deprecated the "go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp".WithMaxAttempts Option, use the new WithRetry Option instead. (#​2425)
    • Deprecated the "go.opentelemetry.io/otel/exporter/otel/otlpmetric/otlpmetrichttp".WithBackoff Option, use the new WithRetry Option instead. (#​2425)
    Removed
    • Remove the metric Processor's ability to convert cumulative to delta aggregation temporality. (#​2350)
    • Remove the metric Bound Instruments interface and implementations. (#​2399)
    • Remove the metric MinMaxSumCount kind aggregation and the corresponding OTLP export path. (#​2423)
    • Metric SDK removes the "exact" aggregator for histogram instruments, as it performed a non-standard aggregation for OTLP export (creating repeated Gauge points) and worked its way into a number of confusing examples. (#​2348)

    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update module github.com/mitchellh/mapstructure to v1.5.0 - autoclosed

    fix(deps): update module github.com/mitchellh/mapstructure to v1.5.0 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/mitchellh/mapstructure | require | minor | v1.4.2 -> v1.5.0 |


    Release Notes

    mitchellh/mapstructure

    v1.5.0

    Compare Source

    v1.4.3

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update module github.com/gofiber/fiber/v2 to v2.32.0 - autoclosed

    fix(deps): update module github.com/gofiber/fiber/v2 to v2.32.0 - autoclosed

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/gofiber/fiber/v2 | require | minor | v2.21.0 -> v2.32.0 |


    Release Notes

    gofiber/fiber

    v2.32.0

    Compare Source

    🚀 New

    • Support adding queries to RedirectToRoute (#​1858) https://docs.gofiber.io/api/ctx#redirecttoroute
    • Add AllParams method (#​1853) https://docs.gofiber.io/api/ctx#allparams
    • Add context Writef feature function (#​1841) https://docs.gofiber.io/api/ctx#writef

    🧹 Updates

    • Use encoding/json (#​1851) https://docs.gofiber.io/guide/faster-fiber
    • Bump github.com/valyala/fasthttp from 1.34.0 to 1.35.0 (#​1849)
    • RFC: Return an instance of *fiber.Error when no handler found (#​1847) https://docs.gofiber.io/extra/faq#how-do-i-handle-custom-404-responses

    🐛 Fixes

    📚 Documentation

    Thank you @​asyslinux, @​codemicro, @​efectn and @​jfcg for making this update possible.

    v2.31.0

    Compare Source

    🚀 New

    • Allow parsing of square bracket query param (#​1818)
    • Change name to get URL from (#​1831) https://docs.gofiber.io/api/ctx#getrouteurl

    🧹 Updates

    Thank you @​jfcg, @​ninadingole and @​sujit-baniya for making this update possible.

    v2.30.0

    Compare Source

    🚀 New

    • Add initial support for hooks (#​1777) https://docs.gofiber.io/guide/hooks

    🧹 Updates

    • Add go1.18 to tests and docs (#​1819)

    🐛 Fixes

    • Limiter middleware db connection (#​1813)

    Thank you @​efectn and @​qracer for making this update possible.

    v2.29.0

    Compare Source

    🚀 New

    • Cache middleware: Store e2e headers. (#​1807) https://docs.gofiber.io/api/middleware/cache#config

    🧹 Updates

    • Bump github.com/valyala/fasthttp from 1.33.0 to 1.34.0 (#​1811)
    • Bump goccy/go-json to v0.9.5 (#​1808)
    • Optimize App.buildTree() (#​1809)

    🐛 Fixes

    📚 Documentation

    • Update some translation (#​1815)
    • Cache middleware: Fix comment typo in manager.go. (#​1804)
    • Fix goreportcard & pkg.go.dev links in READMEs (#​1798)
    • Update turkish readme (#​1800)
    • Update readme - cleanup (#​1794)

    Thank you @​FlameMida, @​efectn, @​jfcg and @​thylong for making this update possible.

    v2.28.0

    Compare Source

    🚀 New

    • Update TLS Config & Add ListenMutualTLS (#​1761) https://docs.gofiber.io/api/app#listentls https://docs.gofiber.io/api/app#listenmutualtls

    🐛 Fixes

    • Restore Original URL of the context after changing it (#​1788)
    • Fix for "Why net.Addr is fiber.testAddr, not *net.TCPAddr?🤗 #​1574" (#​1784)
    • utils.TrimBytes should trim all content (#​1779)

    📚 Documentation

    • Inconsistents of storage (#​1787)
    • Fixing a mistake of the comment in the limiter package (#​1790)
    • Translate some words to bahasa(ID) (#​1780)
    • Add SSE example (#​1776)

    Thank you @​efectn, @​fufuok, @​geet, @​qracer and @​rendiputra for making this update possible.

    v2.27.0

    Compare Source

    🚀 New

    • Bind support for render (#​1754) https://docs.gofiber.io/api/ctx#bind
    • Add RedirectToRoute and RedirectBack (#​1750) https://docs.gofiber.io/api/ctx#redirecttoroute https://docs.gofiber.io/api/ctx#redirectback
    • Session Only Cookies (#​1752) https://docs.gofiber.io/api/ctx#cookie https://docs.gofiber.io/api/middleware/csrf
    • Add ability to restart route handling (#​1739) https://docs.gofiber.io/api/ctx#restartrouting
    • Add direct download option when serving static files (#​1729) https://docs.gofiber.io/api/app#static
    • SaveFile to default External Storage (#​1557) https://docs.gofiber.io/api/ctx#savefiletostorage

    🔙 Reverted ⚠️

    • Backwards incompatible change to fiber.Error (#​1768) ⚠️ We have decided to remove the fiber.Errors method and set the fiber.Error to the state before 2.25.0 due to the not downward compatible changes added in the last versions

    🧹 Updates

    • Bump: goccy/go-json to 0.9.4 (#​1771)
    • Change default gc interval of internal/memory (#​1756)
    • middleware/limiter: Fix file names (#​1747) (#​1748)
    • Bump github.com/valyala/fasthttp from 1.32.0 to 1.33.0 (#​1744)

    🐛 Fixes

    📚 Documentation

    Thank you @​Aliqyan, @​Lian1230, @​NorbertHauriel, @​Trim21, @​abhi12299, @​apoq, @​balcieren, @​bigflood, @​efectn, @​liaohongxing, @​mtneug and @​sujit-baniya for making this update possible.

    v2.26.0

    Compare Source

    🚀 New

    • Add Next to Pprof and Expvar middlewares. (#​1737) https://docs.gofiber.io/api/middleware/pprof https://docs.gofiber.io/api/middleware/expvar
    • Add retryIf function to client agent (#​1726) https://docs.gofiber.io/api/client#retryif
    • Add ReqHeaderParser. (#​1721) https://docs.gofiber.io/api/ctx#reqheaderparser
    • Add Route() method like Chi router. (#​1713) https://docs.gofiber.io/api/app#route
    • Pass all locals to ctx.Render (#​1693) https://docs.gofiber.io/api/fiber#config - PassLocalsToViews

    🧹 Updates

    • limiter: clarify variable name 'expire' (#​1742)
    • Added HEAD method to caching (#​1730)

    🐛 Fixes

    • Fix route naming when to use group in group. (#​1736)
    • Fix NewErrors() and Improve NewError() (#​1728) https://docs.gofiber.io/api/fiber#newerror https://docs.gofiber.io/api/fiber#newerrors

    📚 Documentation

    Thank you @​NorbertHauriel, @​balcieren, @​cenkkoroglu, @​efectn, @​eozer, @​jessequinn, @​kingdevnl and @​vecpeng for making this update possible.

    v2.25.0

    Compare Source

    🚀 New

    • Add function NewErrors to create multiple new errors (#​1701) https://docs.gofiber.io/api/fiber#newerrors

    🧹 Updates

    • Bump github.com/valyala/fasthttp from 1.31.0 to 1.32.0 (#​1700)
    • Update goccy/go-json to 0.9.3. (#​1709, #​1719)
    • Change json tag for EnablePrintRoutes (#​1702) https://docs.gofiber.io/api/fiber#config

    🐛 Fixes

    📚 Documentation

    Thank you @​ahmethakanbesel, @​amir9480, @​bl0cknumber, @​clickthisnick, @​efectn, @​rendiputra, @​roj1512 and @​vecpeng for making this update possible.

    v2.24.0

    Compare Source

    🚀 New

    • Add GetRespHeader, GetReqHeaders and TagReqHeaders for logger mw (#​1678) https://docs.gofiber.io/api/ctx#getreqheaders https://docs.gofiber.io/api/ctx#getrespheaders https://docs.gofiber.io/api/middleware/logger#constants - TagReqHeaders
    • Print all routes message when server starts (#​1677) https://docs.gofiber.io/api/fiber#config - EnablePrintRoutes
    • Add method the get registered handler count. (#​1672) https://docs.gofiber.io/api/app#handlerscount
    • Add function to check if request came from localhost (#​1671) https://docs.gofiber.io/api/ctx#isfromlocal
    • Add route naming feature. (#​1650) https://docs.gofiber.io/api/app#name

    🧹 Updates

    • Improve printRoutesMessage (#​1681)
    • Rename handlerCount to handlersCount (#​1674)
    • Add no-color compatibility (#​1646)

    🐛 Fixes

    • Fix using IP ranges in config.TrustedProxies (#​1607) (#​1614)
    • Middleware/csrf: unmatched token returns nil error (#​1667)
    • goccy/go-json for go1.18-beta1. (#​1673)
    • Error handler of app not saved when mounted in group (#​1649)

    📚 Documentation

    Thank you @​efectn, @​hi019, @​ichxxx, @​sangjinsu, @​sixcolors and @​vecpeng for making this update possible.

    v2.23.0

    Compare Source

    🚀 New

    • Add disable html support to monitor middleware. (#​1620) https://docs.gofiber.io/api/middleware/monitor#config
    • Recover middleware: Added, fiber.Ctx as a first paremeter to StackTrace (#​1623) https://docs.gofiber.io/api/middleware/recover#config breaking change to be aware of

    🧹 Updates

    • Improvements for logger middleware (#​1645)
    • middleware/session: CookieSameSite default "Lax" (#​1638) https://docs.gofiber.io/api/middleware/session#config breaking change to be aware of
    • middleware/csrf: CookieSameSite default "Lax" (#​1640) https://docs.gofiber.io/api/middleware/csrf#config breaking change to be aware of

    🐛 Fixes

    • Update goccy/go-json to 0.8.1 (#​1644)

    Thank you @​efectn, @​sixcolors and @​turgayozgur for making this update possible.

    v2.22.0

    Compare Source

    🚀 New

    • [Cache] add ExpirationGenerator for generate custom Expiration (#​1618)

    🧹 Updates

    📚 Documentation

    Thank you @​Gusted, @​djunny, @​liaohongxing and @​mancix for making this update possible.


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • chore(deps): update golangci/golangci-lint-action action to v3.3.1

    chore(deps): update golangci/golangci-lint-action action to v3.3.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golangci/golangci-lint-action | action | patch | v3.3.0 -> v3.3.1 |


    Release Notes

    golangci/golangci-lint-action

    v3.3.1

    Compare Source

    What's Changed

    Full Changelog: https://github.com/golangci/golangci-lint-action/compare/v3...v3.3.1


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Example ?

    Example ?

    Is your feature request related to a problem? Please describe.

    Love the architecture but its currently all library based and was hoping for an example so i can try it out and see if its a good fit.

    Describe the solution you'd like A repo with an example Or just an example in this repo...

    thanks again @jonathan-whitaker for this project.

  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    dockerfile
    .devcontainer/Dockerfile
    • golang 1
    github-actions
    .github/workflows/codeql-analysis.yml
    • actions/checkout v3
    • github/codeql-action v2
    • github/codeql-action v2
    • github/codeql-action v2
    .github/workflows/go.yml
    • actions/setup-go v3
    • actions/checkout v3
    • golangci/golangci-lint-action v3.3.0
    • brpaz/godacov-action v1.1.1
    gomod
    go.mod
    • go 1.19

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
Baker is a high performance, composable and extendable data-processing pipeline for the big data era

Baker is a high performance, composable and extendable data-processing pipeline for the big data era. It shines at converting, processing, extracting or storing records (structured data), applying whatever transformation between input and output through easy-to-write filters.

Dec 14, 2022
Dud is a lightweight tool for versioning data alongside source code and building data pipelines.

Dud Website | Install | Getting Started | Source Code Dud is a lightweight tool for versioning data alongside source code and building data pipelines.

Jan 1, 2023
CUE is an open source data constraint language which aims to simplify tasks involving defining and using data.

CUE is an open source data constraint language which aims to simplify tasks involving defining and using data.

Jan 1, 2023
xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL.

xyr [WIP] xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL. Supported Drivers

Dec 2, 2022
A library for performing data pipeline / ETL tasks in Go.
A library for performing data pipeline / ETL tasks in Go.

Ratchet A library for performing data pipeline / ETL tasks in Go. The Go programming language's simplicity, execution speed, and concurrency support m

Jan 19, 2022
DEPRECATED: Data collection and processing made easy.

This project is deprecated. Please see this email for more details. Heka Data Acquisition and Processing Made Easy Heka is a tool for collecting and c

Nov 30, 2022
Open source framework for processing, monitoring, and alerting on time series data

Kapacitor Open source framework for processing, monitoring, and alerting on time series data Installation Kapacitor has two binaries: kapacitor – a CL

Dec 24, 2022
A distributed, fault-tolerant pipeline for observability data

Table of Contents What Is Veneur? Use Case See Also Status Features Vendor And Backend Agnostic Modern Metrics Format (Or Others!) Global Aggregation

Dec 25, 2022
Kanzi is a modern, modular, expendable and efficient lossless data compressor implemented in Go.

kanzi Kanzi is a modern, modular, expendable and efficient lossless data compressor implemented in Go. modern: state-of-the-art algorithms are impleme

Dec 22, 2022
Data syncing in golang for ClickHouse.
Data syncing in golang for ClickHouse.

ClickHouse Data Synchromesh Data syncing in golang for ClickHouse. based on go-zero ARCH A typical data warehouse architecture design of data sync Aut

Jan 1, 2023
sq is a command line tool that provides jq-style access to structured data sources such as SQL databases, or document formats like CSV or Excel.

sq: swiss-army knife for data sq is a command line tool that provides jq-style access to structured data sources such as SQL databases, or document fo

Jan 1, 2023
churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline applications.

Churro - ETL for Kubernetes churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline appli

Mar 10, 2022
Stream data into Google BigQuery concurrently using InsertAll() or BQ Storage.

bqwriter A Go package to write data into Google BigQuery concurrently with a high throughput. By default the InsertAll() API is used (REST API under t

Dec 16, 2022
Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development data
Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development data

Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development data throughout the software development life cycle (SDLC) for engineering teams.

Dec 30, 2022
Provider-generic-workflows - A generic provider which uses argo workflows to define the backend actions.

provider-generic-workflows provider-generic-workflows is a generic provider which uses argo workflows for managing the external resource. This will re

Jan 1, 2022
Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.

Packer Website: https://www.packer.io IRC: #packer-tool on Freenode Mailing list: Google Groups Packer is a tool for building identical machine images

Jan 8, 2023
A fast responsive, machine learning, conversational dialog engine for creating chat bots, written in Go.

chatbot English | 简体中文 项目说明 chatbot 是一个通过已知对话数据集快速生成回答的 Go 问答引擎。比 ChatterBot 快非常多,我们在1.2亿对话上的对比结果是:ChatterBot 回答需要21秒,chatbot 只需要18毫秒。 bot 问答引擎 cli tr

Jan 6, 2023
Tool for creating identical machine images for multiple platforms from a single source configuration.

Packer Packer is a tool for building identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs o

Jan 18, 2022
AwGo — A Go library for Alfred workflows
 AwGo — A Go library for Alfred workflows

AwGo — A Go library for Alfred workflows Full-featured library to build lightning-fast workflows in a jiffy. Features Installation & usage Documentati

Dec 30, 2022
Assume AWS IAM roles from GitHub Actions workflows with no stored secrets
Assume AWS IAM roles from GitHub Actions workflows with no stored secrets

AWS IAM roles for GitHub Actions workflows Background and rationale GitHub Actions are a pretty nice solution for CI/CD. Where they fall short is inte

Feb 12, 2022