From bc7b57a3539e638ecb43ebbfdeee877092db6b81 Mon Sep 17 00:00:00 2001 From: Luke Shay Date: Fri, 28 Oct 2022 16:30:01 -0500 Subject: [PATCH] Allow ESBuild rules to be specified --- .changeset/fuzzy-knives-fold.md | 5 + .github/workflows/ci.yml | 5 +- apps/cli/src/cmds/build/index.ts | 9 - apps/cli/src/cmds/build/package.ts | 91 -------- apps/cli/src/utils/swc-util.ts | 9 - apps/cli/src/utils/ts-util.ts | 28 --- apps/cli/tsconfig.json | 6 - apps/infra/bin/infra.ts | 13 -- apps/infra/package.json | 8 +- .../scripts/invalidate-cloudfront-cache.sh | 13 ++ apps/infra/src/bin/infra.ts | 20 ++ .../{ => src}/lib/stacks/astro-aws-stack.ts | 15 +- apps/www/package.json | 2 +- apps/www/public/images/astro-aws.jpg | Bin 0 -> 106516 bytes apps/www/public/{ => images}/astro-aws.png | Bin apps/www/public/images/astro-aws.webp | Bin 0 -> 12498 bytes constraints.pro | 2 +- package.json | 5 +- packages/astro-aws-adapter/package.json | 9 +- packages/astro-aws-adapter/src/args.ts | 3 + packages/astro-aws-adapter/src/index.ts | 1 + packages/astro-aws-adapter/src/shared.ts | 22 +- packages/astro-aws-constructs/package.json | 6 +- {apps/cli => scripts}/bin.js | 0 scripts/build-package.sh | 16 -- {apps/cli => scripts}/package.json | 16 +- scripts/src/cmds/build.ts | 42 ++++ {apps/cli => scripts}/src/index.ts | 2 +- scripts/src/utils/esbuild-util.ts | 49 ++++ scripts/src/utils/pkg-util.ts | 3 + scripts/src/utils/ts-util.ts | 18 ++ scripts/tsconfig.json | 3 + tsconfig.base.json | 5 +- yarn.lock | 213 ++---------------- 34 files changed, 242 insertions(+), 397 deletions(-) create mode 100644 .changeset/fuzzy-knives-fold.md delete mode 100644 apps/cli/src/cmds/build/index.ts delete mode 100644 apps/cli/src/cmds/build/package.ts delete mode 100644 apps/cli/src/utils/swc-util.ts delete mode 100644 apps/cli/src/utils/ts-util.ts delete mode 100644 apps/cli/tsconfig.json delete mode 100644 apps/infra/bin/infra.ts create mode 100755 apps/infra/scripts/invalidate-cloudfront-cache.sh create mode 100644 apps/infra/src/bin/infra.ts rename apps/infra/{ => src}/lib/stacks/astro-aws-stack.ts (76%) create mode 100644 apps/www/public/images/astro-aws.jpg rename apps/www/public/{ => images}/astro-aws.png (100%) create mode 100644 apps/www/public/images/astro-aws.webp rename {apps/cli => scripts}/bin.js (100%) delete mode 100755 scripts/build-package.sh rename {apps/cli => scripts}/package.json (73%) create mode 100644 scripts/src/cmds/build.ts rename {apps/cli => scripts}/src/index.ts (62%) create mode 100644 scripts/src/utils/esbuild-util.ts create mode 100644 scripts/src/utils/pkg-util.ts create mode 100644 scripts/src/utils/ts-util.ts create mode 100644 scripts/tsconfig.json diff --git a/.changeset/fuzzy-knives-fold.md b/.changeset/fuzzy-knives-fold.md new file mode 100644 index 0000000..6ef9b0c --- /dev/null +++ b/.changeset/fuzzy-knives-fold.md @@ -0,0 +1,5 @@ +--- +"@astro-aws/adapter": patch +--- + +Allow override of certain ESBuild options diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e193ca3..a8db059 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,13 +33,16 @@ jobs: - yarn test - yarn constraints - yarn changeset status --since=main + node_version: + - 14 + - 16 steps: - uses: actions/checkout@v3 with: fetch-depth: 100 - uses: actions/setup-node@v3 with: - node-version: "16" + node-version: ${{ matrix.node_version }} cache: "yarn" - run: git fetch origin main:main - run: yarn install --mode=skip-build && ${{ matrix.script }} diff --git a/apps/cli/src/cmds/build/index.ts b/apps/cli/src/cmds/build/index.ts deleted file mode 100644 index a8e24ac..0000000 --- a/apps/cli/src/cmds/build/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Command } from "commander"; - -import { buildPackageCommand } from "./package.js"; - -const buildCommand = new Command("build"); - -buildCommand.addCommand(buildPackageCommand); - -export { buildCommand }; diff --git a/apps/cli/src/cmds/build/package.ts b/apps/cli/src/cmds/build/package.ts deleted file mode 100644 index a701e57..0000000 --- a/apps/cli/src/cmds/build/package.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { writeFile, mkdir, rm, readFile } from "node:fs/promises"; -import { dirname, join } from "node:path"; -import { cwd } from "node:process"; - -import type { Options } from "@swc/core"; -import { transformFile } from "@swc/core"; -import { Command } from "commander"; -import { globby } from "globby"; -import type ts from "typescript"; - -import { emitTsDeclaration, findTsConfig } from "../../utils/ts-util.js"; -import { findSwcConfig } from "../../utils/swc-util.js"; - -const buildPackageCommand = new Command("package"); - -buildPackageCommand.description( - "Builds the TypeScript files in the src directory and outputs them to the dist directory.", -); - -buildPackageCommand.action(async () => { - const files = await globby(["src/**/*.ts", "src/**/*.tsx"]); - const currentDir = cwd(); - - console.log("Building files:", files); - - const rawTsConfig = await readFile(findTsConfig(currentDir), "utf-8"); - const tsConfig = JSON.parse(rawTsConfig) as ts.CompilerOptions; - const swcConfigPath = findSwcConfig(currentDir); - - const swcConfig: Options = swcConfigPath - ? (JSON.parse(await readFile(swcConfigPath, "utf-8")) as Options) - : { - jsc: { - parser: { - syntax: "typescript", - }, - target: "es2020", - }, - minify: true, - module: { - strict: true, - strictMode: true, - type: "es6", - }, - sourceMaps: "inline", - }; - - const codeToWrite = await Promise.all( - files - .map((file) => join(currentDir, file)) - .map(async (file) => { - const output = await transformFile(file, swcConfig); - - const typeDefs = emitTsDeclaration(file, { - ...tsConfig, - declaration: true, - emitDeclarationOnly: true, - }); - - return { - code: output.code, - file: file.replace("src/", "dist/").replace(".t", ".j"), - typeDefs, - typeDefsFile: file.replace("src/", "dist/").replace(".t", ".d.t"), - }; - }), - ); - - console.log( - "Writing files:", - codeToWrite.flatMap(({ file, typeDefsFile }) => [ - file.replace(`${currentDir}/`, ""), - typeDefsFile.replace(`${currentDir}/`, ""), - ]), - ); - - await rm("dist", { - force: true, - recursive: true, - }); - - await Promise.all( - codeToWrite.map(async ({ file, code, typeDefs, typeDefsFile }) => { - await mkdir(dirname(file), { recursive: true }); - await writeFile(file, code); - await writeFile(typeDefsFile, typeDefs); - }), - ); -}); - -export { buildPackageCommand }; diff --git a/apps/cli/src/utils/swc-util.ts b/apps/cli/src/utils/swc-util.ts deleted file mode 100644 index bca358c..0000000 --- a/apps/cli/src/utils/swc-util.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { resolve } from "node:path"; -import { existsSync } from "node:fs"; - -export const findSwcConfig = (currentDir: string) => - existsSync(`${currentDir}/.swcrc`) - ? resolve(`${currentDir}/tsconfig.build.json`) - : existsSync(`${currentDir}/../../.swcrc`) - ? resolve(`${currentDir}/../../.swcrc`) - : undefined; diff --git a/apps/cli/src/utils/ts-util.ts b/apps/cli/src/utils/ts-util.ts deleted file mode 100644 index 044a251..0000000 --- a/apps/cli/src/utils/ts-util.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { resolve } from "node:path"; -import { existsSync } from "node:fs"; - -import ts from "typescript"; - -export const findTsConfig = (currentDir: string) => - resolve( - existsSync(`${currentDir}/tsconfig.build.json`) - ? `${currentDir}/tsconfig.build.json` - : existsSync(`${currentDir}/tsconfig.json`) - ? `${currentDir}/tsconfig.json` - : `${currentDir}/../../tsconfig.base.json`, - ); - -export const emitTsDeclaration = (fileName: string, options: ts.CompilerOptions) => { - const createdFiles: Record = {}; - const host = ts.createCompilerHost(options); - - host.writeFile = (fileName2: string, contents: string) => { - createdFiles[fileName2] = contents; - }; - - const tsProgram = ts.createProgram([fileName], options, host); - - tsProgram.emit(); - - return createdFiles[fileName.replace(".t", ".d.t")] as unknown as string; -}; diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json deleted file mode 100644 index 24dc496..0000000 --- a/apps/cli/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true - }, - "extends": "../../tsconfig.base.json" -} diff --git a/apps/infra/bin/infra.ts b/apps/infra/bin/infra.ts deleted file mode 100644 index 452a008..0000000 --- a/apps/infra/bin/infra.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as cdk from "aws-cdk-lib"; -import { Tags } from "aws-cdk-lib"; - -import { AstroAWSStack } from "../lib/stacks/astro-aws-stack.js"; - -const app = new cdk.App(); - -const stack = new AstroAWSStack(app, "AstroAWSStack", { - domainName: "astro-aws.lshay.dev", -}); - -Tags.of(app).add("Project", "AstroAWS"); -Tags.of(stack).add("Project", "AstroAWS"); diff --git a/apps/infra/package.json b/apps/infra/package.json index 7c00e32..bd7009c 100644 --- a/apps/infra/package.json +++ b/apps/infra/package.json @@ -14,9 +14,9 @@ "dist" ], "scripts": { - "build": "yarn clean && tsc -p tsconfig.build.json", - "clean": "rimraf dist cdk.out", + "build": "scripts build --skip-tsc", "deploy": "cdk deploy --all --require-approval never", + "invalidate": "./scripts/invalidate-cloudfront-cache.sh", "synth": "cdk synth" }, "eslintConfig": { @@ -34,13 +34,13 @@ "constructs": "^10.1.139", "eslint": "^8.26.0", "prettier": "^2.7.1", - "rimraf": "^3.0.2", "typescript": "^4.8.4" }, "devDependencies": { + "@astro-aws/scripts": "workspace:^", "eslint-config-get-off-my-lawn": "^7.1.0" }, "engines": { - "node": ">=16.0.0" + "node": "14.x || 16.x" } } diff --git a/apps/infra/scripts/invalidate-cloudfront-cache.sh b/apps/infra/scripts/invalidate-cloudfront-cache.sh new file mode 100755 index 0000000..0786206 --- /dev/null +++ b/apps/infra/scripts/invalidate-cloudfront-cache.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +AWS_ACCOUNT="$(aws sts get-caller-identity --query Account --output text ${@})" +AWS_REGION="$(aws configure get region ${@})" + +DISTIRBUTION_ID="$(aws cloudformation describe-stacks --stack-name "AstroAWSStack-${AWS_ACCOUNT}-${AWS_REGION}" --query "Stacks[0].Outputs[?OutputKey=='CloudFrontDistributionId'].OutputValue" --output text ${@})" +PATHS="$(jq -r ". | join(\" \")" ../www/dist/invalidationPaths.json)" + +echo "Invalidating CloudFront distribution ${DISTIRBUTION_ID}: ${PATHS}" + +aws cloudfront create-invalidation --distribution-id "${DISTIRBUTION_ID}" --paths ${PATHS} ${@} diff --git a/apps/infra/src/bin/infra.ts b/apps/infra/src/bin/infra.ts new file mode 100644 index 0000000..8eadbfb --- /dev/null +++ b/apps/infra/src/bin/infra.ts @@ -0,0 +1,20 @@ +import * as process from "node:process"; + +import { App, Tags } from "aws-cdk-lib"; + +import { AstroAWSStack } from "../lib/stacks/astro-aws-stack.js"; + +const app = new App(); + +const env = { + account: process.env.AWS_ACCOUNT ?? String(process.env.CDK_DEFAULT_ACCOUNT), + region: process.env.AWS_REGION ?? String(process.env.CDK_DEFAULT_REGION), +}; + +const stack = new AstroAWSStack(app, `AstroAWSStack-${env.account}-${env.region}`, { + domainName: "astro-aws.lshay.dev", + env, +}); + +Tags.of(app).add("Project", "AstroAWS"); +Tags.of(stack).add("Project", "AstroAWS"); diff --git a/apps/infra/lib/stacks/astro-aws-stack.ts b/apps/infra/src/lib/stacks/astro-aws-stack.ts similarity index 76% rename from apps/infra/lib/stacks/astro-aws-stack.ts rename to apps/infra/src/lib/stacks/astro-aws-stack.ts index 75781f5..0e697e0 100644 --- a/apps/infra/lib/stacks/astro-aws-stack.ts +++ b/apps/infra/src/lib/stacks/astro-aws-stack.ts @@ -1,5 +1,5 @@ import * as cdk from "aws-cdk-lib"; -import type { StackProps } from "aws-cdk-lib"; +import { CfnOutput, StackProps } from "aws-cdk-lib"; import { Duration } from "aws-cdk-lib"; import { Certificate } from "aws-cdk-lib/aws-certificatemanager"; import { @@ -14,6 +14,7 @@ import { AstroAWSConstruct } from "@astro-aws/constructs"; export type AstroAWSProps = StackProps & { domainName: string; + env: StackProps["env"]; }; export class AstroAWSStack extends cdk.Stack { @@ -26,12 +27,12 @@ export class AstroAWSStack extends cdk.Stack { domainName, }); - new AstroAWSConstruct(this, "AstroAWSConstruct", { + const astroAwsConstruct = new AstroAWSConstruct(this, "AstroAWSConstruct", { distributionProps: { certificate, defaultBehavior: { cachePolicy: new CachePolicy(this, "CachePolicy", { - cachePolicyName: "AstroAwsCachePolicy", + cachePolicyName: `${id}-CachePolicy`, cookieBehavior: CacheCookieBehavior.all(), defaultTtl: Duration.days(1), enableAcceptEncodingBrotli: true, @@ -50,5 +51,13 @@ export class AstroAWSStack extends cdk.Stack { }, websitePath: "../www", }); + + new CfnOutput(this, "CloudFrontDistributionId", { + value: astroAwsConstruct.distribution.distributionId, + }); + + new CfnOutput(this, "CloudFrontDomainName", { + value: astroAwsConstruct.distribution.distributionDomainName, + }); } } diff --git a/apps/www/package.json b/apps/www/package.json index 91568c6..afe93c7 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -64,6 +64,6 @@ "prettier": "^2.7.1" }, "engines": { - "node": ">=16.0.0" + "node": "14.x || 16.x" } } diff --git a/apps/www/public/images/astro-aws.jpg b/apps/www/public/images/astro-aws.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31f4078d7aea0747d5ec7c01cd35a68a97374e9f GIT binary patch literal 106516 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 wk}P}At@rOe6Py_2Qw+>$1g)rIJuyK( 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ΝOjIxMF48}E1R{TQX=CQKX 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