@sveltejs/adapter-netlify 3.0.2 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
1
  import './shims.js';
2
2
  import { Server } from '0SERVER';
3
+ import { createReadStream } from 'node:fs';
4
+ import { Readable } from 'node:stream';
3
5
  import 'node:buffer';
4
6
  import 'node:crypto';
5
7
 
@@ -260,6 +262,16 @@ function split_headers(headers) {
260
262
  };
261
263
  }
262
264
 
265
+ /**
266
+ * Converts a file on disk to a readable stream
267
+ * @param {string} file
268
+ * @returns {ReadableStream}
269
+ * @since 2.4.0
270
+ */
271
+ function createReadableStream(file) {
272
+ return /** @type {ReadableStream} */ (Readable.toWeb(createReadStream(file)));
273
+ }
274
+
263
275
  /**
264
276
  * @param {import('@sveltejs/kit').SSRManifest} manifest
265
277
  * @returns {import('@netlify/functions').Handler}
@@ -268,7 +280,8 @@ function init(manifest) {
268
280
  const server = new Server(manifest);
269
281
 
270
282
  let init_promise = server.init({
271
- env: process.env
283
+ env: process.env,
284
+ read: (file) => createReadableStream(`.netlify/server/${file}`)
272
285
  });
273
286
 
274
287
  return async (event, context) => {
package/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { appendFileSync, existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join, resolve, posix } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
+ import { builtinModules } from 'node:module';
4
5
  import esbuild from 'esbuild';
5
6
  import toml from '@iarna/toml';
6
7
 
@@ -27,6 +28,7 @@ import toml from '@iarna/toml';
27
28
  * }} HandlerManifest
28
29
  */
29
30
 
31
+ const name = '@sveltejs/adapter-netlify';
30
32
  const files = fileURLToPath(new URL('./files', import.meta.url).href);
31
33
 
32
34
  const edge_set_in_env_var =
@@ -38,7 +40,7 @@ const FUNCTION_PREFIX = 'sveltekit-';
38
40
  /** @type {import('./index.js').default} */
39
41
  export default function ({ split = false, edge = edge_set_in_env_var } = {}) {
40
42
  return {
41
- name: '@sveltejs/adapter-netlify',
43
+ name,
42
44
 
43
45
  async adapt(builder) {
44
46
  if (!builder.routes) {
@@ -92,6 +94,19 @@ export default function ({ split = false, edge = edge_set_in_env_var } = {}) {
92
94
  } else {
93
95
  await generate_lambda_functions({ builder, split, publish });
94
96
  }
97
+ },
98
+
99
+ supports: {
100
+ // reading from the filesystem only works in serverless functions
101
+ read: ({ route }) => {
102
+ if (edge) {
103
+ throw new Error(
104
+ `${name}: Cannot use \`read\` from \`$app/server\` in route \`${route.id}\` when using edge functions`
105
+ );
106
+ }
107
+
108
+ return true;
109
+ }
95
110
  }
96
111
  };
97
112
  }
@@ -151,7 +166,12 @@ async function generate_edge_functions({ builder }) {
151
166
  format: 'esm',
152
167
  platform: 'browser',
153
168
  sourcemap: 'linked',
154
- target: 'es2020'
169
+ target: 'es2020',
170
+
171
+ // Node built-ins are allowed, but must be prefixed with `node:`
172
+ // https://docs.netlify.com/edge-functions/api/#runtime-environment
173
+ external: builtinModules.map((id) => `node:${id}`),
174
+ alias: Object.fromEntries(builtinModules.map((id) => [id, `node:${id}`]))
155
175
  });
156
176
 
157
177
  writeFileSync('.netlify/edge-functions/manifest.json', JSON.stringify(edge_manifest));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/adapter-netlify",
3
- "version": "3.0.2",
3
+ "version": "4.1.0",
4
4
  "description": "A SvelteKit adapter that creates a Netlify app",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,10 +39,10 @@
39
39
  "rollup": "^4.9.5",
40
40
  "typescript": "^5.3.3",
41
41
  "vitest": "^1.2.0",
42
- "@sveltejs/kit": "^2.3.3"
42
+ "@sveltejs/kit": "^2.4.1"
43
43
  },
44
44
  "peerDependencies": {
45
- "@sveltejs/kit": "^2.0.0"
45
+ "@sveltejs/kit": "^2.4.0"
46
46
  },
47
47
  "scripts": {
48
48
  "dev": "node -e \"fs.rmSync('files', { force: true, recursive: true })\" && rollup -cw",