Skip to content

Commit 01c844d

Browse files
pieheduardoboucas
andauthored
feat: image cdn support (#232)
* feat: initial image cdn handling * chore: fix lint * chore: format * chore: TODO note about serverAddress * feat: warn about invalid remote patterns * test: add tests for remote images * test: add tests for images endpoint and request method * post-merge fixes * adjust feature support matrix * test: adjust assertions for added feature * chore: fix lint * test: adjust to not use .bytes(), match mocked response, not response text * fix: use originServerAddress * chore: remove not existign server.d.ts from package.json#files * test: use mock logger from dev-utils * test: add first local image test * test: add tests for resizing * test: test image cdn handling in vite * chore: add jsdoc for generateImage * chore: no need to supress n/no-unsupported-features/node-builtins * docs: fix shield url for netlify/images * fix: drop node 18 * chore: add images to .release-please-manifest.json * fix: spin up server when images are enabled and there is no origin server provided * chore: fix lint * Update packages/images/src/main.ts Co-authored-by: Eduardo Bouças <mail@eduardoboucas.com> * chore: http.createServer -> HTTPServer * fix: early bail to limit nesting * refactor: create helper function for HTTPServer handler that serves random images * test: use own http server for testing remote images instead of unsplash * fix: move image matching to before function matching * fix: handle image cdn rewrites * fix: log error when image generation for tests fails --------- Co-authored-by: Eduardo Bouças <mail@eduardoboucas.com>
1 parent d546c22 commit 01c844d

23 files changed

+2412
-97
lines changed

.github/workflows/release-please.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ jobs:
7070
if: ${{ steps.release.outputs['packages/headers--release_created'] }}
7171
env:
7272
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
73+
- run: npm publish packages/images/ --provenance --access=public
74+
if: ${{ steps.release.outputs['packages/images--release_created'] }}
75+
env:
76+
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
7377
- run: npm publish packages/redirects/ --provenance --access=public
7478
if: ${{ steps.release.outputs['packages/redirects--release_created'] }}
7579
env:

.release-please-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"packages/edge-functions": "2.14.3",
77
"packages/functions": "4.1.3",
88
"packages/headers": "2.0.1",
9+
"packages/images": "0.0.0",
910
"packages/otel": "3.0.2",
1011
"packages/redirects": "3.0.1",
1112
"packages/runtime": "4.0.2",

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ npm run build --workspaces=true
2929
| 🔧 [@netlify/dev-utils](packages/dev-utils) | TypeScript utilities for the local emulation of the Netlify environment | [![npm version](https://img.shields.io/npm/v/@netlify/dev-utils.svg)](https://www.npmjs.com/package/@netlify/dev-utils) |
3030
|[@netlify/functions](packages/functions) | TypeScript utilities for interacting with Netlify Functions | [![npm version](https://img.shields.io/npm/v/@netlify/functions.svg)](https://www.npmjs.com/package/@netlify/functions) |
3131
| 📋 [@netlify/headers](packages/headers) | TypeScript implementation of Netlify's headers engine | [![npm version](https://img.shields.io/npm/v/@netlify/headers.svg)](https://www.npmjs.com/package/@netlify/headers) |
32+
| 🖼️ [@netlify/images](packages/images) | TypeScript utilities for interacting with Netlify Image CDN | [![npm version](https://img.shields.io/npm/v/@netlify/images.svg)](https://www.npmjs.com/package/@netlify/images) |
3233
| 🔍 [@netlify/otel](packages/otel) | TypeScript utilities to interact with Netlify's OpenTelemetry | [![npm version](https://img.shields.io/npm/v/@netlify/otel.svg)](https://www.npmjs.com/package/@netlify/otel) |
3334
| 🔄 [@netlify/redirects](packages/redirects) | TypeScript implementation of Netlify's rewrites and redirects engine | [![npm version](https://img.shields.io/npm/v/@netlify/redirects.svg)](https://www.npmjs.com/package/@netlify/redirects) |
3435
| 🏛️ [@netlify/runtime](packages/runtime) | Netlify compute runtime | [![npm version](https://img.shields.io/npm/v/@netlify/runtime.svg)](https://www.npmjs.com/package/@netlify/runtime) |

eslint_temporary_suppressions.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,14 @@ export default [
539539
'@typescript-eslint/no-unused-vars': 'off',
540540
},
541541
},
542+
{
543+
files: ['packages/images/src/main.test.ts'],
544+
rules: {
545+
'@typescript-eslint/no-non-null-assertion': 'off',
546+
'@typescript-eslint/no-unsafe-assignment': 'off',
547+
'@typescript-eslint/no-unsafe-member-access': 'off',
548+
},
549+
},
542550
{
543551
files: ['packages/otel/src/bootstrap/main.ts'],
544552
rules: {

0 commit comments

Comments
 (0)