Skip to content

Commit f2faeb6

Browse files
authored
Rebrand to react-adonisjs (#110)
1 parent aa24f47 commit f2faeb6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+176
-190
lines changed

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
# remix-adonisjs
1+
# react-adonisjs
22

33
Sponsored by [SummYT.app](https://summyt.app)
44

5-
**remix-adonisjs** includes all the amazing features you love from Remix, plus support for production-grade:
5+
**react-adonisjs** (previously react-adonisjs) includes all the amazing features you love from React Router, plus support for production-grade:
66

77
- Database ORM and migrations
88
- Authentication
99
- Router middleware
1010
- Mailer
1111
- Dependency injection
1212

13-
...and much, much more from the AdonisJS 6 ecosystem. Read [the about section](https://matstack.dev/remix-adonisjs/about) if you want to learn more.
13+
...and much, much more from the AdonisJS 6 ecosystem. Read [the about section](https://matstack.dev/react-adonisjs/about) if you want to learn more.
1414

1515
## Quickstart
1616

17-
Create a fresh remix-adonisjs project using the [React Router 7 starter template](https://github.com/jarle/remix-starter-kit)
17+
Create a fresh react-adonisjs project using the [React Router 7 starter template](https://github.com/jarle/remix-starter-kit)
1818

1919
```
2020
npm init adonisjs@latest -- -K="github:jarle/remix-starter-kit"
@@ -23,25 +23,25 @@ npm init adonisjs@latest -- -K="github:jarle/remix-starter-kit"
2323
You should now be able to start building.
2424
Just jump into your new folder and start the dev server with `npm run dev`.
2525

26-
You can create new Remix routes with the command:
26+
You can create new React Router routes with the command:
2727

2828
```
29-
node ace remix:route my-route
29+
node ace react:route my-route
3030
```
3131

32-
There are flags for including Remix-specific functionality in the route.
32+
There are flags for including React Router-specific functionality in the route.
3333
Example for adding a server action:
3434

3535
```
36-
node ace remix:route --action my-route
36+
node ace react:route --action my-route
3737
```
3838

3939
Ready to build?
40-
Check out the guide on [how to set up a login flow](https://matstack.dev/remix-adonisjs/hands-on/building-a-login-flow) to get familiar with remix-adonisjs.
40+
Check out the guide on [how to set up a login flow](https://matstack.dev/react-adonisjs/hands-on/building-a-login-flow) to get familiar with react-adonisjs.
4141

4242
## Documentation
4343

44-
Guides for remix-adonisjs can be found in the [official documentation](https://matstack.dev/remix-adonisjs/)
44+
Guides for react-adonisjs can be found in the [official documentation](https://matstack.dev/react-adonisjs/)
4545

4646
For implementation details/reference, refer to the official documentation for the two frameworks:
4747

@@ -50,18 +50,18 @@ For implementation details/reference, refer to the official documentation for th
5050

5151
## Discussion
5252

53-
The recommended place to discuss remix-adonisjs is on [GitHub Discussions](https://github.com/jarle/remix-adonisjs/discussions).
53+
The recommended place to discuss react-adonisjs is on [GitHub Discussions](https://github.com/jarle/react-adonisjs/discussions).
5454

5555
## Contributing
5656

5757
Contributions are _very_ welcome ❤️
5858

5959
You can hack on the project by using the [reference application](./packages/reference-app/README.md) and its associated integrations tests.
6060

61-
A good start is to check out issues marked with [help wanted](https://github.com/jarle/remix-adonisjs/labels/help%20wanted) and see if you can contribute either with code or your opinion/experience.
61+
A good start is to check out issues marked with [help wanted](https://github.com/jarle/react-adonisjs/labels/help%20wanted) and see if you can contribute either with code or your opinion/experience.
6262

6363
Some other ideas for improvements:
6464

65-
- [Documentation](https://github.com/jarle/remix-adonisjs-docs)
65+
- [Documentation](https://github.com/jarle/react-adonisjs-docs)
6666
- Ease of setup
6767
- Project structure

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@matstack/remix-adonisjs",
2+
"name": "@matstack/react-adonisjs-monorepo",
33
"private": true,
44
"workspaces": [
55
"packages/*"

packages/adapter/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# Remix AdonisJS
1+
# React Router AdonisJS

packages/adapter/commands/remix_route.ts renamed to packages/adapter/commands/react_router_route.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
import { BaseCommand, args, flags } from '@adonisjs/core/ace'
22
import { stubsRoot } from '../index.js'
33

4-
/**
5-
* Create a remix route
6-
*/
7-
export default class MakeRemixRoute extends BaseCommand {
8-
static commandName = 'remix:route'
9-
static description = 'Create a Remix route'
4+
export default class MakeReactRouterRoute extends BaseCommand {
5+
static commandName = 'react:route'
6+
static description = 'Create a React Router route module'
107

118
@args.string({ description: 'The name of the route, without prefix' })
129
declare name: string

packages/adapter/configure.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export async function configure(command: Configure) {
4040
await codemods.makeUsingStub(STUBS_ROOT, 'env.d.ts.stub', {})
4141

4242
await codemods.updateRcFile((rcFile) => {
43-
rcFile.addCommand('@matstack/remix-adonisjs/commands')
44-
rcFile.addProvider('@matstack/remix-adonisjs/remix_provider')
43+
rcFile.addCommand('@matstack/react-adonisjs/commands')
44+
rcFile.addProvider('@matstack/react-adonisjs/react_router_provider')
4545
})
4646
}

packages/adapter/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"name": "@matstack/remix-adonisjs",
3-
"description": "An adapter for using Remix with AdonisJS",
4-
"version": "1.0.1",
2+
"name": "@matstack/react-adonisjs",
3+
"description": "An adapter for using React Router with AdonisJS",
4+
"version": "1.0.2",
55
"engines": {
66
"node": ">=20.10.0"
77
},
@@ -25,7 +25,7 @@
2525
"exports": {
2626
".": "./build/index.js",
2727
"./commands": "./build/commands/main.js",
28-
"./remix_provider": "./build/providers/remix_provider.js",
28+
"./react_router_provider": "./build/providers/react_router_provider.js",
2929
"./build_hook": "./build/src/hooks/build_hook.js",
3030
"./types": "./build/src/types/main.js"
3131
},
@@ -95,12 +95,12 @@
9595
},
9696
"repository": {
9797
"type": "git",
98-
"url": "git+https://github.com/jarle/remix-adonisjs"
98+
"url": "git+https://github.com/jarle/react-adonisjs"
9999
},
100100
"bugs": {
101-
"url": "https://github.com/jarle/remix-adonisjs/issues"
101+
"url": "https://github.com/jarle/react-adonisjs/issues"
102102
},
103-
"homepage": "https://matstack.dev/remix-adonisjs",
103+
"homepage": "https://matstack.dev/react-adonisjs",
104104
"prettier": "@adonisjs/prettier-config",
105105
"publishConfig": {
106106
"access": "public",

packages/adapter/providers/remix_provider.ts renamed to packages/adapter/providers/react_router_provider.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
/// <reference types="@adonisjs/vite/vite_provider" />
22

3-
import type { RequestHandler } from '../src/remix_adapter.js'
3+
import type { RequestHandler } from '../src/react_router_adapter.js'
44

55
import { HttpContext } from '@adonisjs/core/http'
66
import type { ApplicationService } from '@adonisjs/core/types'
77
import '../src/types/main.js'
88

99
declare module '@adonisjs/core/types' {
1010
interface ContainerBindings {
11-
remix: Promise<RequestHandler>
11+
reactRouter: Promise<RequestHandler>
1212
}
1313
}
1414

1515
declare module '@adonisjs/core/http' {
1616
interface HttpContext {
17-
remixHandler: () => Promise<void>
17+
reactRouterHandler: () => Promise<void>
1818
}
1919
}
2020

21-
export default class RemixProvider {
21+
export default class ReactRouterProvider {
2222
static needsApplication = true
23-
private remixBundle: string
23+
private reactRouterBundle: string
2424

2525
constructor(protected app: ApplicationService) {
26-
this.remixBundle = app.makeURL('remix/server/server.js').href
26+
this.reactRouterBundle = app.makeURL('react-router/server/server.js').href
2727
}
2828

2929
async boot() {
30-
const { createRequestHandler } = await import('../src/remix_adapter.js')
30+
const { createRequestHandler } = await import('../src/react_router_adapter.js')
3131
const env = this.app.getEnvironment()
3232
if (env !== 'web' && env !== 'test') {
3333
return
@@ -38,7 +38,7 @@ export default class RemixProvider {
3838
const build =
3939
(this.app.inDev || this.app.inTest) && devServer
4040
? () => devServer.ssrLoadModule('virtual:react-router/server-build')
41-
: await import(this.remixBundle)
41+
: await import(this.reactRouterBundle)
4242

4343
const requestHandler = createRequestHandler({
4444
build,
@@ -49,7 +49,7 @@ export default class RemixProvider {
4949
})
5050
const app = this.app
5151
HttpContext.getter(
52-
'remixHandler',
52+
'reactRouterHandler',
5353
function (this: HttpContext) {
5454
return () =>
5555
requestHandler({

packages/adapter/src/debug.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import { debuglog } from 'node:util'
22

3-
export default debuglog('matstack:remix-adonisjs')
3+
export default debuglog('matstack:react-adonisjs')

packages/adapter/src/hooks/build_hook.ts

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
import app from '@adonisjs/core/services/app'
22
import type { AssemblerHookHandler } from '@adonisjs/core/types/app'
33
import { execa } from 'execa'
4-
import { spawn } from 'node:child_process'
54
import fs from 'node:fs'
65
import path from 'node:path'
76

87
/**
98
*
109
* The hook is responsible for launching the react-router build command when the application is built
1110
*/
12-
export default async function remixBuildHook({ logger }: Parameters<AssemblerHookHandler>[0]) {
11+
export default async function reactRouterBuildHook({
12+
logger,
13+
}: Parameters<AssemblerHookHandler>[0]) {
1314
logger.info('building React Router app with vite')
1415
await execa('react-router', ['build'], {
15-
preferLocal: true, // use ./node_modules/.bin/react-router
16+
preferLocal: true, // use ./node_modules/.bin/react-router
1617
stdio: 'inherit',
1718
})
1819
const config = await resolveViteConfig()
1920
// const cli = await import('@remix-run/dev')
2021
// await cli.run(['vite:build'])
2122
const assetsDir = config?.build?.assetsDir ?? 'assets'
22-
const source = app.makePath('build', 'remix', 'client', assetsDir)
23+
const source = app.makePath('build', 'react-router', 'client', assetsDir)
2324
const target = app.makePath('build', 'public', assetsDir, config?.base ?? '/')
2425
moveDirectorySync(source, target)
2526
}
@@ -41,30 +42,6 @@ function moveDirectorySync(source: string, target: string) {
4142
}
4243
}
4344

44-
async function runCommand(command: string, args = []) {
45-
return new Promise((resolve, reject) => {
46-
const subprocess = spawn(command, args, { shell: true })
47-
let stdout = ''
48-
let stderr = ''
49-
50-
subprocess.stdout.on('data', (data) => {
51-
stdout += data.toString()
52-
})
53-
54-
subprocess.stderr.on('data', (data) => {
55-
stderr += data.toString()
56-
})
57-
58-
subprocess.on('close', (code) => {
59-
if (code === 0) {
60-
resolve(stdout)
61-
} else {
62-
reject(new Error(`Command failed with code ${code}: ${stderr}`))
63-
}
64-
})
65-
})
66-
}
67-
6845
export async function resolveViteConfig() {
6946
let vite = await import('vite')
7047

packages/adapter/src/remix_adapter.ts renamed to packages/adapter/src/react_router_adapter.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import type { Request as AdonisRequest, Response as AdonisResponse } from '@adon
88
import {
99
AppLoadContext,
1010
ServerBuild,
11-
createRequestHandler as createRemixRequestHandler,
11+
createRequestHandler as createReactRouterRequestHandler,
1212
} from 'react-router'
1313

14-
import { Readable } from 'node:stream'
1514
import { createReadableStreamFromReadable } from '@react-router/node'
15+
import { Readable } from 'node:stream'
1616
import debug from './debug.js'
1717

1818
export type HandlerContext = {
@@ -30,7 +30,7 @@ export type GetLoadContextFunction = (context: HandlerContext) => AppLoadContext
3030
export type RequestHandler = (context: HandlerContext) => Promise<void>
3131

3232
/**
33-
* Returns a request handler for AdonisJS that serves the response using Remix.
33+
* Returns a request handler for AdonisJS that serves the response using React Router.
3434
*/
3535
export function createRequestHandler({
3636
build,
@@ -41,20 +41,20 @@ export function createRequestHandler({
4141
getLoadContext: GetLoadContextFunction
4242
mode?: string
4343
}): RequestHandler {
44-
let handleRequest = createRemixRequestHandler(build, mode)
44+
let handleRequest = createReactRouterRequestHandler(build, mode)
4545

4646
return async (context: HandlerContext) => {
47-
debug(`Creating remix request for ${context.http.request.parsedUrl}`)
48-
const request = createRemixRequest(context.http.request, context.http.response)
47+
debug(`Creating react-router request for ${context.http.request.parsedUrl}`)
48+
const request = createReactRouterRequest(context.http.request, context.http.response)
4949
const loadContext = getLoadContext(context)
5050

5151
const response = await handleRequest(request, loadContext)
5252

53-
sendRemixResponse(context.http, response)
53+
sendReactRouterResponse(context.http, response)
5454
}
5555
}
5656

57-
export function createRemixHeaders(requestHeaders: IncomingHttpHeaders): Headers {
57+
export function createReactRouterHeaders(requestHeaders: IncomingHttpHeaders): Headers {
5858
const headers = new Headers()
5959

6060
for (let [key, values] of Object.entries(requestHeaders)) {
@@ -71,7 +71,7 @@ export function createRemixHeaders(requestHeaders: IncomingHttpHeaders): Headers
7171
return headers
7272
}
7373

74-
export function createRemixRequest(req: AdonisRequest, res: AdonisResponse): Request {
74+
export function createReactRouterRequest(req: AdonisRequest, res: AdonisResponse): Request {
7575
const url = new URL(req.completeUrl(true))
7676

7777
// Abort action/loaders once we can no longer write a response
@@ -84,7 +84,7 @@ export function createRemixRequest(req: AdonisRequest, res: AdonisResponse): Req
8484

8585
const init: RequestInit = {
8686
method: req.method(),
87-
headers: createRemixHeaders(req.headers()),
87+
headers: createReactRouterHeaders(req.headers()),
8888
signal: controller.signal,
8989
}
9090

@@ -102,14 +102,14 @@ export function createRemixRequest(req: AdonisRequest, res: AdonisResponse): Req
102102
return new Request(url.href, init)
103103
}
104104

105-
export async function sendRemixResponse(ctx: HttpContext, webResponse: Response) {
105+
export async function sendReactRouterResponse(ctx: HttpContext, webResponse: Response) {
106106
const res = ctx.response
107107
res.response.statusMessage = webResponse.statusText
108108
if (res.getStatus() === 200) {
109109
res.status(webResponse.status)
110110
}
111111

112-
debug('Commit session early for remix response')
112+
debug('Commit session early for react-router response')
113113
await ctx.session?.commit()
114114
webResponse.headers.forEach((value, key) => res.append(key, value))
115115

0 commit comments

Comments
 (0)