@vercel/static-build 2.9.13 → 2.9.14

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.
Files changed (2) hide show
  1. package/dist/index.js +167 -9
  2. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -11012,6 +11012,105 @@ var require_frameworks = __commonJS({
11012
11012
  }
11013
11013
  ]
11014
11014
  },
11015
+ {
11016
+ name: "Axum",
11017
+ slug: "axum",
11018
+ experimental: true,
11019
+ supersedes: ["rust"],
11020
+ logo: "https://api-frameworks.vercel.sh/framework-logos/axum.svg",
11021
+ tagline: "Ergonomic and modular web framework built with Tokio, Tower, and Hyper.",
11022
+ description: "An Axum application deployed as a serverless function.",
11023
+ website: "https://github.com/tokio-rs/axum",
11024
+ useRuntime: { src: "src/main.rs", use: "@vercel/rust" },
11025
+ ignoreRuntimes: ["@vercel/rust"],
11026
+ detectors: {
11027
+ every: [
11028
+ {
11029
+ path: "Cargo.toml",
11030
+ matchContent: "axum\\s*="
11031
+ },
11032
+ {
11033
+ path: "src/main.rs"
11034
+ }
11035
+ ]
11036
+ },
11037
+ settings: {
11038
+ installCommand: {
11039
+ placeholder: "None"
11040
+ },
11041
+ buildCommand: {
11042
+ placeholder: "None",
11043
+ value: null
11044
+ },
11045
+ devCommand: {
11046
+ placeholder: "`cargo run`",
11047
+ value: null
11048
+ },
11049
+ outputDirectory: {
11050
+ value: "N/A"
11051
+ }
11052
+ },
11053
+ getOutputDirName: async () => "public",
11054
+ defaultRoutes: [
11055
+ {
11056
+ handle: "filesystem"
11057
+ },
11058
+ {
11059
+ src: "/(.*)",
11060
+ dest: "/src/main"
11061
+ }
11062
+ ]
11063
+ },
11064
+ {
11065
+ name: "Actix Web",
11066
+ slug: "actix-web",
11067
+ experimental: true,
11068
+ runtimeFramework: true,
11069
+ supersedes: ["rust"],
11070
+ logo: "https://api-frameworks.vercel.sh/framework-logos/actix-web.svg",
11071
+ tagline: "A powerful, pragmatic, and extremely fast web framework for Rust.",
11072
+ description: "An Actix Web application deployed as a serverless function.",
11073
+ website: "https://actix.rs",
11074
+ useRuntime: { src: "src/main.rs", use: "@vercel/rust" },
11075
+ ignoreRuntimes: ["@vercel/rust"],
11076
+ detectors: {
11077
+ every: [
11078
+ {
11079
+ path: "Cargo.toml",
11080
+ matchContent: "actix-web\\s*="
11081
+ },
11082
+ {
11083
+ path: "src/main.rs"
11084
+ }
11085
+ ]
11086
+ },
11087
+ settings: {
11088
+ installCommand: {
11089
+ placeholder: "None"
11090
+ },
11091
+ buildCommand: {
11092
+ placeholder: "None",
11093
+ value: null
11094
+ },
11095
+ devCommand: {
11096
+ placeholder: "`cargo run`",
11097
+ value: null
11098
+ },
11099
+ outputDirectory: {
11100
+ value: "N/A"
11101
+ }
11102
+ },
11103
+ getOutputDirName: async () => "public",
11104
+ defaultRoutes: [
11105
+ {
11106
+ handle: "filesystem"
11107
+ },
11108
+ {
11109
+ src: "/(.*)",
11110
+ dest: "/src/main"
11111
+ }
11112
+ ]
11113
+ },
11015
11114
  {
11016
11115
  name: "Node",
11017
11116
  slug: "node",
@@ -22712,6 +22811,33 @@ var require_resolve = __commonJS({
22712
22811
  var SERVICE_NAME_REGEX = /^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$/;
22713
22812
  var DNS_LABEL_RE = /^(?!-)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;
22714
22813
  var ENV_PREFIX_RE = /^[A-Z][A-Z0-9_]*_$/;
22814
+ async function getServiceFs(fs5, serviceName, root) {
22815
+ if (!root) {
22816
+ return { fs: fs5 };
22817
+ }
22818
+ const normalizedRoot = import_path7.posix.normalize(root);
22819
+ if (!await fs5.hasPath(normalizedRoot)) {
22820
+ return {
22821
+ fs: fs5,
22822
+ error: {
22823
+ code: "ROOT_NOT_FOUND",
22824
+ message: `Service "${serviceName}" has root "${root}" but that directory does not exist.`,
22825
+ serviceName
22826
+ }
22827
+ };
22828
+ }
22829
+ if (await fs5.isFile(normalizedRoot)) {
22830
+ return {
22831
+ fs: fs5,
22832
+ error: {
22833
+ code: "ROOT_NOT_DIRECTORY",
22834
+ message: `Service "${serviceName}" has root "${root}" but that path is a file, not a directory.`,
22835
+ serviceName
22836
+ }
22837
+ };
22838
+ }
22839
+ return { fs: fs5.chdir(normalizedRoot) };
22840
+ }
22715
22841
  function normalizeServiceEntrypoint(entrypoint) {
22716
22842
  const normalized = import_path7.posix.normalize(entrypoint);
22717
22843
  return normalized === "" ? "." : normalized;
@@ -22970,6 +23096,23 @@ var require_resolve = __commonJS({
22970
23096
  serviceName: name
22971
23097
  };
22972
23098
  }
23099
+ if (config.root !== void 0) {
23100
+ const normalizedRoot = import_path7.posix.normalize(config.root);
23101
+ if (normalizedRoot.startsWith("/")) {
23102
+ return {
23103
+ code: "INVALID_ROOT",
23104
+ message: `Service "${name}" has invalid "root" "${config.root}". Must be a relative path.`,
23105
+ serviceName: name
23106
+ };
23107
+ }
23108
+ if (normalizedRoot === ".." || normalizedRoot.startsWith("../")) {
23109
+ return {
23110
+ code: "INVALID_ROOT",
23111
+ message: `Service "${name}" has invalid "root" "${config.root}". Must not escape the project root.`,
23112
+ serviceName: name
23113
+ };
23114
+ }
23115
+ }
22973
23116
  if (config.envPrefix !== void 0) {
22974
23117
  if (!ENV_PREFIX_RE.test(config.envPrefix)) {
22975
23118
  return {
@@ -23043,7 +23186,8 @@ var require_resolve = __commonJS({
23043
23186
  const {
23044
23187
  name,
23045
23188
  config,
23046
- fs: fs5,
23189
+ serviceFs,
23190
+ root,
23047
23191
  group,
23048
23192
  resolvedEntrypoint,
23049
23193
  routePrefixSource = "configured"
@@ -23062,7 +23206,7 @@ var require_resolve = __commonJS({
23062
23206
  if (!resolvedEntrypointPath && typeof rawEntrypoint === "string") {
23063
23207
  const entrypointToResolve = moduleAttrParsed ? moduleAttrParsed.filePath : rawEntrypoint;
23064
23208
  const resolved = await resolveEntrypointPath({
23065
- fs: fs5,
23209
+ fs: serviceFs,
23066
23210
  serviceName: name,
23067
23211
  entrypoint: entrypointToResolve
23068
23212
  });
@@ -23085,7 +23229,7 @@ var require_resolve = __commonJS({
23085
23229
  workspace = normalizedEntrypoint;
23086
23230
  } else {
23087
23231
  const inferredWorkspace = await inferWorkspaceFromNearestManifest({
23088
- fs: fs5,
23232
+ fs: serviceFs,
23089
23233
  entrypoint: resolvedEntrypointFile,
23090
23234
  runtime: inferredRuntime
23091
23235
  });
@@ -23099,6 +23243,12 @@ var require_resolve = __commonJS({
23099
23243
  }
23100
23244
  }
23101
23245
  }
23246
+ if (root) {
23247
+ const normalizedRoot = import_path7.posix.normalize(root);
23248
+ if (normalizedRoot !== ".") {
23249
+ workspace = workspace === "." ? normalizedRoot : import_path7.posix.join(normalizedRoot, workspace);
23250
+ }
23251
+ }
23102
23252
  const topics = type === "worker" ? (0, import_build_utils5.getWorkerTopics)(config) : config.topics;
23103
23253
  const consumer = type === "worker" ? config.consumer || "default" : config.consumer;
23104
23254
  let builderUse;
@@ -23198,12 +23348,19 @@ var require_resolve = __commonJS({
23198
23348
  errors.push(validationError);
23199
23349
  continue;
23200
23350
  }
23351
+ const root = serviceConfig.root;
23352
+ const serviceFsResult = await getServiceFs(fs5, name, root);
23353
+ if (serviceFsResult.error) {
23354
+ errors.push(serviceFsResult.error);
23355
+ continue;
23356
+ }
23357
+ const serviceFs = serviceFsResult.fs;
23201
23358
  let resolvedEntrypoint;
23202
23359
  if (typeof serviceConfig.entrypoint === "string") {
23203
23360
  const moduleAttr = parsePyModuleAttrEntrypoint(serviceConfig.entrypoint);
23204
23361
  const entrypointToResolve = moduleAttr?.filePath ?? serviceConfig.entrypoint;
23205
23362
  const resolvedPath = await resolveEntrypointPath({
23206
- fs: fs5,
23363
+ fs: serviceFs,
23207
23364
  serviceName: name,
23208
23365
  entrypoint: entrypointToResolve
23209
23366
  });
@@ -23232,7 +23389,7 @@ var require_resolve = __commonJS({
23232
23389
  });
23233
23390
  const workspace = resolvedEntrypoint.normalized;
23234
23391
  const { framework, error } = await detectFrameworkFromWorkspace({
23235
- fs: fs5,
23392
+ fs: serviceFs,
23236
23393
  workspace,
23237
23394
  runtime: inferredRuntime,
23238
23395
  serviceName: name
@@ -23260,13 +23417,13 @@ var require_resolve = __commonJS({
23260
23417
  });
23261
23418
  if (inferredRuntime) {
23262
23419
  const inferredWorkspace = await inferWorkspaceFromNearestManifest({
23263
- fs: fs5,
23420
+ fs: serviceFs,
23264
23421
  entrypoint: resolvedEntrypoint.normalized,
23265
23422
  runtime: inferredRuntime
23266
23423
  });
23267
23424
  const workspace = inferredWorkspace ?? import_path7.posix.dirname(resolvedEntrypoint.normalized);
23268
23425
  const detection = await detectFrameworkFromWorkspace({
23269
- fs: fs5,
23426
+ fs: serviceFs,
23270
23427
  workspace,
23271
23428
  serviceName: name,
23272
23429
  runtime: inferredRuntime
@@ -23283,7 +23440,8 @@ var require_resolve = __commonJS({
23283
23440
  const service = await resolveConfiguredService({
23284
23441
  name,
23285
23442
  config: resolvedConfig,
23286
- fs: fs5,
23443
+ serviceFs,
23444
+ root,
23287
23445
  resolvedEntrypoint,
23288
23446
  routePrefixSource
23289
23447
  });
@@ -24767,7 +24925,7 @@ var require_detect_builders = __commonJS({
24767
24925
  }
24768
24926
  }
24769
24927
  const nodeExtensions = [".js", ".mjs", ".ts", ".tsx"];
24770
- if (process.env.VERCEL_NODE_FILTER_ENTRYPOINTS === "1" && nodeExtensions.some((ext) => fileName.endsWith(ext)) && options.workPath) {
24928
+ if (fileName.startsWith("api/") && process.env.VERCEL_NODE_FILTER_ENTRYPOINTS === "1" && nodeExtensions.some((ext) => fileName.endsWith(ext)) && options.workPath) {
24771
24929
  const fsPath = (0, import_path7.join)(options.workPath, fileName);
24772
24930
  const isEntrypoint = await (0, import_build_utils5.isNodeEntrypoint)({ fsPath });
24773
24931
  if (!isEntrypoint) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/static-build",
3
- "version": "2.9.13",
3
+ "version": "2.9.14",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index",
6
6
  "homepage": "https://vercel.com/docs/build-step",
@@ -15,8 +15,8 @@
15
15
  "dependencies": {
16
16
  "ts-morph": "12.0.0",
17
17
  "@vercel/gatsby-plugin-vercel-analytics": "1.0.11",
18
- "@vercel/gatsby-plugin-vercel-builder": "2.1.13",
19
- "@vercel/static-config": "3.2.0"
18
+ "@vercel/static-config": "3.2.0",
19
+ "@vercel/gatsby-plugin-vercel-builder": "2.1.14"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/aws-lambda": "8.10.64",
@@ -38,11 +38,11 @@
38
38
  "rc9": "1.2.0",
39
39
  "semver": "7.5.2",
40
40
  "tree-kill": "1.2.2",
41
- "@vercel/build-utils": "13.15.0",
42
- "@vercel/error-utils": "2.0.3",
43
- "@vercel/frameworks": "3.24.0",
41
+ "@vercel/build-utils": "13.16.0",
42
+ "@vercel/frameworks": "3.24.1",
43
+ "@vercel/fs-detectors": "5.17.0",
44
44
  "@vercel/routing-utils": "6.1.1",
45
- "@vercel/fs-detectors": "5.16.0"
45
+ "@vercel/error-utils": "2.0.3"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "node ../../utils/build-builder.mjs",