Skip to content
Draft
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
2,310 changes: 1,785 additions & 525 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"@netlify/ai": "0.3.4",
"@netlify/api": "14.0.13",
"@netlify/blobs": "10.1.0",
"@netlify/build": "35.5.14",
"@netlify/build": "^35.8.0-experimental",
"@netlify/build-info": "10.3.0",
"@netlify/config": "24.3.0",
"@netlify/dev-utils": "4.3.2",
Expand Down
3 changes: 2 additions & 1 deletion src/commands/dev/dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ export const dev = async (options: OptionValues, command: BaseCommand) => {

log(`${NETLIFYDEVLOG} Setting up local dev server`)

const { configMutations, generatedFunctions } = await runDevTimeline({
const { configMutations, generatedFunctions, deployEnvironment } = await runDevTimeline({
command,
options,
settings,
Expand Down Expand Up @@ -252,6 +252,7 @@ export const dev = async (options: OptionValues, command: BaseCommand) => {
offline: options.offline,
state,
accountId,
deployEnvironment,
})

// Try to add `.netlify` to `.gitignore`.
Expand Down
1 change: 1 addition & 0 deletions src/commands/functions/functions-serve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ export const functionsServe = async (options: OptionValues, command: BaseCommand
offline: options.offline,
state,
accountId,
deployEnvironment: [],
})

const url = getProxyUrl({ port: functionsPort })
Expand Down
1 change: 1 addition & 0 deletions src/commands/serve/serve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ export const serve = async (options: OptionValues, command: BaseCommand) => {
offline: options.offline,
state,
accountId,
deployEnvironment: [],
})

// Try to add `.netlify` to `.gitignore`.
Expand Down
5 changes: 5 additions & 0 deletions src/lib/functions/netlify-function.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ export default class NetlifyFunction<BuildResult extends BaseBuildResult> {
private readonly aiGatewayContext?: AIGatewayContext | null
private readonly blobsContext: BlobsContextWithEdgeAccess
private readonly config: NormalizedCachedConfigConfig
private readonly deployEnvironment: { key: string; value: string; isSecret: boolean }[]
private readonly directory?: string
private readonly projectRoot: string
private readonly timeoutBackground?: number
Expand Down Expand Up @@ -79,6 +80,7 @@ export default class NetlifyFunction<BuildResult extends BaseBuildResult> {
aiGatewayContext,
blobsContext,
config,
deployEnvironment,
directory,
displayName,
mainFile,
Expand All @@ -93,6 +95,7 @@ export default class NetlifyFunction<BuildResult extends BaseBuildResult> {
aiGatewayContext?: AIGatewayContext | null
blobsContext: BlobsContextWithEdgeAccess
config: NormalizedCachedConfigConfig
deployEnvironment: { key: string; value: string; isSecret: boolean }[]
directory?: string
displayName?: string
mainFile: string
Expand All @@ -108,6 +111,7 @@ export default class NetlifyFunction<BuildResult extends BaseBuildResult> {
this.aiGatewayContext = aiGatewayContext
this.blobsContext = blobsContext
this.config = config
this.deployEnvironment = deployEnvironment ?? []
this.directory = directory
this.mainFile = mainFile
this.name = name
Expand Down Expand Up @@ -281,6 +285,7 @@ export default class NetlifyFunction<BuildResult extends BaseBuildResult> {
const environment = {
// Include function-specific environment variables from config
...configEnvVars,
...Object.fromEntries(this.deployEnvironment.map(({ key, value }) => [key, value])),
}

if (this.blobsContext) {
Expand Down
5 changes: 5 additions & 0 deletions src/lib/functions/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,15 @@ export class FunctionsRegistry {
// TODO(serhalp): This is confusing. Refactor to accept entire settings or rename or something?
private settings: Pick<ServerSettings, 'functions' | 'functionsPort'>
private timeouts: { backgroundFunctions: number; syncFunctions: number }
private readonly deployEnvironment: { key: string; value: string; isSecret: boolean }[]

constructor({
aiGatewayContext,
blobsContext,
capabilities,
config,
debug = false,
deployEnvironment,
frameworksAPIPaths,
generatedFunctions,
isConnected = false,
Expand All @@ -121,6 +123,7 @@ export class FunctionsRegistry {
// TODO(serhalp): This is confusing. Refactor to accept entire settings or rename or something?
settings: Pick<ServerSettings, 'functions' | 'functionsPort'>
timeouts: { backgroundFunctions: number; syncFunctions: number }
deployEnvironment: { key: string; value: string; isSecret: boolean }[]
}) {
this.capabilities = capabilities
this.config = config
Expand All @@ -133,6 +136,7 @@ export class FunctionsRegistry {
this.settings = settings
this.blobsContext = blobsContext
this.aiGatewayContext = aiGatewayContext
this.deployEnvironment = deployEnvironment ?? []

/**
* An object to be shared among all functions in the registry. It can be
Expand Down Expand Up @@ -571,6 +575,7 @@ export class FunctionsRegistry {
timeoutSynchronous: this.timeouts.syncFunctions,
settings: this.settings,
srcPath,
deployEnvironment: this.deployEnvironment,
})

// If a function we're registering was also unregistered in this run,
Expand Down
2 changes: 2 additions & 0 deletions src/lib/functions/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,7 @@ export const startFunctionsServer = async (
site: NetlifySite
siteInfo: SiteInfo
timeouts: { backgroundFunctions: number; syncFunctions: number }
deployEnvironment: { key: string; value: string; isSecret: boolean }[]
} & Omit<GetFunctionsServerOptions, 'functionsRegistry'>,
): Promise<FunctionsRegistry | undefined> => {
const {
Expand Down Expand Up @@ -395,6 +396,7 @@ export const startFunctionsServer = async (
projectRoot: command.workingDir,
settings,
timeouts,
deployEnvironment: options.deployEnvironment,
})

await functionsRegistry.scan(functionsDirectories)
Expand Down
29 changes: 21 additions & 8 deletions src/utils/run-build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,16 @@ type RunNetlifyBuildOptions = {
timeline: 'dev' | 'build'
}

export async function runNetlifyBuild(
opts: RunNetlifyBuildOptions & { timeline: 'dev' },
): Promise<{ configMutations: unknown; generatedFunctions: GeneratedFunction[] }>
export async function runNetlifyBuild(
opts: RunNetlifyBuildOptions & { timeline: 'build' },
): Promise<{ configPath: string; generatedFunctions: GeneratedFunction[] }>
export async function runNetlifyBuild(opts: RunNetlifyBuildOptions & { timeline: 'dev' }): Promise<{
configMutations: unknown
generatedFunctions: GeneratedFunction[]
deployEnvironment: { key: string; value: string; isSecret: boolean }[]
}>
export async function runNetlifyBuild(opts: RunNetlifyBuildOptions & { timeline: 'build' }): Promise<{
configPath: string
generatedFunctions: GeneratedFunction[]
deployEnvironment: { key: string; value: string; isSecret: boolean }[]
}>
export async function runNetlifyBuild({
command,
env = {},
Expand Down Expand Up @@ -163,7 +167,11 @@ export async function runNetlifyBuild({
}
await devCommand({ netlifyConfig, settingsOverrides })

return { configPath: tempConfigPath, generatedFunctions }
return {
configPath: tempConfigPath,
deployEnvironment: [] as { key: string; value: string; isSecret: boolean }[],
generatedFunctions,
}
}

const startDevOptions = {
Expand All @@ -181,6 +189,7 @@ export async function runNetlifyBuild({
error: startDevError,
success,
generatedFunctions,
deployEnvVars: deployEnvironment,
} = await startDev(devCommand, startDevOptions)

if (!success && startDevError) {
Expand All @@ -189,7 +198,11 @@ export async function runNetlifyBuild({
)
}

return { configMutations, generatedFunctions }
return {
configMutations,
deployEnvironment: deployEnvironment as { key: string; value: string; isSecret: boolean }[],
generatedFunctions,
}
}

type RunTimelineOptions = Omit<Parameters<typeof runNetlifyBuild>[0], 'timeline'>
Expand Down
Loading