diff --git a/.github/workflows/pr.yml b/.github/workflows/checks.yml similarity index 90% rename from .github/workflows/pr.yml rename to .github/workflows/checks.yml index 1f7d2ec..77b1295 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/checks.yml @@ -1,14 +1,15 @@ -name: Pull Request +name: Checks on: pull_request: - branches: [ main ] push: branches: [ main ] + release: + types: [ published ] jobs: - test: - name: test + check: + name: Checks runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 2aaaa56..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Release - -on: - release: - types: [ published ] - -jobs: - release: - name: release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: ~/.elm - key: ${{ runner.os }}-${{ hashFiles('**/elm.json') }} - - uses: cachix/install-nix-action@v21 - with: - nix_path: nixpkgs=https://github.com/NixOS/nixpkgs/archive/fc541b860a28.tar.gz - - uses: cachix/cachix-action@v12 - with: - name: elm-aws-cloudfront - authToken: ${{secrets.CACHIX_AUTH_TOKEN}} - - name: Run tests - run: nix-shell --run "elm-coverage" - - name: Make build - run: nix-shell --run "elm make --output /dev/null" - - name: Make docs - run: nix-shell --run "elm make --docs docs.json" - - name: Publish - run: nix-shell --run "elm publish" \ No newline at end of file diff --git a/docs.json b/docs.json deleted file mode 100644 index b0c30e4..0000000 --- a/docs.json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"CloudFront","comment":" The `cloudFront` function requires an **input** and **output** ports as a tuple parameter\nin order to communicate with the JavaScript handler code.\n\n port module MyModule exposing (..)\n\n import CloudFront exposing (cloudFront)\n import Json.Decode as Decode\n import Json.Encode as Encode\n\n port inputEvent : (Decode.Value -> msg) -> Sub msg\n\n port outputEvent : Encode.Value -> Cmd msg\n\nThe ports must have the same type as the example.\n\n@docs cloudFront\n\n\n## Core Model and Msg\n\n@docs Model, Msg\n\n@docs platformWorker\n\n","unions":[{"name":"Msg","comment":" Msg is used to contain the result/error of decoding the input event from ports.\n","args":[],"cases":[["Input",["Result.Result Json.Decode.Error CloudFront.Lambda.InputEvent"]]]}],"aliases":[{"name":"Model","comment":" Model contains the decoded [InputEvent](./CloudFront-Lambda#InputEvent) and the\noptional flags passed on init.\n","args":["a"],"type":"{ event : Maybe.Maybe CloudFront.Lambda.InputEvent, flags : a }"}],"values":[{"name":"cloudFront","comment":" Create a CloudFront origin handler to handle the request/response\nof your CloudFront distribution:\n\n import CloudFront.Lambda exposing (originRequest, toRequest)\n\n ( inputPort, outputPort )\n |> (originRequest\n (\\{ request } _ -> request |> toRequest)\n |> cloudFront\n )\n\n","type":"(flags -> Maybe.Maybe CloudFront.Lambda.InputOrigin -> CloudFront.Lambda.OutputEvent) -> ( (Json.Decode.Value -> CloudFront.Msg) -> Platform.Sub.Sub CloudFront.Msg, Json.Encode.Value -> Platform.Cmd.Cmd CloudFront.Msg ) -> Platform.Program flags (CloudFront.Model flags) CloudFront.Msg"},{"name":"platformWorker","comment":" ","type":"(flags -> Maybe.Maybe CloudFront.Lambda.InputOrigin -> CloudFront.Lambda.OutputEvent) -> ( (Json.Decode.Value -> CloudFront.Msg) -> Platform.Sub.Sub CloudFront.Msg, Json.Encode.Value -> Platform.Cmd.Cmd CloudFront.Msg ) -> { init : flags -> ( CloudFront.Model flags, Platform.Cmd.Cmd CloudFront.Msg ), update : CloudFront.Msg -> CloudFront.Model flags -> ( CloudFront.Model flags, Platform.Cmd.Cmd CloudFront.Msg ), subscriptions : CloudFront.Model flags -> Platform.Sub.Sub CloudFront.Msg }"}],"binops":[]},{"name":"CloudFront.Header","comment":" Handle AWS CloudFront request and response headers.\n\nFor more documentation see [working with policies in AWS CloudFront developer guide\n](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/working-with-policies.html).\n\n\n## Handlers\n\n@docs withHeader, withHeaders\n\n\n## Types\n\n@docs Header, Headers\n\n","unions":[],"aliases":[{"name":"Header","comment":" A single header is defined as key value type\n\n header : Header\n header =\n { key = \"user-agent\", value = \"Amazon CloudFront\" }\n\n","args":[],"type":"{ key : String.String, value : String.String }"},{"name":"Headers","comment":" A group of headers are defined as a dictionary of key -> key value type\n\n header : Headers\n header =\n Dict.singleton \"user-agent\" [ { key = \"user-agent\", value = \"Amazon CloudFront\" } ]\n\n headers : Headers\n headers =\n Dict.fromList\n [ ( \"user-agent\", [ { key = \"user-agent\", value = \"Amazon CloudFront\" } ] )\n , ( \"host\", [ { key = \"host\", value = \"example.org\" } ] )\n ]\n\n","args":[],"type":"Dict.Dict String.String (List.List CloudFront.Header.Header)"}],"values":[{"name":"withHeader","comment":" Append a new header to the existing headers dictionary\n\n headers : { headers : Headers } -> { headers : Headers }\n headers =\n withHeader\n { key = \"cache-control\", value = \"public, max-age=10000\" }\n\n","type":"CloudFront.Header.Header -> { event | headers : CloudFront.Header.Headers } -> { event | headers : CloudFront.Header.Headers }"},{"name":"withHeaders","comment":" Append multiple headers to the exising headers dictionary\n\n headers : { headers : Headers } -> { headers : Headers }\n headers =\n withHeaders\n [ { key = \"x-frame-options\", value = \"DENY\" }\n , { key = \"content-security-policy\", value = \"default-src 'self';\" }\n ]\n\n","type":"List.List CloudFront.Header.Header -> { event | headers : CloudFront.Header.Headers } -> { event | headers : CloudFront.Header.Headers }"}],"binops":[]},{"name":"CloudFront.Lambda","comment":" Edge@Lambda handlers for AWS CloudFront request and response events.\n\nRead more about [Edge@Lambda event structure](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html).\n\n\n## Handlers\n\n@docs originRequest, originResponse\n\n\n## Output\n\n@docs toRequest, toResponse\n\n\n## Types\n\nTypes for the [lambda event structure](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html).\n\n@docs InputEvent, Record, InputOrigin, OriginResponse, OriginRequest\n@docs Config, Request, Response\n@docs Origin, S3Origin, S3OriginData, CustomOrigin, CustomOriginData\n@docs OutputEvent\n\n","unions":[{"name":"InputOrigin","comment":" ","args":[],"cases":[["InputResponse",["CloudFront.Lambda.OriginResponse"]],["InputRequest",["CloudFront.Lambda.OriginRequest"]]]},{"name":"Origin","comment":" ","args":[],"cases":[["OriginS3",["CloudFront.Lambda.S3Origin"]],["OriginCustom",["CloudFront.Lambda.CustomOrigin"]],["OriginUnknown",[]]]},{"name":"OutputEvent","comment":" ","args":[],"cases":[["OutputResponse",["CloudFront.Lambda.Response"]],["OutputRequest",["CloudFront.Lambda.Request"]]]}],"aliases":[{"name":"Config","comment":" ","args":[],"type":"{ distributionDomainName : String.String, distributionId : String.String, eventType : String.String, requestId : String.String }"},{"name":"CustomOrigin","comment":" ","args":[],"type":"{ custom : CloudFront.Lambda.CustomOriginData }"},{"name":"CustomOriginData","comment":" ","args":[],"type":"{ customHeaders : CloudFront.Header.Headers, domainName : String.String, keepaliveTimeout : Basics.Int, path : String.String, port_ : Basics.Int, protocol : String.String, readTimeout : Basics.Int, sslProtocols : List.List String.String }"},{"name":"InputEvent","comment":" ","args":[],"type":"{ records : List.List CloudFront.Lambda.Record }"},{"name":"OriginRequest","comment":" ","args":[],"type":"{ config : CloudFront.Lambda.Config, request : CloudFront.Lambda.Request }"},{"name":"OriginResponse","comment":" ","args":[],"type":"{ config : CloudFront.Lambda.Config, request : CloudFront.Lambda.Request, response : CloudFront.Lambda.Response }"},{"name":"Record","comment":" ","args":[],"type":"{ cf : CloudFront.Lambda.InputOrigin }"},{"name":"Request","comment":" ","args":[],"type":"{ clientIp : String.String, headers : CloudFront.Header.Headers, method : String.String, origin : CloudFront.Lambda.Origin, querystring : Maybe.Maybe String.String, uri : String.String }"},{"name":"Response","comment":" ","args":[],"type":"{ status : String.String, statusDescription : String.String, headers : CloudFront.Header.Headers }"},{"name":"S3Origin","comment":" ","args":[],"type":"{ s3 : CloudFront.Lambda.S3OriginData }"},{"name":"S3OriginData","comment":" ","args":[],"type":"{ authMethod : String.String, customHeaders : CloudFront.Header.Headers, domainName : String.String, path : String.String, region : String.String }"}],"values":[{"name":"originRequest","comment":" Handler for [origin request events](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#example-origin-request)\n\n originRequest\n (\\{ request } flags ->\n { request | uri = \"new-uri\" }\n |> toRequest\n )\n\n","type":"(CloudFront.Lambda.OriginRequest -> flags -> CloudFront.Lambda.OutputEvent) -> flags -> Maybe.Maybe CloudFront.Lambda.InputOrigin -> CloudFront.Lambda.OutputEvent"},{"name":"originResponse","comment":" Handler for [origin response events](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-response-origin)\n\n originResponse\n (\\{ response, request } _ ->\n response\n |> withHeader\n { key = \"cache-control\", value = \"public, max-age=31536000\" }\n |> toResponse\n )\n\n","type":"(CloudFront.Lambda.OriginResponse -> flags -> CloudFront.Lambda.OutputEvent) -> flags -> Maybe.Maybe CloudFront.Lambda.InputOrigin -> CloudFront.Lambda.OutputEvent"},{"name":"toRequest","comment":" Map request to output event, to be used with [`originRequest`](#originRequest) or [`originResponse`](#originResponse)\n","type":"CloudFront.Lambda.Request -> CloudFront.Lambda.OutputEvent"},{"name":"toResponse","comment":" Map response to output event, to be used with [`originResponse`](#originResponse)\n","type":"CloudFront.Lambda.Response -> CloudFront.Lambda.OutputEvent"}],"binops":[]}] \ No newline at end of file diff --git a/shell.nix b/shell.nix index 1dcbb9c..d3d0842 100644 --- a/shell.nix +++ b/shell.nix @@ -5,6 +5,11 @@ let sha256 = "0929i9d331zgv86imvsdzyfsrnr7zwhb7sdh8sw5zzsp7qsxycja"; }) { }; + localPublish = pkgs.writeScriptBin "localPublish" '' + ${pkgs.elmPackages.elm}/bin/elm make --docs docs.json + ${pkgs.elmPackages.elm}/bin/elm publish + ''; + in pkgs.mkShell rec { buildInputs = with pkgs.elmPackages; [ elm @@ -12,5 +17,6 @@ in pkgs.mkShell rec { elm-format elm-coverage elm-doc-preview + localPublish ]; } \ No newline at end of file