Skip to content

Commit

Permalink
Merge branch 'main' into ds-cli/fix-data-migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
jtoar authored May 24, 2023
2 parents 954faf4 + 26ad3e2 commit 02659dc
Show file tree
Hide file tree
Showing 44 changed files with 2,134 additions and 3,974 deletions.
1 change: 1 addition & 0 deletions __fixtures__/test-project/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"postcss": "^8.4.23",
"postcss-loader": "^7.3.0",
"prettier-plugin-tailwindcss": "^0.2.8",
"storybook": "7.0.12",
"tailwindcss": "^3.3.2"
}
}
3 changes: 3 additions & 0 deletions docs/docs/cli-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -1993,6 +1993,7 @@ yarn redwood serve [side]
| ------------------- | ------------------------------------------------------------------------------ |
| `side` | Which side(s) to run. Choices are `api` and `web`. Defaults to `api` and `web` |
| `--port` | What port should the server run on [default: 8911] |
| `--host` | What host should the server run on. This defaults to the value of `web.host` in the `redwood.toml` file which itself defaults to `'localhost'`. |
| `--socket` | The socket the server should run. This takes precedence over port |
### serve api
Expand All @@ -2008,6 +2009,7 @@ This command uses `apiUrl` in your `redwood.toml`. Use this command if you want
| Arguments & Options | Description |
| ------------------- | ----------------------------------------------------------------- |
| `--port` | What port should the server run on [default: 8911] |
| `--host` | What host should the server run on. This defaults to the value of `api.host` in the `redwood.toml` file which itself defaults to `'localhost'`. |
| `--socket` | The socket the server should run. This takes precedence over port |
| `--apiRootPath` | The root path where your api functions are served |
Expand Down Expand Up @@ -2035,6 +2037,7 @@ This command serves the contents in `web/dist`. Use this command if you're debug
| Arguments & Options | Description |
| ------------------- | ------------------------------------------------------------------------------------- |
| `--port` | What port should the server run on [default: 8911] |
| `--host` | What host should the server run on. This defaults to the value of `web.host` in the `redwood.toml` file which itself defaults to `'localhost'`. |
| `--socket` | The socket the server should run. This takes precedence over port |
| `--apiHost` | Forwards requests from the `apiUrl` (defined in `redwood.toml`) to the specified host |
Expand Down
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"@actions/exec": "1.1.1",
"@babel/cli": "7.21.5",
"@babel/core": "7.21.8",
"@babel/generator": "7.21.5",
"@babel/generator": "7.21.9",
"@babel/node": "7.20.7",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-proposal-decorators": "7.21.0",
Expand All @@ -49,7 +49,7 @@
"@babel/runtime-corejs3": "7.21.5",
"@faker-js/faker": "8.0.1",
"@npmcli/arborist": "6.2.9",
"@playwright/test": "1.33.0",
"@playwright/test": "1.34.0",
"@replayio/playwright": "0.3.30",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "14.0.0",
Expand All @@ -70,7 +70,7 @@
"core-js": "3.30.2",
"cypress": "12.12.0",
"cypress-wait-until": "1.7.2",
"eslint": "8.40.0",
"eslint": "8.41.0",
"fast-glob": "3.2.12",
"fs-extra": "11.1.1",
"is-port-reachable": "3.1.0",
Expand All @@ -87,7 +87,7 @@
"npm-packlist": "7.0.4",
"nx": "16.2.1",
"nx-cloud": "16.0.5",
"octokit": "2.0.16",
"octokit": "2.0.18",
"ora": "5.4.1",
"prompts": "2.4.2",
"rimraf": "5.0.1",
Expand Down
62 changes: 47 additions & 15 deletions packages/api-server/src/cliHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,33 @@ const sendProcessReady = () => {
return process.send && process.send('ready')
}

const redwoodProjectConfig = getConfig()

export const commonOptions = {
port: { default: getConfig().web?.port || 8910, type: 'number', alias: 'p' },
port: {
default: redwoodProjectConfig.web.port,
type: 'number',
alias: 'p',
},
host: {
default: redwoodProjectConfig.web.host,
type: 'string',
alias: 'h',
},
socket: { type: 'string' },
} as const

export const apiCliOptions = {
port: { default: getConfig().api?.port || 8911, type: 'number', alias: 'p' },
port: {
default: redwoodProjectConfig.api.port,
type: 'number',
alias: 'p',
},
host: {
default: redwoodProjectConfig.api.host,
type: 'string',
alias: 'h',
},
socket: { type: 'string' },
apiRootPath: {
alias: ['rootPath', 'root-path'],
Expand All @@ -36,7 +56,16 @@ export const apiCliOptions = {
} as const

export const webCliOptions = {
port: { default: getConfig().web?.port || 8910, type: 'number', alias: 'p' },
port: {
default: redwoodProjectConfig.web.port,
type: 'number',
alias: 'p',
},
host: {
default: redwoodProjectConfig.web.host,
type: 'string',
alias: 'h',
},
socket: { type: 'string' },
apiHost: {
alias: 'api-host',
Expand All @@ -46,7 +75,7 @@ export const webCliOptions = {
} as const

export const apiServerHandler = async (options: ApiServerArgs) => {
const { port, socket, apiRootPath } = options
const { port, host, socket, apiRootPath } = options
const tsApiServer = Date.now()
process.stdout.write(c.dim(c.italic('Starting API Server...\n')))

Expand All @@ -57,14 +86,15 @@ export const apiServerHandler = async (options: ApiServerArgs) => {

const http = startFastifyServer({
port,
host,
socket,
fastify,
}).ready(() => {
console.log(c.italic(c.dim('Took ' + (Date.now() - tsApiServer) + ' ms')))

const on = socket
? socket
: c.magenta(`http://localhost:${port}${apiRootPath}`)
: c.magenta(`http://${host}:${port}${apiRootPath}`)
console.log(`API listening on ${on}`)
const graphqlEnd = c.magenta(`${apiRootPath}graphql`)
console.log(`GraphQL endpoint at ${graphqlEnd}`)
Expand All @@ -76,10 +106,10 @@ export const apiServerHandler = async (options: ApiServerArgs) => {
}

export const bothServerHandler = async (options: BothServerArgs) => {
const { port, socket } = options
const { port, host, socket } = options
const tsServer = Date.now()
process.stdout.write(c.dim(c.italic('Starting API and Web Servers...\n')))
const apiRootPath = coerceRootPath(getConfig().web.apiUrl)
const apiRootPath = coerceRootPath(redwoodProjectConfig.web.apiUrl)

let fastify = createFastifyInstance()

Expand All @@ -89,15 +119,16 @@ export const bothServerHandler = async (options: BothServerArgs) => {

startFastifyServer({
port,
host,
socket,
fastify,
}).ready(() => {
console.log(c.italic(c.dim('Took ' + (Date.now() - tsServer) + ' ms')))
const on = socket
? socket
: c.magenta(`http://localhost:${port}${apiRootPath}`)
const webServer = c.green(`http://localhost:${port}`)
const apiServer = c.magenta(`http://localhost:${port}`)
: c.magenta(`http://${host}:${port}${apiRootPath}`)
const webServer = c.green(`http://${host}:${port}`)
const apiServer = c.magenta(`http://${host}:${port}`)
console.log(`Web server started on ${webServer}`)
console.log(`API serving from ${apiServer}`)
console.log(`API listening on ${on}`)
Expand All @@ -108,14 +139,14 @@ export const bothServerHandler = async (options: BothServerArgs) => {
}

export const webServerHandler = async (options: WebServerArgs) => {
const { port, socket, apiHost } = options
const { port, host, socket, apiHost } = options
const tsServer = Date.now()
process.stdout.write(c.dim(c.italic('Starting Web Server...\n')))
const apiUrl = getConfig().web.apiUrl
const apiUrl = redwoodProjectConfig.web.apiUrl
// Construct the graphql url from apiUrl by default
// But if apiGraphQLUrl is specified, use that instead
const graphqlEndpoint = coerceRootPath(
getConfig().web.apiGraphQLUrl ?? `${apiUrl}/graphql`
redwoodProjectConfig.web.apiGraphQLUrl ?? `${apiUrl}/graphql`
)

let fastify = createFastifyInstance()
Expand All @@ -131,15 +162,16 @@ export const webServerHandler = async (options: WebServerArgs) => {
}

startFastifyServer({
port: port,
port,
host,
socket,
fastify,
}).ready(() => {
console.log(c.italic(c.dim('Took ' + (Date.now() - tsServer) + ' ms')))
if (socket) {
console.log(`Listening on ` + c.magenta(`${socket}`))
}
const webServer = c.green(`http://localhost:${port}`)
const webServer = c.green(`http://${host}:${port}`)
console.log(`Web server started on ${webServer}`)
console.log(`GraphQL endpoint is set to ` + c.magenta(`${graphqlEndpoint}`))
sendProcessReady()
Expand Down
3 changes: 2 additions & 1 deletion packages/api-server/src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@ import { FastifyInstance } from 'fastify'

export interface HttpServerParams {
port: number
host?: string
socket?: string
fastify: FastifyInstance
}

export const startServer = ({
port = 8911,
host = 'localhost',
socket,
fastify,
}: HttpServerParams) => {
const host = 'localhost'
const serverPort = socket ? parseInt(socket) : port

fastify.listen({ port: serverPort, host })
Expand Down
40 changes: 24 additions & 16 deletions packages/api-server/src/watch.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env node
// This script is called by the `yarn rw dev` command. Specifically, it's the api command.

import { fork } from 'child_process'
import type { ChildProcess } from 'child_process'
Expand All @@ -16,6 +17,9 @@ import { buildApi } from '@redwoodjs/internal/dist/build/api'
import { loadAndValidateSdls } from '@redwoodjs/internal/dist/validateSchema'
import { getPaths, ensurePosixPath, getConfig } from '@redwoodjs/project-config'

const redwoodProjectPaths = getPaths()
const redwoodProjectConfig = getConfig()

const argv = yargs(hideBin(process.argv))
.option('debug-port', {
alias: 'dp',
Expand All @@ -26,15 +30,19 @@ const argv = yargs(hideBin(process.argv))
alias: 'p',
description: 'Port',
type: 'number',
default: redwoodProjectConfig.api.port,
})
.option('host', {
alias: 'h',
description: 'Host',
type: 'string',
default: redwoodProjectConfig.api.host,
})
.help()
.alias('help', 'h')
.parseSync()

const rwjsPaths = getPaths()

// If this is run via the yarn rw dev command, this will have already been called.
dotenv.config({
path: rwjsPaths.base,
path: redwoodProjectPaths.base,
})

// TODO:
Expand Down Expand Up @@ -77,9 +85,9 @@ const rebuildApiServer = () => {
}

// OpenTelemetry SDK Setup
if (getConfig().experimental.opentelemetry.enabled) {
if (redwoodProjectConfig.experimental.opentelemetry.enabled) {
const opentelemetrySDKScriptPath =
getConfig().experimental.opentelemetry.apiSdk
redwoodProjectConfig.experimental.opentelemetry.apiSdk
if (opentelemetrySDKScriptPath) {
console.log(
`Setting up OpenTelemetry using the setup file: ${opentelemetrySDKScriptPath}`
Expand All @@ -101,12 +109,10 @@ const rebuildApiServer = () => {
forkOpts.execArgv = forkOpts.execArgv.concat([`--inspect=${debugPort}`])
}

const port = argv.port ?? getConfig().api.port

// Start API server
httpServerProcess = fork(
path.join(__dirname, 'index.js'),
['api', '--port', port.toString()],
['api', '--port', argv.port.toString(), '--host', `${argv.host}`],
forkOpts
)
} catch (e) {
Expand All @@ -126,16 +132,16 @@ const delayRestartServer = debounce(
)

// NOTE: the file comes through as a unix path, even on windows
// So we need to convert the rwjsPaths
// So we need to convert the redwoodProjectPaths

const IGNORED_API_PATHS = [
'api/dist', // use this, because using rwjsPaths.api.dist seems to not ignore on first build
rwjsPaths.api.types,
rwjsPaths.api.db,
'api/dist', // use this, because using redwoodProjectPaths.api.dist seems to not ignore on first build
redwoodProjectPaths.api.types,
redwoodProjectPaths.api.db,
].map((path) => ensurePosixPath(path))

chokidar
.watch(rwjsPaths.api.base, {
.watch(redwoodProjectPaths.api.base, {
persistent: true,
ignoreInitial: true,
ignored: (file: string) => {
Expand Down Expand Up @@ -174,7 +180,9 @@ chokidar
}

console.log(
c.dim(`[${eventName}] ${filePath.replace(rwjsPaths.api.base, '')}`)
c.dim(
`[${eventName}] ${filePath.replace(redwoodProjectPaths.api.base, '')}`
)
)
delayRestartServer.cancel()
delayRestartServer()
Expand Down
4 changes: 2 additions & 2 deletions packages/auth-providers/auth0/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"core-js": "3.30.2"
},
"devDependencies": {
"@auth0/auth0-spa-js": "2.0.4",
"@auth0/auth0-spa-js": "2.0.5",
"@babel/cli": "7.21.5",
"@babel/core": "7.21.8",
"@types/react": "18.2.6",
Expand All @@ -36,7 +36,7 @@
"typescript": "5.0.4"
},
"peerDependencies": {
"@auth0/auth0-spa-js": "2.0.4"
"@auth0/auth0-spa-js": "2.0.5"
},
"gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1"
}
Loading

0 comments on commit 02659dc

Please sign in to comment.