Hello world

This commit is contained in:
Dan Abramov
2024-07-06 06:10:42 +01:00
parent 98dc900cc5
commit 0c4cae0148
9 changed files with 89 additions and 67 deletions
+1 -1
View File
@@ -194,7 +194,7 @@
"react-native-web-webview": "^1.0.2",
"react-native-webview": "13.10.2",
"react-responsive": "^9.0.2",
"react-server-dom-webpack": "19.0.0-rc-f38c22b244-20240704",
"react-server-dom-webpack": "19.0.0-canary-adb717393-20240411",
"react-textarea-autosize": "^8.5.3",
"rn-fetch-blob": "^0.12.0",
"rn-tourguide": "bluesky-social/rn-tourguide",
+3 -3
View File
@@ -15,9 +15,9 @@
"busboy": "^1.6.0",
"compression": "^1.7.4",
"nodemon": "^2.0.19",
"react": "19.0.0-rc-f38c22b244-20240704",
"react-dom": "19.0.0-rc-f38c22b244-20240704",
"react-server-dom-webpack": "19.0.0-rc-f38c22b244-20240704",
"react": "19.0.0-canary-adb717393-20240411",
"react-dom": "19.0.0-canary-adb717393-20240411",
"react-server-dom-webpack": "19.0.0-canary-adb717393-20240411",
"undici": "^5.20.0"
},
"scripts": {
+2
View File
@@ -56,6 +56,8 @@ async function renderApp(res, returnValue, formState) {
const moduleMap = {
Text: {
id: 'Text',
name: 'default',
chunks: ['main'],
},
}
const App = m.default.default || m.default
+17 -17
View File
@@ -2243,25 +2243,25 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
react-dom@^19.0.0-rc-f38c22b244-20240704:
version "19.0.0-rc-f38c22b244-20240704"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-f38c22b244-20240704.tgz#da4a9835999bc3992bf74cf5a595b01e7e536d6b"
integrity sha512-g89q2pf3irdpKFUMgCQgtxgqo3TSV1k1J6Sc8God4FwfxuNmAOOthkijENe5XZe6VeV1tor9DPzpjdTD9EyvNw==
react-dom@19.0.0-canary-adb717393-20240411:
version "19.0.0-canary-adb717393-20240411"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-canary-adb717393-20240411.tgz#b597e0dacd6cd79e89ffa3959e298251fd354138"
integrity sha512-zkJnxTJXN5sr7XJ7qq82S6UJJ81PZrZv3Y9Z4iY9Mx9fHAFTORnk7/5oWafrpfW544rLCSMWuxrKVYtXSyOQJA==
dependencies:
scheduler "0.25.0-rc-f38c22b244-20240704"
scheduler "0.25.0-canary-adb717393-20240411"
react-server-dom-webpack@^19.0.0-rc-f38c22b244-20240704:
version "19.0.0-rc-f38c22b244-20240704"
resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0-rc-f38c22b244-20240704.tgz#d016db76ff9537d7fd042fcdd5ade8cea95166ce"
integrity sha512-AQ+3BkhxqUkmwXDDvf5uMrsfb5h0SpQv/bfO7dfwrkjwMJreKwan1fMXEPckCtGALoTUtHbuQoJbeudNttk5sQ==
react-server-dom-webpack@19.0.0-canary-adb717393-20240411:
version "19.0.0-canary-adb717393-20240411"
resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0-canary-adb717393-20240411.tgz#49256e2d83378e2a39be5074f3d4bb7d5bb6a4dc"
integrity sha512-qbOEljTas1QIUGQsiwn1TvCeaAjZiiarmHJQjCXMpDI2uliURhbDalzquR4M5/gWw2m79iWKcnumA7azz4UZDg==
dependencies:
acorn-loose "^8.3.0"
neo-async "^2.6.1"
react@^19.0.0-rc-f38c22b244-20240704:
version "19.0.0-rc-f38c22b244-20240704"
resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-f38c22b244-20240704.tgz#f8f213a8a5ea78c8757d603f1d1cdb8024185a45"
integrity sha512-OP8O6Oc1rdR9IdIKJRKaL1PYd4eGkn6f88VqiygWyyG4P4RmPPix5pp7MatqSt9TnBOcVT+lBMGoVxRgUFeudQ==
react@19.0.0-canary-adb717393-20240411:
version "19.0.0-canary-adb717393-20240411"
resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-canary-adb717393-20240411.tgz#7f9d5332b9edd355e3469f4f9e3b6770e2614b62"
integrity sha512-vizYCKbfm3G8X4EOoGPtk5kmnwEz65AaBE5FhPgsU83pApj94zoYExeVr1SAoxK1DrWVGdZh0XKR1iOUxbFOZw==
readdirp@~3.6.0:
version "3.6.0"
@@ -2409,10 +2409,10 @@ safe-buffer@5.1.2, safe-buffer@~5.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
scheduler@0.25.0-rc-f38c22b244-20240704:
version "0.25.0-rc-f38c22b244-20240704"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-f38c22b244-20240704.tgz#8eb138f35c5e600ea1db457182eafd003895cf97"
integrity sha512-uAELK9fHhvg7kDQhk29+uO8FUMWUpkg9WpzkNXFP+BJy5HEtqnajde3CxuSgh202WH9TqoaiWT1mdA3DvUu6cQ==
scheduler@0.25.0-canary-adb717393-20240411:
version "0.25.0-canary-adb717393-20240411"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-canary-adb717393-20240411.tgz#326381866e989de9227419d1177d9d3e44d5b48d"
integrity sha512-b8a8LYUgcGU22/QkOjvFaNW+OXAmuRp4IoHxM1Ve/aT2F/nO0fHpsIyAuik+g4SvOOnV3khW90mqNDG7nsjh/w==
semver@^5.6.0:
version "5.7.2"
+4 -2
View File
@@ -1,11 +1,13 @@
import './vocabulary'
import React from 'react'
import {View} from 'react-native'
import {ErrorBoundary} from 'react-error-boundary'
import {ZodError} from 'zod'
import {atoms as a, useTheme} from '#/alf'
import {Text} from '../Typography'
import {AppComponent} from './vocabulary'
import {Text} from '#/components/Typography'
import {AppComponent} from './AppComponent'
export function AppComponentRegion({origin}: {origin: string}) {
const t = useTheme()
+27
View File
@@ -0,0 +1,27 @@
import {useQuery} from '@tanstack/react-query'
// @ts-ignore
import {createFromFetch} from 'react-server-dom-webpack/client'
import {STALE} from 'state/queries'
export function AppComponent({origin}: {origin: string}) {
const {data} = useQuery({
queryKey: ['sdui', origin],
queryFn: async () => {
const {root} = await createFromFetch(
fetch(origin, {
headers: {
Accept: 'text/x-component',
},
}),
)
return {root}
},
staleTime: STALE.INFINITY,
})
if (!data) {
return null // TODO
}
return data.root
}
+21
View File
@@ -0,0 +1,21 @@
/* global __bsky_require__ */
/* global __bsky_chunk_load__ */
const map = new Map()
export function register(id, moduleExport) {
map.set(id, {default: moduleExport})
}
global.__bsky_require__ = function (id) {
return map.get(id)
}
global.__bsky_require__.u = function () {}
global.__bsky_chunk_load__ = function () {
return {
then(cb) {
cb()
},
}
}
+10 -40
View File
@@ -1,10 +1,5 @@
import React from 'react'
import {useQuery} from '@tanstack/react-query'
// @ts-ignore
import {createFromFetch} from 'react-server-dom-webpack/client'
import {STALE} from 'state/queries'
import {Text} from '#/components/Typography'
import {register} from '../modules'
import {ActorLabel} from './ActorLabel'
import {Avatar} from './Avatar'
import {Box} from './Box'
@@ -14,37 +9,12 @@ import {Label} from './Label'
import {Stack} from './Stack'
import {Tabs} from './Tabs'
// TODO
export const VOCAB: Record<string, React.ComponentType<any>> = {
ActorLabel,
Avatar,
Box,
Embed,
Expandable,
Label,
Stack,
Tabs,
}
export function AppComponent({origin}: {origin: string}) {
const {data} = useQuery({
queryKey: ['sdui', origin],
queryFn: async () => {
const {root} = await createFromFetch(
fetch(origin, {
headers: {
Accept: 'text/x-component',
},
}),
)
return {root}
},
staleTime: STALE.INFINITY,
})
console.log(data)
if (!data) {
return null // TODO
}
return <Text>{data.root}</Text>
}
register('Text', Text)
register('ActorLabel', ActorLabel)
register('Avatar', Avatar)
register('Box', Box)
register('Embed', Embed)
register('Expandable', Expandable)
register('Label', Label)
register('Stack', Stack)
register('Tabs', Tabs)
+4 -4
View File
@@ -19211,10 +19211,10 @@ react-scripts@^5.0.1:
optionalDependencies:
fsevents "^2.3.2"
react-server-dom-webpack@19.0.0-rc-f38c22b244-20240704:
version "19.0.0-rc-f38c22b244-20240704"
resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0-rc-f38c22b244-20240704.tgz#d016db76ff9537d7fd042fcdd5ade8cea95166ce"
integrity sha512-AQ+3BkhxqUkmwXDDvf5uMrsfb5h0SpQv/bfO7dfwrkjwMJreKwan1fMXEPckCtGALoTUtHbuQoJbeudNttk5sQ==
react-server-dom-webpack@19.0.0-canary-adb717393-20240411:
version "19.0.0-canary-adb717393-20240411"
resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0-canary-adb717393-20240411.tgz#49256e2d83378e2a39be5074f3d4bb7d5bb6a4dc"
integrity sha512-qbOEljTas1QIUGQsiwn1TvCeaAjZiiarmHJQjCXMpDI2uliURhbDalzquR4M5/gWw2m79iWKcnumA7azz4UZDg==
dependencies:
acorn-loose "^8.3.0"
neo-async "^2.6.1"