Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default async (req, res) => {

// Get the ID of the show
const { query } = req
const { id } = query
const id = query['show-id']

// Get the data
const fetchRes = await fetch(`https://tvproxy.netlify.app/shows/${Number(id)}`)
Expand Down
26 changes: 2 additions & 24 deletions packages/runtime/src/helpers/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { NetlifyConfig, NetlifyPluginConstants } from '@netlify/build'
import bridgeFile from '@vercel/node-bridge'
import chalk from 'chalk'
import destr from 'destr'
import { copyFile, ensureDir, existsSync, readJSON, writeFile, writeJSON, stat } from 'fs-extra'
import { copyFile, ensureDir, existsSync, readJSON, writeFile, writeJSON } from 'fs-extra'
import { PrerenderManifest } from 'next/dist/build'
import type { ImageConfigComplete, RemotePattern } from 'next/dist/shared/lib/image-config'
import { outdent } from 'outdent'
Expand Down Expand Up @@ -31,7 +31,7 @@ import { getDependenciesOfFile, getServerFile, getSourceFileForPage } from './fi
import { writeFunctionConfiguration } from './functionsMetaData'
import { pack } from './pack'
import { ApiRouteType } from './types'
import { getFunctionNameForPage } from './utils'
import { getBundleWeight, getFunctionNameForPage } from './utils'

export interface RouteConfig {
functionName: string
Expand Down Expand Up @@ -326,28 +326,6 @@ export const getCommonDependencies = async (publish: string) => {
return deps.flat(1)
}

const sum = (arr: number[]) => arr.reduce((v, current) => v + current, 0)

// TODO: cache results
const getBundleWeight = async (patterns: string[]) => {
const sizes = await Promise.all(
patterns.flatMap(async (pattern) => {
const files = await glob(pattern)
return Promise.all(
files.map(async (file) => {
const fStat = await stat(file)
if (fStat.isFile()) {
return fStat.size
}
return 0
}),
)
}),
)

return sum(sizes.flat(1))
}

const changeExtension = (file: string, extension: string) => {
const base = basename(file, extname(file))
return join(dirname(file), base + extension)
Expand Down
18 changes: 18 additions & 0 deletions packages/runtime/src/helpers/utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { NetlifyConfig } from '@netlify/build'
import type { Header } from '@netlify/build/types/config/netlify_config'
import { stat } from 'fs-extra'
import globby from 'globby'
import type { ExperimentalConfig } from 'next/dist/server/config-shared'
import type { ImageConfigComplete, RemotePattern } from 'next/dist/shared/lib/image-config'
Expand Down Expand Up @@ -327,3 +328,20 @@ export const getRemotePatterns = (experimental: ExperimentalConfigWithLegacy, im
const reHasRegExp = /[|\\{}()[\]^$+*?.-]/
const reReplaceRegExp = /[|\\{}()[\]^$+*?.-]/g
export const escapeStringRegexp = (str: string) => (reHasRegExp.test(str) ? str.replace(reReplaceRegExp, '\\$&') : str)

const sum = (arr: number[]) => arr.reduce((v, current) => v + current, 0)

// TODO: cache results
export const getBundleWeight = async (files: string[]) => {
const sizes = await Promise.all(
files.map(async (file) => {
const fStat = await stat(file)
if (fStat.isFile()) {
return fStat.size
}
return 0
}),
)

return sum(sizes.flat(1))
}
14 changes: 7 additions & 7 deletions test/__snapshots__/index.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ Array [
".next/server/pages/api/og.js",
".next/server/pages/api/revalidate.js",
".next/server/pages/api/shows/[...params].js",
".next/server/pages/api/shows/[id].js",
".next/server/pages/api/shows/[show-id].js",
".next/server/pages/deep/import.js",
".next/server/pages/edge/[id].js",
".next/server/pages/getServerSideProps/[id].js",
Expand Down Expand Up @@ -442,7 +442,7 @@ exports.resolvePages = () => {
require.resolve('../../../.next/server/pages/api/og.js')
require.resolve('../../../.next/server/pages/api/revalidate.js')
require.resolve('../../../.next/server/pages/api/shows/[...params].js')
require.resolve('../../../.next/server/pages/api/shows/[id].js')
require.resolve('../../../.next/server/pages/api/shows/[show-id].js')
require.resolve('../../../.next/server/pages/deep/import.js')
require.resolve('../../../.next/server/pages/edge/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/[id].js')
Expand Down Expand Up @@ -626,7 +626,7 @@ exports.resolvePages = () => {
require.resolve('../../../.next/server/pages/api/og.js')
require.resolve('../../../.next/server/pages/api/revalidate.js')
require.resolve('../../../.next/server/pages/api/shows/[...params].js')
require.resolve('../../../.next/server/pages/api/shows/[id].js')
require.resolve('../../../.next/server/pages/api/shows/[show-id].js')
require.resolve('../../../.next/server/pages/deep/import.js')
require.resolve('../../../.next/server/pages/edge/[id].js')
require.resolve('../../../.next/server/pages/getServerSideProps/[id].js')
Expand Down Expand Up @@ -810,7 +810,7 @@ exports.resolvePages = () => {
require.resolve('../../../web/.next/server/pages/api/og.js')
require.resolve('../../../web/.next/server/pages/api/revalidate.js')
require.resolve('../../../web/.next/server/pages/api/shows/[...params].js')
require.resolve('../../../web/.next/server/pages/api/shows/[id].js')
require.resolve('../../../web/.next/server/pages/api/shows/[show-id].js')
require.resolve('../../../web/.next/server/pages/deep/import.js')
require.resolve('../../../web/.next/server/pages/edge/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js')
Expand Down Expand Up @@ -994,7 +994,7 @@ exports.resolvePages = () => {
require.resolve('../../../web/.next/server/pages/api/og.js')
require.resolve('../../../web/.next/server/pages/api/revalidate.js')
require.resolve('../../../web/.next/server/pages/api/shows/[...params].js')
require.resolve('../../../web/.next/server/pages/api/shows/[id].js')
require.resolve('../../../web/.next/server/pages/api/shows/[show-id].js')
require.resolve('../../../web/.next/server/pages/deep/import.js')
require.resolve('../../../web/.next/server/pages/edge/[id].js')
require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js')
Expand Down Expand Up @@ -3686,12 +3686,12 @@ Array [
"to": "/.netlify/functions/___netlify-api-handler",
},
Object {
"from": "/api/shows/:id",
"from": "/api/shows/:params/*",
"status": 200,
"to": "/.netlify/functions/___netlify-api-handler",
},
Object {
"from": "/api/shows/:params/*",
"from": "/api/shows/:show-id",
"status": 200,
"to": "/.netlify/functions/___netlify-api-handler",
},
Expand Down
8 changes: 4 additions & 4 deletions test/helpers/functions.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ describeCwdTmpDir('api route file analysis', () => {
route: '/api/shows/[...params]',
},
{
functionName: '_api_shows_id-PARAM-handler',
functionTitle: 'Next.js API handler /api/shows/[id]',
compiled: 'pages/api/shows/[id].js',
functionName: '_api_shows_show-id-PARAM-handler',
functionTitle: 'Next.js API handler /api/shows/[show-id]',
compiled: 'pages/api/shows/[show-id].js',
config: {},
route: '/api/shows/[id]',
route: '/api/shows/[show-id]',
},
{
functionName: '_api_hello-background-background',
Expand Down
1 change: 1 addition & 0 deletions test/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { changeCwd, useFixture, moveNextDist } from './test-utils'
jest.mock('../packages/runtime/src/helpers/utils', () => ({
...jest.requireActual('../packages/runtime/src/helpers/utils'),
isNextAuthInstalled: jest.fn(),
getBundleWeight: async () => 0,
}))

jest.mock('../packages/runtime/src/helpers/functionsMetaData', () => {
Expand Down